26#if ! defined (octave_classdef_h)
27#define octave_classdef_h 1
29#include "octave-config.h"
44OCTAVE_END_NAMESPACE(octave)
72 octave::cdef_object
get_object ()
const {
return m_object; }
84 OCTINTERP_API
void print (std::ostream& os,
bool pr_as_read_syntax =
false);
87 print_raw (std::ostream& os,
bool pr_as_read_syntax =
false)
const;
89 OCTINTERP_API
bool is_instance_of (
const std::string& cls_name)
const;
93 m_object.break_closure_cycles (frame);
97 subsref (
const std::string& type,
const std::list<octave_value_list>& idx,
101 const std::list<octave_value_list>& idx)
108 subsref (
const std::string& type,
const std::list<octave_value_list>& idx,
112 subsasgn (
const std::string& type,
const std::list<octave_value_list>& idx,
116 undef_subsasgn (
const std::string& type,
117 const std::list<octave_value_list>& idx,
120 OCTINTERP_API
Matrix size ();
133 {
return m_object.map_value (warn, for_save); }
140 m_object.set_property (idx, name, pval);
146 return m_object.get_property (idx, name);
150 superclass_ref (
const std::string& meth,
const std::string& cls);
152 static OCTINTERP_API
octave_value metaclass_query (
const std::string& cls);
154 OCTINTERP_API
bool save_ascii (std::ostream& os);
156 OCTINTERP_API
bool load_ascii (std::istream& is);
174 std::string
class_name ()
const {
return m_object.class_name (); }
179 static OCTINTERP_API
void register_type (octave::type_info&);
186 loadobj (std::vector<std::tuple<octave_map, uint32_t, bool>>& m,
193 OCTINTERP_API std::vector<std::tuple<octave_map, uint32_t, bool>>
194 saveobj (std::vector<bool>& is_new);
198 octave::cdef_object m_object;
202 static const std::string s_t_name;
232 const std::list<octave_value_list>& idx,
235 return m_object.meta_subsref (type, idx, nargout);
244 return execute (tw, nargout, args);
252 std::list<octave_value_list> idx (1, args);
253 std::string type (
"(");
255 return subsref (type, idx, nargout);
259 {
return m_object.meta_accepts_postfix_index (type); }
266 OCTINTERP_API std::string
doc_string (
const std::string& meth_name)
const;
268 OCTINTERP_API std::string
file_name ()
const;
272 octave::cdef_meta_object m_object;
281 const std::string& cls)
299 return execute (tw, nargout, args);
303 execute (octave::tree_evaluator& tw,
int nargout,
309 is_constructed_object (octave::tree_evaluator& tw,
const std::string& nm);
313 std::string m_method_name;
314 std::string m_class_name;
N Dimensional Array with copy-on-write semantics.
Vector representing the dimensions (size) of an Array.
virtual octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
~octave_classdef_superclass_ref()=default
octave_classdef_superclass_ref()=delete
bool is_classdef_superclass_ref() const
octave_value_list call(octave::tree_evaluator &tw, int nargout, const octave_value_list &args)
octave_value_list execute(octave::tree_evaluator &tw, int nargout, const octave_value_list &idx)
octave_function * function_value(bool=false)
octave_classdef_superclass_ref(const std::string &meth, const std::string &cls)
octave_classdef * classdef_object_value(bool=false)
octave_base_value * empty_clone() const
static std::string static_class_name()
octave_map map_value() const
void break_closure_cycles(const std::shared_ptr< octave::stack_frame > &frame)
octave_value get_property(octave_idx_type idx, const std::string &name) const
octave_classdef(const octave::cdef_object &obj)
octave::cdef_object & get_object_ref()
octave_base_value * clone() const
octave_value permute(const Array< int > &vec, bool inv=false) const
bool is_classdef_object() const
octave_map map_value(bool warn, bool for_save) const
octave::cdef_object get_object() const
static std::string static_type_name()
static int static_type_id()
octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
octave_value resize(const dim_vector &dv, bool fill=false) const
std::string type_name() const
std::string class_name() const
octave_map map_value(bool warn) const
void set_property(octave_idx_type idx, const std::string &name, const octave_value &pval)
string_vector map_keys() const
~octave_classdef()=default
octave_idx_type length() const
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
void install_classdef(octave::interpreter &interp)
int register_type(const std::string &t_name, const std::string &c_name, const octave_value &val)