GNU Octave  8.1.0
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
cdef_class Class Reference

#include "cdef-class.h"

Inheritance diagram for cdef_class:
Collaboration diagram for cdef_class:

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_objectarray_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_methodget_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_propertyget_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_classoperator= (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_repget_rep (void)
 
const cdef_class_repget_rep (void) const
 

Private Attributes

cdef_object_repm_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 &)
 

Detailed Description

Definition at line 51 of file cdef-class.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
property_normal 
property_inherited 
property_all 

Definition at line 411 of file cdef-class.h.

Constructor & Destructor Documentation

◆ cdef_class() [1/4]

cdef_class::cdef_class ( void  )
inline

Definition at line 240 of file cdef-class.h.

◆ cdef_class() [2/4]

cdef_class::cdef_class ( const std::string &  nm,
const std::list< cdef_class > &  superclasses 
)
inline

Definition at line 242 of file cdef-class.h.

◆ cdef_class() [3/4]

cdef_class::cdef_class ( const cdef_class cls)
inline

Definition at line 249 of file cdef-class.h.

◆ cdef_class() [4/4]

cdef_class::cdef_class ( const cdef_object obj)
inline

Definition at line 251 of file cdef-class.h.

References error().

◆ ~cdef_class()

cdef_class::~cdef_class ( void  )
default

Member Function Documentation

◆ array_value()

Array<cdef_object> cdef_object::array_value ( void  ) const
inlineinherited

◆ break_closure_cycles()

void cdef_object::break_closure_cycles ( const std::shared_ptr< stack_frame > &  frame)
inlineinherited

Definition at line 285 of file cdef-object.h.

References cdef_object_rep::break_closure_cycles(), and cdef_object::m_rep.

◆ class_name()

◆ clone()

cdef_object cdef_object::clone ( void  ) const
inlineinherited

◆ construct()

octave_value cdef_class::construct ( const octave_value_list args)
inline

Definition at line 367 of file cdef-class.h.

Referenced by cdef_class::cdef_class_rep::meta_subsref().

◆ construct_object()

cdef_object cdef_class::construct_object ( const octave_value_list args)
inline

◆ copy()

cdef_object cdef_object::copy ( void  ) const
inlineinherited

◆ delete_object()

void cdef_class::delete_object ( const cdef_object obj)
inline

◆ dims()

dim_vector cdef_object::dims ( void  ) const
inlineinherited

Definition at line 243 of file cdef-object.h.

References cdef_object_rep::dims(), and cdef_object::m_rep.

◆ doc_string() [1/2]

void cdef_class::doc_string ( const std::string &  txt)
inline

Definition at line 401 of file cdef-class.h.

Referenced by make_meta_class().

◆ doc_string() [2/2]

std::string cdef_class::doc_string ( void  ) const
inline

Definition at line 403 of file cdef-class.h.

◆ empty_clone()

cdef_object cdef_object::empty_clone ( void  ) const
inlineinherited

Definition at line 238 of file cdef-object.h.

References cdef_object, cdef_object_rep::empty_clone(), and cdef_object::m_rep.

◆ file_name() [1/2]

void cdef_class::file_name ( const std::string &  nm)
inline

Definition at line 405 of file cdef-class.h.

Referenced by make_meta_class().

◆ file_name() [2/2]

std::string cdef_class::file_name ( void  ) const
inline

Definition at line 407 of file cdef-class.h.

◆ find_method()

◆ find_property()

◆ get()

◆ get_class()

cdef_class cdef_object::get_class ( void  ) const
inherited

◆ get_constructor_function()

octave_value cdef_class::get_constructor_function ( void  )
inline

Definition at line 362 of file cdef-class.h.

Referenced by cdef_manager::cdef_manager(), and tree_classdef::make_meta_class().

◆ get_directory()

std::string cdef_class::get_directory ( void  ) const
inline

Definition at line 317 of file cdef-class.h.

◆ get_method()

octave_value cdef_class::get_method ( const std::string &  nm) const
inline

Definition at line 355 of file cdef-class.h.

Referenced by cdef_manager::find_method().

◆ get_method_function()

octave_value cdef_class::get_method_function ( const std::string &  nm)

Definition at line 1170 of file cdef-class.cc.

References octave_value().

◆ get_method_map()

std::map<std::string, cdef_method> cdef_class::get_method_map ( bool  only_inherited = false,
bool  include_ctor = false 
)
inline

Definition at line 283 of file cdef-class.h.

Referenced by F__methods__().

◆ get_methods()

Cell cdef_class::get_methods ( bool  include_ctor = false)
inline

Definition at line 277 of file cdef-class.h.

Referenced by class_get_methods(), and make_meta_class().

◆ get_name()

◆ get_names()

string_vector cdef_class::get_names ( void  )
inline

Definition at line 306 of file cdef-class.h.

Referenced by cdef_object_rep::map_keys().

◆ get_properties()

Cell cdef_class::get_properties ( int  mode = property_normal)
inline

Definition at line 295 of file cdef-class.h.

Referenced by class_get_properties().

◆ get_property()

octave_value cdef_object::get_property ( octave_idx_type  idx,
const std::string &  pname 
) const
inlineinherited

Definition at line 280 of file cdef-object.h.

References cdef_object_rep::get_property(), and cdef_object::m_rep.

◆ get_property_map()

std::map<std::string, cdef_property> cdef_class::get_property_map ( int  mode = property_normal)
inline

◆ get_rep() [1/2]

◆ get_rep() [2/2]

const cdef_class_rep* cdef_class::get_rep ( void  ) const
inlineprivate

Definition at line 425 of file cdef-class.h.

References cdef_object::get_rep().

◆ initialize_object()

void cdef_class::initialize_object ( cdef_object obj)
inline

Definition at line 377 of file cdef-class.h.

Referenced by cdef_class::cdef_class_rep::construct_object().

◆ install_method()

void cdef_class::install_method ( const cdef_method meth)
inline

Definition at line 272 of file cdef-class.h.

Referenced by cdef_manager::cdef_manager(), and make_meta_class().

◆ install_property()

void cdef_class::install_property ( const cdef_property prop)
inline

Definition at line 290 of file cdef-class.h.

Referenced by cdef_manager::cdef_manager(), and make_meta_class().

◆ is()

bool cdef_object::is ( const cdef_object obj) const
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().

◆ is_abstract()

bool cdef_class::is_abstract ( void  ) const
inline

Definition at line 308 of file cdef-class.h.

Referenced by cdef_class::cdef_class_rep::construct_object().

◆ is_array()

bool cdef_object::is_array ( void  ) const
inlineinherited

◆ is_builtin()

bool cdef_class::is_builtin ( void  ) const
inline

Definition at line 324 of file cdef-class.h.

Referenced by cdef_manager::find_class().

◆ is_class()

bool cdef_meta_object::is_class ( void  ) const
inlineinherited

Definition at line 680 of file cdef-object.h.

References cdef_object::get_rep().

◆ is_constructed()

bool cdef_object::is_constructed ( void  ) const
inlineinherited

◆ is_constructed_for()

bool cdef_object::is_constructed_for ( const cdef_class cls) const
inlineinherited

Definition at line 321 of file cdef-object.h.

References cdef_object_rep::is_constructed_for(), and cdef_object::m_rep.

◆ is_handle_class()

bool cdef_class::is_handle_class ( void  ) const
inline

Definition at line 392 of file cdef-class.h.

Referenced by cdef_class::cdef_class_rep::construct_object().

◆ is_handle_object()

bool cdef_object::is_handle_object ( void  ) const
inlineinherited

◆ is_meta_class()

bool cdef_class::is_meta_class ( void  ) const
inline

Definition at line 399 of file cdef-class.h.

Referenced by cdef_class::cdef_class_rep::construct_object().

◆ is_meta_object()

bool cdef_object::is_meta_object ( void  ) const
inlineinherited

Definition at line 258 of file cdef-object.h.

References cdef_object_rep::is_meta_object(), and cdef_object::m_rep.

◆ is_method()

bool cdef_meta_object::is_method ( void  ) const
inlineinherited

Definition at line 684 of file cdef-object.h.

References cdef_object::get_rep().

Referenced by cdef_method::cdef_method().

◆ is_package()

bool cdef_meta_object::is_package ( void  ) const
inlineinherited

Definition at line 686 of file cdef-object.h.

References cdef_object::get_rep().

Referenced by cdef_package::cdef_package().

◆ is_partially_constructed_for()

bool cdef_object::is_partially_constructed_for ( const cdef_class cls) const
inlineinherited

◆ is_property()

bool cdef_meta_object::is_property ( void  ) const
inlineinherited

Definition at line 682 of file cdef-object.h.

References cdef_object::get_rep().

Referenced by cdef_property::cdef_property().

◆ is_sealed()

bool cdef_class::is_sealed ( void  ) const
inline

Definition at line 310 of file cdef-class.h.

◆ is_value_object()

bool cdef_object::is_value_object ( void  ) const
inlineinherited

Definition at line 254 of file cdef-object.h.

References cdef_object_rep::is_value_object(), and cdef_object::m_rep.

◆ make_array()

cdef_object cdef_object::make_array ( void  ) const
inlineinherited

Definition at line 245 of file cdef-object.h.

References cdef_object, cdef_object::m_rep, and cdef_object_rep::make_array().

◆ make_meta_class()

cdef_class cdef_class::make_meta_class ( interpreter interp,
tree_classdef t,
bool  is_at_folder = false 
)
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

classdef recursion_class
methods (Access = ?recursion_class)
endmethods
endclassdef

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().

◆ make_unique()

void cdef_object::make_unique ( int  ignore_copies)
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().

◆ map_keys()

string_vector cdef_object::map_keys ( void  ) const
inlineinherited

Definition at line 306 of file cdef-object.h.

References cdef_object::m_rep, and cdef_object_rep::map_keys().

◆ map_value()

◆ mark_as_constructed() [1/2]

void cdef_object::mark_as_constructed ( const cdef_class cls)
inlineinherited

Definition at line 333 of file cdef-object.h.

References cdef_object::m_rep, and cdef_object_rep::mark_as_constructed().

◆ mark_as_constructed() [2/2]

void cdef_object::mark_as_constructed ( void  )
inlineinherited

◆ mark_as_handle_class()

void cdef_class::mark_as_handle_class ( void  )
inline

Definition at line 387 of file cdef-class.h.

Referenced by cdef_manager::make_class().

◆ mark_as_meta_class()

void cdef_class::mark_as_meta_class ( void  )
inline

Definition at line 397 of file cdef-class.h.

Referenced by cdef_manager::make_meta_class().

◆ mark_for_construction()

void cdef_object::mark_for_construction ( const cdef_class cls)
inlineinherited

◆ meta_accepts_postfix_index()

bool cdef_meta_object::meta_accepts_postfix_index ( char  type) const
inlineinherited

Definition at line 697 of file cdef-object.h.

References cdef_object::get_rep().

◆ meta_release()

void cdef_meta_object::meta_release ( void  )
inlineinherited

Definition at line 695 of file cdef-object.h.

References cdef_object::get_rep().

◆ meta_subsref()

octave_value_list cdef_meta_object::meta_subsref ( const std::string &  type,
const std::list< octave_value_list > &  idx,
int  nargout 
)
inlineinherited

Definition at line 689 of file cdef-object.h.

References cdef_object::get_rep().

◆ ok()

◆ operator=()

cdef_class& cdef_class::operator= ( const cdef_class cls)
inline

Definition at line 260 of file cdef-class.h.

References cdef_object::operator=().

◆ put()

◆ run_constructor()

void cdef_class::run_constructor ( cdef_object obj,
const octave_value_list args 
)
inline

◆ set_class()

◆ set_directory()

void cdef_class::set_directory ( const std::string &  dir)
inline

Definition at line 312 of file cdef-class.h.

◆ set_property()

void cdef_object::set_property ( octave_idx_type  idx,
const std::string &  pname,
const octave_value pval 
)
inlineinherited

Definition at line 273 of file cdef-object.h.

References cdef_object::m_rep, and cdef_object_rep::set_property().

◆ subsasgn()

octave_value cdef_object::subsasgn ( const std::string &  type,
const std::list< octave_value_list > &  idx,
const octave_value rhs,
int  ignore_copies = 0 
)
inlineinherited

◆ subsref()

octave_value_list cdef_object::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 
)
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().

Friends And Related Function Documentation

◆ install_classdef

void install_classdef ( octave::interpreter &  interp)
friend

◆ operator!=

OCTINTERP_API bool operator!= ( const cdef_class clsa,
const cdef_class clsb 
)
friend

Definition at line 446 of file cdef-class.h.

◆ operator<

OCTINTERP_API bool operator< ( const cdef_class clsa,
const cdef_class clsb 
)
friend

Definition at line 453 of file cdef-class.h.

◆ operator==

OCTINTERP_API bool operator== ( const cdef_class clsa,
const cdef_class clsb 
)
friend

Definition at line 438 of file cdef-class.h.

Member Data Documentation

◆ m_rep


The documentation for this class was generated from the following files: