GNU Octave  4.4.1
A high-level interpreted language, primarily intended for numerical computations, mostly compatible with Matlab
ov-classdef.cc File Reference
#include <algorithm>
#include "call-stack.h"
#include "defun.h"
#include "interpreter-private.h"
#include "interpreter.h"
#include "load-path.h"
#include "ov-builtin.h"
#include "ov-classdef.h"
#include "ov-fcn-handle.h"
#include "ov-typeinfo.h"
#include "ov-usr-fcn.h"
#include "pt-assign.h"
#include "pt-classdef.h"
#include "pt-eval.h"
#include "pt-funcall.h"
#include "pt-idx.h"
#include "pt-misc.h"
#include "pt-stmt.h"
#include "pt-walk.h"
#include "symtab.h"
Include dependency graph for ov-classdef.cc:

Go to the source code of this file.

Classes

class  ctor_analyzer
 
class  octave_classdef_meta
 
class  octave_classdef_superclass_ref
 

Macros

#define DEBUG_TRACE   0
 
#define META_CLASS_CMP(OP, CLSA, CLSB, FUN)
 

Functions

template<typename T >
static std::string attribute_value_to_string (T *t, octave_value v)
 
static bool check_access (const cdef_class &cls, const octave_value &acc, const std::string &meth_name="", const std::string &prop_name="", bool is_prop_set=false)
 
static octave_value_list class_eq (const octave_value_list &args, int)
 
static octave_value_list class_fevalStatic (const octave_value_list &args, int nargout)
 
static octave_value_list class_fromName (const octave_value_list &args, int)
 
static octave_value_list class_ge (const octave_value_list &args, int)
 
static octave_value_list class_get_inferiorclasses (const octave_value_list &args, int)
 
static octave_value_list class_get_methods (const octave_value_list &args, int)
 
static octave_value_list class_get_properties (const octave_value_list &args, int)
 
static octave_value_list class_get_superclasses (const octave_value_list &args, int)
 
static octave_value_list class_getConstant (const octave_value_list &args, int)
 
static octave_value_list class_gt (const octave_value_list &args, int)
 
static octave_value_list class_le (const octave_value_list &args, int)
 
static octave_value_list class_lt (const octave_value_list &args, int)
 
static octave_value_list class_ne (const octave_value_list &args, int)
 
static octave_value compute_attribute_value (octave::tree_evaluator &tw, octave::tree_classdef_attribute *t)
 
static OCTAVE_NORETURN void err_method_access (const std::string &from, const cdef_method &meth)
 
static OCTAVE_NORETURN void err_property_access (const std::string &from, const cdef_property &prop, bool is_set=false)
 
OCTAVE_EXPORT octave_value_list F__meta_class_query__ (const octave_value_list &args, int)
 
OCTAVE_EXPORT octave_value_list F__meta_get_package__ (const octave_value_list &args, int)
 
OCTAVE_EXPORT octave_value_list F__superclass_reference__ (const octave_value_list &args, int)
 
OCTAVE_EXPORT octave_value_list Fmetaclass (const octave_value_list &args, int)
 
static std::string get_base_name (const std::string &nm)
 
static cdef_class get_class_context (std::string &name, bool &in_constructor)
 
cdef_class get_class_context (void)
 
static octave_value_list handle_delete (const octave_value_list &, int)
 
static bool in_class_method (const cdef_class &cls)
 
bool is_direct_superclass (const cdef_class &clsa, const cdef_class &clsb)
 
static bool is_dummy_method (const octave_value &fcn)
 
static bool is_method_executing (const octave_value &ov, const cdef_object &obj)
 
bool is_strict_superclass (const cdef_class &clsa, const cdef_class &clsb)
 
static bool is_superclass (const cdef_class &clsa, const cdef_class &clsb, bool allow_equal=true, int max_depth=-1)
 
static cdef_class lookup_class (const std::string &name, bool error_if_not_found=true, bool load_if_not_found=true)
 
static cdef_class lookup_class (const cdef_class &cls)
 
static cdef_class lookup_class (const octave_value &ov)
 
static std::list< cdef_classlookup_classes (const Cell &cls_list)
 
static cdef_package lookup_package (const std::string &name, bool error_if_not_found=true, bool load_if_not_found=true)
 
static octave_value make_fcn_handle (octave_builtin::fcn ff, const std::string &nm)
 
static octave_value make_fcn_handle (const octave_value &fcn, const std::string &nm)
 
static void make_function_of_class (const std::string &class_name, const octave_value &fcn)
 
static void make_function_of_class (const cdef_class &cls, const octave_value &fcn)
 
template<typename T1 , typename T2 >
Cell map2Cell (const std::map< T1, T2 > &m)
 
static octave_value_list package_fromName (const octave_value_list &args, int)
 
static octave_value_list package_get_classes (const octave_value_list &args, int)
 
static octave_value_list package_get_functions (const octave_value_list &args, int)
 
static octave_value_list package_get_packages (const octave_value_list &args, int)
 
static octave_value_list package_getAllPackages (octave::interpreter &interp, const octave_value_list &, int)
 
octave_value_list property_get_defaultvalue (const octave_value_list &args, int)
 
static octave_value to_ov (const std::list< cdef_class > &class_list)
 

Macro Definition Documentation

◆ DEBUG_TRACE

#define DEBUG_TRACE   0

Definition at line 50 of file ov-classdef.cc.

◆ META_CLASS_CMP

#define META_CLASS_CMP (   OP,
  CLSA,
  CLSB,
  FUN 
)
Value:
static octave_value_list \
class_ ## OP (const octave_value_list& args, int /* nargout */) \
{ \
octave_value_list retval; \
if (args.length () != 2 \
|| args(0).type_name () != "object" \
|| args(1).type_name () != "object" \
|| args(0).class_name () != "meta.class" \
|| args(1).class_name () != "meta.class") \
error (#OP ": invalid arguments"); \
\
cdef_class clsa = to_cdef (args(0)); \
\
cdef_class clsb = to_cdef (args(1)); \
retval(0) = FUN (CLSA, CLSB); \
\
return retval; \
}
void error(const char *fmt,...)
Definition: error.cc:578
if(nargin< 2) print_usage()
Definition: cellfun.cc:407
octave_value retval
Definition: data.cc:6246
cdef_object to_cdef(const octave_value &val)
Definition: ov-classdef.h:1576

Definition at line 584 of file ov-classdef.cc.

Function Documentation

◆ attribute_value_to_string()

template<typename T >
static std::string attribute_value_to_string ( T *  t,
octave_value  v 
)
static

Definition at line 2609 of file ov-classdef.cc.

◆ check_access()

◆ class_eq()

static octave_value_list class_eq ( const octave_value_list args,
int   
)
static

Definition at line 610 of file ov-classdef.cc.

◆ class_fevalStatic()

◆ class_fromName()

static octave_value_list class_fromName ( const octave_value_list args,
int   
)
static

Definition at line 521 of file ov-classdef.cc.

References error(), octave_value_list::length(), lookup_class(), name, retval, string, and to_ov().

◆ class_ge()

static octave_value_list class_ge ( const octave_value_list args,
int   
)
static

Definition at line 609 of file ov-classdef.cc.

◆ class_get_inferiorclasses()

static octave_value_list class_get_inferiorclasses ( const octave_value_list args,
int   
)
static

◆ class_get_methods()

static octave_value_list class_get_methods ( const octave_value_list args,
int   
)
static

◆ class_get_properties()

static octave_value_list class_get_properties ( const octave_value_list args,
int   
)
static

◆ class_get_superclasses()

static octave_value_list class_get_superclasses ( const octave_value_list args,
int   
)
static

◆ class_getConstant()

◆ class_gt()

static octave_value_list class_gt ( const octave_value_list args,
int   
)
static

Definition at line 608 of file ov-classdef.cc.

◆ class_le()

static octave_value_list class_le ( const octave_value_list args,
int   
)
static

Definition at line 607 of file ov-classdef.cc.

◆ class_lt()

static octave_value_list class_lt ( const octave_value_list args,
int   
)
static

Definition at line 606 of file ov-classdef.cc.

◆ class_ne()

static octave_value_list class_ne ( const octave_value_list args,
int   
)
static

Definition at line 611 of file ov-classdef.cc.

◆ compute_attribute_value()

static octave_value compute_attribute_value ( octave::tree_evaluator tw,
octave::tree_classdef_attribute t 
)
static

Definition at line 2582 of file ov-classdef.cc.

◆ err_method_access()

static OCTAVE_NORETURN void err_method_access ( const std::string from,
const cdef_method meth 
)
static

◆ err_property_access()

static OCTAVE_NORETURN void err_property_access ( const std::string from,
const cdef_property prop,
bool  is_set = false 
)
static

◆ F__meta_class_query__()

OCTAVE_EXPORT octave_value_list F__meta_class_query__ ( const octave_value_list args,
int   
)

Definition at line 3908 of file ov-classdef.cc.

◆ F__meta_get_package__()

OCTAVE_EXPORT octave_value_list F__meta_get_package__ ( const octave_value_list args,
int   
)

Definition at line 3885 of file ov-classdef.cc.

◆ F__superclass_reference__()

OCTAVE_EXPORT octave_value_list F__superclass_reference__ ( const octave_value_list args,
int   
)

Definition at line 3899 of file ov-classdef.cc.

◆ Fmetaclass()

OCTAVE_EXPORT octave_value_list Fmetaclass ( const octave_value_list args,
int   
)

Definition at line 3928 of file ov-classdef.cc.

◆ get_base_name()

static std::string get_base_name ( const std::string nm)
static

Definition at line 90 of file ov-classdef.cc.

References nm.

Referenced by make_function_of_class().

◆ get_class_context() [1/2]

◆ get_class_context() [2/2]

cdef_class get_class_context ( void  )
inline

Definition at line 283 of file ov-classdef.cc.

References get_class_context(), and string.

◆ handle_delete()

static octave_value_list handle_delete ( const octave_value_list ,
int   
)
static

Definition at line 634 of file ov-classdef.cc.

References retval.

◆ in_class_method()

static bool in_class_method ( const cdef_class cls)
static

◆ is_direct_superclass()

bool is_direct_superclass ( const cdef_class clsa,
const cdef_class clsb 
)
inline

Definition at line 238 of file ov-classdef.cc.

References is_superclass().

◆ is_dummy_method()

◆ is_method_executing()

◆ is_strict_superclass()

bool is_strict_superclass ( const cdef_class clsa,
const cdef_class clsb 
)
inline

Definition at line 234 of file ov-classdef.cc.

References is_superclass().

Referenced by check_access().

◆ is_superclass()

static bool is_superclass ( const cdef_class clsa,
const cdef_class clsb,
bool  allow_equal = true,
int  max_depth = -1 
)
static

◆ lookup_class() [1/3]

static cdef_class lookup_class ( const std::string name,
bool  error_if_not_found = true,
bool  load_if_not_found = true 
)
static

◆ lookup_class() [2/3]

static cdef_class lookup_class ( const cdef_class cls)
static

Definition at line 159 of file ov-classdef.cc.

◆ lookup_class() [3/3]

static cdef_class lookup_class ( const octave_value ov)
static

◆ lookup_classes()

static std::list<cdef_class> lookup_classes ( const Cell cls_list)
static

Definition at line 183 of file ov-classdef.cc.

References c, i, lookup_class(), Array< T >::numel(), and retval.

Referenced by class_get_inferiorclasses(), and class_get_superclasses().

◆ lookup_package()

static cdef_package lookup_package ( const std::string name,
bool  error_if_not_found = true,
bool  load_if_not_found = true 
)
static

Definition at line 3197 of file ov-classdef.cc.

◆ make_fcn_handle() [1/2]

static octave_value make_fcn_handle ( octave_builtin::fcn  ff,
const std::string nm 
)
static

Definition at line 129 of file ov-classdef.cc.

References fcn, and nm.

Referenced by read_mat5_binary_element(), and octave::tree_evaluator::visit_fcn_handle().

◆ make_fcn_handle() [2/2]

static octave_value make_fcn_handle ( const octave_value fcn,
const std::string nm 
)
static

Definition at line 139 of file ov-classdef.cc.

References fcn, octave_function::is_defined(), nm, and retval.

◆ make_function_of_class() [1/2]

◆ make_function_of_class() [2/2]

static void make_function_of_class ( const cdef_class cls,
const octave_value fcn 
)
static

Definition at line 123 of file ov-classdef.cc.

References fcn, cdef_class::get_name(), and make_function_of_class().

◆ map2Cell()

template<typename T1 , typename T2 >
Cell map2Cell ( const std::map< T1, T2 > &  m)

Definition at line 3322 of file ov-classdef.cc.

◆ package_fromName()

static octave_value_list package_fromName ( const octave_value_list args,
int   
)
static

Definition at line 3206 of file ov-classdef.cc.

◆ package_get_classes()

static octave_value_list package_get_classes ( const octave_value_list args,
int   
)
static

Definition at line 3221 of file ov-classdef.cc.

◆ package_get_functions()

static octave_value_list package_get_functions ( const octave_value_list args,
int   
)
static

Definition at line 3237 of file ov-classdef.cc.

◆ package_get_packages()

static octave_value_list package_get_packages ( const octave_value_list args,
int   
)
static

Definition at line 3253 of file ov-classdef.cc.

◆ package_getAllPackages()

static octave_value_list package_getAllPackages ( octave::interpreter interp,
const octave_value_list ,
int   
)
static

Definition at line 3269 of file ov-classdef.cc.

◆ property_get_defaultvalue()

octave_value_list property_get_defaultvalue ( const octave_value_list args,
int   
)

◆ to_ov()