#include "cdef-class.h"
Classes | |
class | cdef_class_rep |
Public Types | |
enum | { property_normal , property_inherited , property_all } |
Public Member Functions | |
cdef_class (const cdef_class &cls) | |
cdef_class (const cdef_object &obj) | |
cdef_class (const std::string &nm, const std::list< cdef_class > &superclasses) | |
cdef_class (void) | |
~cdef_class (void)=default | |
Array< cdef_object > | array_value (void) const |
void | break_closure_cycles (const std::shared_ptr< stack_frame > &frame) |
std::string | class_name (void) const |
cdef_object | clone (void) const |
octave_value | construct (const octave_value_list &args) |
cdef_object | construct_object (const octave_value_list &args) |
cdef_object | copy (void) const |
void | delete_object (const cdef_object &obj) |
dim_vector | dims (void) const |
void | doc_string (const std::string &txt) |
std::string | doc_string (void) const |
cdef_object | empty_clone (void) const |
void | file_name (const std::string &nm) |
std::string | file_name (void) const |
OCTINTERP_API cdef_method | find_method (const std::string &nm, bool local=false) |
OCTINTERP_API cdef_property | find_property (const std::string &nm) |
octave_value | get (const std::string &pname) const |
OCTINTERP_API cdef_class | get_class (void) const |
octave_value | get_constructor_function (void) |
std::string | get_directory (void) const |
octave_value | get_method (const std::string &nm) const |
OCTINTERP_API octave_value | get_method_function (const std::string &nm) |
std::map< std::string, cdef_method > | get_method_map (bool only_inherited=false, bool include_ctor=false) |
Cell | get_methods (bool include_ctor=false) |
std::string | get_name (void) const |
string_vector | get_names (void) |
Cell | get_properties (int mode=property_normal) |
octave_value | get_property (octave_idx_type idx, const std::string &pname) const |
std::map< std::string, cdef_property > | get_property_map (int mode=property_normal) |
void | initialize_object (cdef_object &obj) |
void | install_method (const cdef_method &meth) |
void | install_property (const cdef_property &prop) |
bool | is (const cdef_object &obj) const |
bool | is_abstract (void) const |
bool | is_array (void) const |
bool | is_builtin (void) const |
bool | is_class (void) const |
bool | is_constructed (void) const |
bool | is_constructed_for (const cdef_class &cls) const |
bool | is_handle_class (void) const |
bool | is_handle_object (void) const |
bool | is_meta_class (void) const |
bool | is_meta_object (void) const |
bool | is_method (void) const |
bool | is_package (void) const |
bool | is_partially_constructed_for (const cdef_class &cls) const |
bool | is_property (void) const |
bool | is_sealed (void) const |
bool | is_value_object (void) const |
cdef_object | make_array (void) const |
string_vector | map_keys (void) const |
OCTINTERP_API octave_map | map_value (void) const |
void | mark_as_constructed (const cdef_class &cls) |
void | mark_as_constructed (void) |
void | mark_as_handle_class (void) |
void | mark_as_meta_class (void) |
void | mark_for_construction (const cdef_class &cls) |
bool | meta_accepts_postfix_index (char type) const |
void | meta_release (void) |
octave_value_list | meta_subsref (const std::string &type, const std::list< octave_value_list > &idx, int nargout) |
bool | ok (void) const |
cdef_class & | operator= (const cdef_class &cls) |
void | put (const std::string &pname, const octave_value &val) |
void | run_constructor (cdef_object &obj, const octave_value_list &args) |
void | set_class (const cdef_class &cls) |
void | set_directory (const std::string &dir) |
void | set_property (octave_idx_type idx, const std::string &pname, const octave_value &pval) |
octave_value | subsasgn (const std::string &type, const std::list< octave_value_list > &idx, const octave_value &rhs, int ignore_copies=0) |
octave_value_list | subsref (const std::string &type, const std::list< octave_value_list > &idx, int nargout, std::size_t &skip, const cdef_class &context, bool auto_add=false) |
Static Public Member Functions | |
static OCTINTERP_API cdef_class | make_meta_class (interpreter &interp, tree_classdef *t, bool is_at_folder=false) |
Analyze the tree_classdef tree and transform it to a cdef_class. More... | |
Protected Member Functions | |
void | make_unique (int ignore_copies) |
Private Member Functions | |
cdef_class_rep * | get_rep (void) |
const cdef_class_rep * | get_rep (void) const |
Private Attributes | |
cdef_object_rep * | m_rep |
Friends | |
void | install_classdef (octave::interpreter &interp) |
OCTINTERP_API bool | operator!= (const cdef_class &, const cdef_class &) |
OCTINTERP_API bool | operator< (const cdef_class &, const cdef_class &) |
OCTINTERP_API bool | operator== (const cdef_class &, const cdef_class &) |
Definition at line 51 of file cdef-class.h.
anonymous enum |
Enumerator | |
---|---|
property_normal | |
property_inherited | |
property_all |
Definition at line 411 of file cdef-class.h.
|
inline |
Definition at line 240 of file cdef-class.h.
|
inline |
Definition at line 242 of file cdef-class.h.
|
inline |
Definition at line 249 of file cdef-class.h.
|
inline |
Definition at line 251 of file cdef-class.h.
References error().
|
default |
|
inlineinherited |
Definition at line 260 of file cdef-object.h.
References cdef_object_rep::array_value(), and cdef_object::m_rep.
Referenced by cdef_object::map_value(), and cdef_object_array::subsasgn().
|
inlineinherited |
Definition at line 285 of file cdef-object.h.
References cdef_object_rep::break_closure_cycles(), and cdef_object::m_rep.
|
inlineinherited |
Definition at line 234 of file cdef-object.h.
References cdef_object_rep::class_name(), and cdef_object::m_rep.
Referenced by cdef_method::cdef_method(), cdef_package::cdef_package(), cdef_property::cdef_property(), make_meta_class(), cdef_object_array::subsasgn(), and ctor_analyzer::visit_superclass_ref().
|
inlineinherited |
Definition at line 236 of file cdef-object.h.
References cdef_object, cdef_object_rep::clone(), and cdef_object::m_rep.
Referenced by value_cdef_object::copy(), and cdef_object::make_unique().
|
inline |
Definition at line 367 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::meta_subsref().
|
inline |
Definition at line 372 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::construct(), cdef_object_array::fill_empty_values(), and cdef_object_array::subsasgn().
|
inlineinherited |
Definition at line 250 of file cdef-object.h.
References cdef_object, cdef_object_rep::copy(), and cdef_object::m_rep.
Referenced by cdef_object_array::fill_empty_values().
|
inline |
Definition at line 326 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::delete_object(), and cdef_object_rep::release().
|
inlineinherited |
Definition at line 243 of file cdef-object.h.
References cdef_object_rep::dims(), and cdef_object::m_rep.
|
inline |
Definition at line 401 of file cdef-class.h.
Referenced by make_meta_class().
|
inline |
Definition at line 403 of file cdef-class.h.
|
inlineinherited |
Definition at line 238 of file cdef-object.h.
References cdef_object, cdef_object_rep::empty_clone(), and cdef_object::m_rep.
|
inline |
Definition at line 405 of file cdef-class.h.
Referenced by make_meta_class().
|
inline |
Definition at line 407 of file cdef-class.h.
|
inline |
Definition at line 460 of file cdef-class.h.
References cdef_class::cdef_class_rep::find_method(), and get_rep().
Referenced by check_access(), class_fevalStatic(), cdef_class::cdef_class_rep::delete_object(), cdef_class::cdef_class_rep::find_method(), cdef_manager::find_method_symbol(), tree_evaluator::make_fcn_handle(), make_meta_class(), cdef_class::cdef_class_rep::meta_subsref(), cdef_class::cdef_class_rep::run_constructor(), and cdef_object_scalar::subsref().
|
inline |
Definition at line 466 of file cdef-class.h.
References cdef_class::cdef_class_rep::find_property(), and get_rep().
Referenced by check_access(), class_getConstant(), cdef_class::cdef_class_rep::find_property(), cdef_class::cdef_class_rep::meta_subsref(), cdef_object_scalar::subsasgn(), and cdef_object_scalar::subsref().
|
inlineinherited |
Definition at line 268 of file cdef-object.h.
References cdef_object_rep::get(), and cdef_object::m_rep.
Referenced by check_access(), cdef_method::cdef_method_rep::check_access(), cdef_property::cdef_property_rep::check_get_access(), cdef_property::cdef_property_rep::check_set_access(), class_get_inferiorclasses(), class_get_superclasses(), cdef_class::cdef_class_rep::delete_object(), err_method_access(), cdef_property::cdef_property_rep::err_property_access(), cdef_method::cdef_method_rep::execute(), cdef_class::cdef_class_rep::find_method(), cdef_class::cdef_class_rep::find_methods(), cdef_class::cdef_class_rep::find_names(), cdef_class::cdef_class_rep::find_properties(), cdef_class::cdef_class_rep::find_property(), Fproperties(), cdef_method::cdef_method_rep::get_name(), cdef_package::cdef_package_rep::get_name(), cdef_property::cdef_property_rep::get_name(), cdef_object_array::get_property(), cdef_object_scalar::get_property(), cdef_property::cdef_property_rep::get_value(), cdef_class::cdef_class_rep::initialize_object(), cdef_property::cdef_property_rep::is_constant(), cdef_method::cdef_method_rep::is_static(), is_superclass(), make_meta_class(), cdef_object_scalar::mark_for_construction(), property_get_defaultvalue(), and cdef_property::cdef_property_rep::set_value().
|
inherited |
Definition at line 183 of file cdef-object.cc.
References cdef_object_rep::get_class(), and cdef_object::m_rep.
Referenced by Fmetaclass(), tree_evaluator::make_fcn_handle(), cdef_object::map_value(), and cdef_object_array::subsasgn().
|
inline |
Definition at line 362 of file cdef-class.h.
Referenced by cdef_manager::cdef_manager(), and tree_classdef::make_meta_class().
|
inline |
Definition at line 317 of file cdef-class.h.
|
inline |
Definition at line 355 of file cdef-class.h.
Referenced by cdef_manager::find_method().
octave_value cdef_class::get_method_function | ( | const std::string & | nm | ) |
Definition at line 1170 of file cdef-class.cc.
References octave_value().
|
inline |
Definition at line 283 of file cdef-class.h.
Referenced by F__methods__().
|
inline |
Definition at line 277 of file cdef-class.h.
Referenced by class_get_methods(), and make_meta_class().
|
inline |
Definition at line 322 of file cdef-class.h.
Referenced by handle_cdef_object::~handle_cdef_object(), value_cdef_object::~value_cdef_object(), check_access(), cdef_object_rep::class_name(), cdef_class::cdef_class_rep::construct_object(), cdef_class::cdef_class_rep::delete_object(), cdef_property::cdef_property_rep::get_value(), make_function_of_class(), cdef_manager::make_method(), cdef_manager::make_property(), cdef_object_scalar::mark_for_construction(), cdef_manager::register_class(), cdef_class::cdef_class_rep::run_constructor(), cdef_property::cdef_property_rep::set_value(), and cdef_manager::unregister_class().
|
inline |
Definition at line 306 of file cdef-class.h.
Referenced by cdef_object_rep::map_keys().
|
inline |
Definition at line 295 of file cdef-class.h.
Referenced by class_get_properties().
|
inlineinherited |
Definition at line 280 of file cdef-object.h.
References cdef_object_rep::get_property(), and cdef_object::m_rep.
|
inline |
Definition at line 301 of file cdef-class.h.
Referenced by Fproperties(), cdef_class::cdef_class_rep::get_properties(), and cdef_object::map_value().
|
inlineprivate |
Definition at line 420 of file cdef-class.h.
References cdef_object::get_rep().
Referenced by cdef_method::cdef_method(), cdef_package::cdef_package(), cdef_property::cdef_property(), cdef_method::check_access(), cdef_property::check_get_access(), cdef_property::check_set_access(), cdef_method::execute(), cdef_package::find(), find_method(), cdef_class::cdef_class_rep::find_methods(), cdef_class::cdef_class_rep::find_names(), cdef_class::cdef_class_rep::find_properties(), find_property(), cdef_package::get_classes(), cdef_method::get_doc_string(), cdef_method::get_function(), cdef_package::get_functions(), cdef_method::get_name(), cdef_package::get_name(), cdef_property::get_name(), cdef_package::get_packages(), cdef_property::get_value(), cdef_package::install_class(), cdef_package::install_function(), cdef_package::install_package(), cdef_property::is_constant(), cdef_method::is_constructor(), cdef_method::is_defined_in_class(), cdef_method::is_external(), cdef_method::is_static(), cdef_method::mark_as_external(), cdef_method::set_function(), and cdef_property::set_value().
|
inlineprivate |
Definition at line 425 of file cdef-class.h.
References cdef_object::get_rep().
|
inline |
Definition at line 377 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::construct_object().
|
inline |
Definition at line 272 of file cdef-class.h.
Referenced by cdef_manager::cdef_manager(), and make_meta_class().
|
inline |
Definition at line 290 of file cdef-class.h.
Referenced by cdef_manager::cdef_manager(), and make_meta_class().
|
inlineinherited |
Definition at line 336 of file cdef-object.h.
References cdef_object::m_rep.
Referenced by is_method_executing(), and cdef_object_array::subsasgn().
|
inline |
Definition at line 308 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::construct_object().
|
inlineinherited |
Definition at line 252 of file cdef-object.h.
References cdef_object_rep::is_array(), and cdef_object::m_rep.
Referenced by cdef_object::map_value(), and cdef_object_array::subsasgn().
|
inline |
Definition at line 324 of file cdef-class.h.
Referenced by cdef_manager::find_class().
|
inlineinherited |
Definition at line 680 of file cdef-object.h.
References cdef_object::get_rep().
|
inlineinherited |
Definition at line 319 of file cdef-object.h.
References cdef_object_rep::is_constructed(), and cdef_object::m_rep.
Referenced by cdef_property::cdef_property_rep::get_value(), and cdef_property::cdef_property_rep::set_value().
|
inlineinherited |
Definition at line 321 of file cdef-object.h.
References cdef_object_rep::is_constructed_for(), and cdef_object::m_rep.
|
inline |
Definition at line 392 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::construct_object().
|
inlineinherited |
Definition at line 256 of file cdef-object.h.
References cdef_object_rep::is_handle_object(), and cdef_object::m_rep.
Referenced by cdef_property::cdef_property_rep::set_value().
|
inline |
Definition at line 399 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::construct_object().
|
inlineinherited |
Definition at line 258 of file cdef-object.h.
References cdef_object_rep::is_meta_object(), and cdef_object::m_rep.
|
inlineinherited |
Definition at line 684 of file cdef-object.h.
References cdef_object::get_rep().
Referenced by cdef_method::cdef_method().
|
inlineinherited |
Definition at line 686 of file cdef-object.h.
References cdef_object::get_rep().
Referenced by cdef_package::cdef_package().
|
inlineinherited |
Definition at line 326 of file cdef-object.h.
References cdef_object_rep::is_partially_constructed_for(), and cdef_object::m_rep.
Referenced by cdef_property::cdef_property_rep::get_value(), and cdef_property::cdef_property_rep::set_value().
|
inlineinherited |
Definition at line 682 of file cdef-object.h.
References cdef_object::get_rep().
Referenced by cdef_property::cdef_property().
|
inline |
Definition at line 310 of file cdef-class.h.
|
inlineinherited |
Definition at line 254 of file cdef-object.h.
References cdef_object_rep::is_value_object(), and cdef_object::m_rep.
|
inlineinherited |
Definition at line 245 of file cdef-object.h.
References cdef_object, cdef_object::m_rep, and cdef_object_rep::make_array().
|
static |
Analyze the tree_classdef tree and transform it to a cdef_class.
All attribute validation should occur here.
Classdef attribute values can be given in the form of expressions. These expressions must be evaluated before assigning them as attribute values. Evaluating them as they are parsed causes trouble with possible recursion in the parser so we do it here. For example
will fail because each attempt to compute the metaclass of recursion_class will cause recursion_class to be parsed again.
Definition at line 846 of file cdef-class.cc.
References __get_cdef_manager__(), tree_classdef::attribute_list(), attribute_value_to_string(), tree_classdef::body(), octave_value::bool_value(), cdef_object::class_name(), compute_attribute_value(), doc_string(), tree_classdef::doc_string(), error(), tree_expression::evaluate(), file_name(), tree_classdef::file_name(), Array< T, Alloc >::find(), find_method(), cdef_manager::find_package(), octave_value::function_value(), cdef_object::get(), interpreter::get_evaluator(), interpreter::get_load_path(), get_methods(), tree_classdef::ident(), install_method(), install_property(), lookup_class(), cdef_manager::make_class(), make_fcn_handle(), make_function_of_class(), cdef_manager::make_method(), cdef_manager::make_property(), load_path::methods(), tree_classdef_body::methods_list(), octave_function::name(), tree_identifier::name(), cdef_object::ok(), tree_classdef::package_name(), tree_evaluator::pop_scope(), tree_classdef_body::properties_list(), tree_evaluator::push_dummy_scope(), cdef_object::put(), octave_user_function::stash_function_name(), tree_classdef::superclass_list(), and to_ov().
Referenced by tree_classdef::make_meta_class().
|
inlineprotectedinherited |
Definition at line 342 of file cdef-object.h.
References cdef_object::clone(), cdef_object_rep::m_count, and cdef_object::m_rep.
Referenced by cdef_object::subsasgn().
|
inlineinherited |
Definition at line 306 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::map_keys().
|
inherited |
Definition at line 137 of file cdef-object.cc.
References cdef_object::array_value(), Array< T, Alloc >::dims(), cdef_object::get_class(), get_property_map(), cdef_object::is_array(), Array< T, Alloc >::numel(), cdef_object::ok(), property_all, octave_map::setfield(), and warning_with_id().
|
inlineinherited |
Definition at line 333 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::mark_as_constructed().
|
inlineinherited |
Definition at line 331 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::mark_as_constructed().
Referenced by cdef_class::cdef_class_rep::run_constructor().
|
inline |
Definition at line 387 of file cdef-class.h.
Referenced by cdef_manager::make_class().
|
inline |
Definition at line 397 of file cdef-class.h.
Referenced by cdef_manager::make_meta_class().
|
inlineinherited |
Definition at line 314 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::mark_for_construction().
Referenced by cdef_class::cdef_class_rep::initialize_object().
|
inlineinherited |
Definition at line 697 of file cdef-object.h.
References cdef_object::get_rep().
|
inlineinherited |
Definition at line 695 of file cdef-object.h.
References cdef_object::get_rep().
|
inlineinherited |
Definition at line 689 of file cdef-object.h.
References cdef_object::get_rep().
|
inlineinherited |
Definition at line 312 of file cdef-object.h.
References cdef_object_rep::is_valid(), and cdef_object::m_rep.
Referenced by check_access(), class_fevalStatic(), class_getConstant(), cdef_class::cdef_class_rep::construct(), cdef_class::cdef_class_rep::construct_object(), cdef_class::cdef_class_rep::delete_object(), F__methods__(), cdef_object_array::fill_empty_values(), cdef_manager::find_class(), cdef_class::cdef_class_rep::find_method(), cdef_manager::find_method_symbol(), cdef_manager::find_package(), cdef_manager::find_package_symbol(), cdef_class::cdef_class_rep::find_property(), Fproperties(), tree_evaluator::make_fcn_handle(), tree_classdef::make_meta_class(), make_meta_class(), cdef_object_rep::map_keys(), cdef_object::map_value(), cdef_class::cdef_class_rep::meta_subsref(), cdef_class::cdef_class_rep::run_constructor(), cdef_object_base::set_class(), cdef_object_array::subsasgn(), cdef_object_scalar::subsasgn(), cdef_object_scalar::subsref(), to_ov(), and ctor_analyzer::visit_superclass_ref().
|
inline |
Definition at line 260 of file cdef-class.h.
References cdef_object::operator=().
|
inlineinherited |
Definition at line 263 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::put().
Referenced by cdef_class::cdef_class_rep::initialize_object(), cdef_manager::make_class(), cdef_manager::make_meta_class(), make_meta_class(), cdef_manager::make_method(), cdef_manager::make_package(), cdef_manager::make_property(), cdef_method::cdef_method_rep::set_name(), cdef_package::cdef_package_rep::set_name(), cdef_property::cdef_property_rep::set_name(), cdef_object_array::set_property(), cdef_object_scalar::set_property(), and cdef_property::cdef_property_rep::set_value().
|
inline |
Definition at line 382 of file cdef-class.h.
Referenced by cdef_class::cdef_class_rep::construct_object(), and cdef_class::cdef_class_rep::run_constructor().
|
inlineinherited |
Definition at line 232 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::set_class().
Referenced by cdef_manager::cdef_manager(), cdef_class::cdef_class_rep::construct_object(), cdef_manager::make_class(), cdef_manager::make_method(), cdef_manager::make_package(), cdef_manager::make_property(), cdef_object_scalar::subsasgn(), cdef_object_array::subsref(), and cdef_object_scalar::subsref().
|
inline |
Definition at line 312 of file cdef-class.h.
|
inlineinherited |
Definition at line 273 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::set_property().
|
inlineinherited |
Definition at line 299 of file cdef-object.h.
References cdef_object::m_rep, cdef_object::make_unique(), and cdef_object_rep::subsasgn().
Referenced by cdef_object_array::subsasgn(), and cdef_object_scalar::subsasgn().
|
inlineinherited |
Definition at line 291 of file cdef-object.h.
References cdef_object::m_rep, and cdef_object_rep::subsref().
Referenced by cdef_object_scalar::subsref().
|
friend |
|
friend |
Definition at line 446 of file cdef-class.h.
|
friend |
Definition at line 453 of file cdef-class.h.
|
friend |
Definition at line 438 of file cdef-class.h.
|
privateinherited |
Definition at line 350 of file cdef-object.h.
Referenced by cdef_object::cdef_object(), cdef_object::~cdef_object(), cdef_object::array_value(), cdef_object::break_closure_cycles(), cdef_object::class_name(), cdef_object::clone(), cdef_object::copy(), cdef_object::dims(), cdef_object::empty_clone(), cdef_object::get(), cdef_object::get_class(), cdef_object::get_property(), cdef_object::get_rep(), cdef_object::is(), cdef_object::is_array(), cdef_object::is_constructed(), cdef_object::is_constructed_for(), cdef_object::is_handle_object(), cdef_object::is_meta_object(), cdef_object::is_partially_constructed_for(), cdef_object::is_value_object(), cdef_object::make_array(), cdef_object::make_unique(), cdef_object::map_keys(), cdef_object::mark_as_constructed(), cdef_object::mark_for_construction(), cdef_object::ok(), cdef_object::operator=(), cdef_object::put(), cdef_object::set_class(), cdef_object::set_property(), cdef_object::subsasgn(), and cdef_object::subsref().