57 cdef_package_rep& operator = (
const cdef_package_rep&) =
delete;
59 ~cdef_package_rep () =
default;
62 {
return new cdef_package_rep (*
this); }
64 bool is_package ()
const {
return true; }
66 std::string get_name ()
const {
return get(
"Name").string_value (); }
68 void set_name (
const std::string& nm) { put (
"Name", nm); }
71 install_class (
const cdef_class& cls,
const std::string& nm);
74 install_function (
const octave_value& fcn,
const std::string& nm);
77 install_package (
const cdef_package& pack,
const std::string& nm);
79 OCTINTERP_API
Cell get_classes ()
const;
81 OCTINTERP_API
Cell get_functions ()
const;
83 OCTINTERP_API
Cell get_packages ()
const;
96 m_package_map.clear ();
103 meta_subsref (
const std::string& type,
104 const std::list<octave_value_list>& idx,
int nargout);
106 OCTINTERP_API
void meta_release ();
108 bool meta_accepts_postfix_index (
char type)
const
110 return (type ==
'.');
113 OCTINTERP_API
octave_value find (
const std::string& nm);
117 std::string m_full_name;
118 std::map<std::string, cdef_class> m_class_map;
119 std::map<std::string, octave_value> m_function_map;
120 std::map<std::string, cdef_package> m_package_map;
126 typedef std::map<std::string, cdef_class>::iterator class_iterator;
127 typedef std::map<std::string, cdef_class>::const_iterator class_const_iterator;
128 typedef std::map<std::string, octave_value>::iterator function_iterator;
129 typedef std::map<std::string, octave_value>::const_iterator
130 function_const_iterator;
131 typedef std::map<std::string, cdef_package>::iterator package_iterator;
132 typedef std::map<std::string, cdef_package>::const_iterator
133 package_const_iterator;
135 cdef_package_rep (
const cdef_package_rep& p)
137 m_class_map (p.m_class_map), m_function_map (p.m_function_map),
138 m_package_map (p.m_package_map), m_member_count (p.m_member_count)
155 get_rep ()->set_name (nm);
165 error (
"internal error: invalid assignment from %s to meta.package object",
166 class_name ().c_str ());
180 get_rep ()->install_class (cls, nm);
185 get_rep ()->install_function (fcn, nm);
190 get_rep ()->install_package (pack, nm);
195 return get_rep ()->get_classes ();
200 return get_rep ()->get_functions ();
205 return get_rep ()->get_packages ();
208 std::string
get_name ()
const {
return get_rep ()->get_name (); }
212 return get_rep ()->find (nm);
217 cdef_package_rep * get_rep ()
222 const cdef_package_rep * get_rep ()
const