24 #if ! defined (octave_ov_base_h)
25 #define octave_ov_base_h 1
27 #include "octave-config.h"
115 template <
typename T>
121 #define DEF_CLASS_TO_BTYP(CLASS,BTYP) \
123 struct class_to_btyp<CLASS> \
125 static const builtin_type_t btyp = BTYP; \
146 #define OCTAVE_EMPTY_CPP_ARG
148 #define DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA \
149 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA2 (OCTAVE_EMPTY_CPP_ARG)
151 #define DECLARE_OV_BASE_TYPEID_FUNCTIONS_AND_DATA \
152 DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA2(virtual)
154 #define DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA2(VIRTUAL) \
156 VIRTUAL int type_id (void) const { return t_id; } \
157 VIRTUAL std::string type_name (void) const { return t_name; } \
158 VIRTUAL std::string class_name (void) const { return c_name; } \
159 static int static_type_id (void) { return t_id; } \
160 static std::string static_type_name (void) { return t_name; } \
161 static std::string static_class_name (void) { return c_name; } \
162 static void register_type (void); \
166 static const std::string t_name; \
167 static const std::string c_name;
169 #define DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA(t, n, c) \
171 const std::string t::t_name (n); \
172 const std::string t::c_name (c); \
173 void t::register_type (void) \
176 octave_value v (&exemplar, true); \
177 t_id = octave_value_typeinfo::register_type (t::t_name, t::c_name, v); \
197 : _fcn (
f), _type_id (
t) { }
199 operator type_conv_fcn (
void)
const {
return _fcn; }
202 {
return (*_fcn) (v); }
233 virtual type_conv_info
237 virtual type_conv_info
268 const std::list<octave_value_list>& idx);
272 const std::list<octave_value_list>& idx,
277 const std::list<octave_value_list>& idx,
282 const std::list<octave_value_list>& idx,
284 const std::list<octave_lvalue> *lvalue_list);
294 const std::list<octave_lvalue> *lvalue_list);
300 const std::list<octave_value_list>& idx,
305 const std::list<octave_value_list>& idx,
327 {
return dims ().ndims (); }
331 OCTAVE_DEPRECATED (
"use 'numel' instead")
357 virtual bool is_cell (
void)
const {
return false; }
383 virtual bool is_range (
void)
const {
return false; }
385 virtual bool is_map (
void)
const {
return false; }
391 virtual bool is_java (
void)
const {
return false; }
445 virtual bool is_true (
void)
const {
return false; }
473 virtual short int short_value (
bool =
false,
bool =
false)
const;
475 virtual unsigned short int ushort_value (
bool =
false,
bool =
false)
const;
477 virtual int int_value (
bool =
false,
bool =
false)
const;
479 virtual unsigned int uint_value (
bool =
false,
bool =
false)
const;
483 virtual long int long_value (
bool =
false,
bool =
false)
const;
485 virtual unsigned long int ulong_value (
bool =
false,
bool =
false)
const;
487 virtual int64_t
int64_value (
bool =
false,
bool =
false)
const;
489 virtual uint64_t
uint64_value (
bool =
false,
bool =
false)
const;
596 virtual size_t nparents (
void)
const;
626 char type =
'\'')
const;
639 virtual void print (std::ostream& os,
bool pr_as_read_syntax =
false);
642 print_raw (std::ostream& os,
bool pr_as_read_syntax =
false)
const;
649 bool print_padding =
true);
651 virtual void short_disp (std::ostream& os)
const { os <<
"..."; }
700 virtual void lock (
void);
702 virtual void unlock (
void);
704 virtual bool islocked (
void)
const {
return false; }
706 virtual void dump (std::ostream& os)
const;
773 num_unary_mappers = umap_unknown
818 const std::list<octave_value_list>& idx,
822 { curr_print_indent_level = 0; }
825 { curr_print_indent_level += 2; }
828 { curr_print_indent_level -= 2; }
831 {
return curr_print_indent_level; }
833 void indent (std::ostream& os)
const;
835 void newline (std::ostream& os)
const;
837 void reset (
void)
const;
847 void warn_load (
const char *
type)
const;
848 void warn_save (
const char *
type)
const;
852 void wrong_type_arg_error (
void)
const;
869 const std::list<octave_value_list>& idx,
sortmode is_sorted_rows(sortmode mode=UNSORTED) const
uint8NDArray uint8_array_value(void) const
virtual bool is_uint32_type(void) const
virtual octave_base_value * unique_parent_class(const std::string &)
virtual dim_vector dims(void) const
octave_idx_type nnz(void) const
#define DEF_CLASS_TO_BTYP(CLASS, BTYP)
ComplexNDArray complex_array_value(bool frc_str_conv=false) const
bool btyp_isfloat(builtin_type_t btyp)
virtual bool is_sparse_type(void) const
virtual bool is_bool_matrix(void) const
FloatComplexDiagMatrix float_complex_diag_matrix_value(bool force=false) const
octave_idx_type capacity(void) const
OCTINTERP_API octave_value make_idx_args(const std::string &type, const std::list< octave_value_list > &idx, const std::string &who)
virtual bool is_mex_function(void) const
virtual bool is_true(void) const
virtual bool is_complex_matrix(void) const
size_t nparents(void) const
charNDArray char_array_value(bool frc_str_conv=false) const
virtual bool is_function(void) const
octave_refcount< octave_idx_type > count
octave_value as_uint16(void) const
virtual bool is_real_type(void) const
boolMatrix bool_matrix_value(bool warn=false) const
virtual bool is_function_handle(void) const
bool print_name_tag(std::ostream &os, const std::string &name) const
octave_value as_int64(void) const
virtual type_conv_info numeric_conversion_function(void) const
octave_value reshape(const dim_vector &dv) const
octave_value permute(const Array< int > &vec, bool inv=false) const
void increment_indent_level(void) const
virtual bool is_double_type(void) const
octave_int16 int16_scalar_value(void) const
octave_value full_value(void) const
unsigned int uint_value(bool req_int=false, bool frc_str_conv=false) const
bool save_hdf5(octave_hdf5_id loc_id, const char *name, bool save_as_floats)
int8NDArray int8_array_value(void) const
octave_idx_type columns(void) const
FloatComplexMatrix float_complex_matrix_value(bool frc_str_conv=false) const
octave_base_value * empty_clone(void) const
mxArray * as_mxArray(void) const
virtual bool is_bool_type(void) const
virtual bool is_real_matrix(void) const
virtual void short_disp(std::ostream &os) const
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE const F77_DBLE * f
int16NDArray int16_array_value(void) const
virtual type_conv_info numeric_demotion_function(void) const
octave_idx_type nfields(void) const
std::list< std::string > parent_class_name_list(void) const
virtual bool is_magic_colon(void) const
octave_map map_value(void) const
Return the CPU time used by your Octave session The first output is the total time spent executing your process and is equal to the sum of second and third which are the number of CPU seconds spent executing in user mode and the number of CPU seconds spent executing in system mode
idx subsref(val, idx) esult
octave_user_code * user_code_value(bool silent=false) const
octave_value diag(octave_idx_type k=0) const
virtual void assign(const std::string &, const octave_value &)
virtual bool is_int8_type(void) const
virtual void maybe_economize(void)
virtual octave_idx_type * mex_get_ir(void) const
int int_value(bool req_int=false, bool frc_str_conv=false) const
uint64NDArray uint64_array_value(void) const
virtual bool is_classdef_object(void) const
int64_t int64_value(bool req_int=false, bool frc_str_conv=false) const
OCTINTERP_API string_vector get_builtin_classes(void)
virtual bool is_user_code(void) const
virtual double scalar_value(bool frc_str_conv=false) const
octave_int32 int32_scalar_value(void) const
float float_value(bool frc_str_conv=false) const
int32NDArray int32_array_value(void) const
virtual bool is_anonymous_function(void) const
bool btyp_isarray(builtin_type_t btyp)
octave_value as_double(void) const
Array< octave_idx_type > sort_rows_idx(sortmode mode=ASCENDING) const
virtual bool is_perm_matrix(void) const
virtual float float_scalar_value(bool frc_str_conv=false) const
virtual bool is_numeric_type(void) const
octave::mach_info::float_format flt_fmt
octave_value resize(const dim_vector &dv, bool fill=false) const
OCTINTERP_API std::string btyp_class_name[btyp_num_types]
octave_idx_type nzmax(void) const
virtual size_t byte_size(void) const
octave_value as_int32(void) const
octave_value convert_to_str_internal(bool pad, bool force, char type) const
virtual bool is_cs_list(void) const
OCTAVE_EXPORT octave_value_list return the number of command line arguments passed to Octave If called with the optional argument the function t
virtual bool is_cell(void) const
octave_value as_uint8(void) const
octave_fcn_handle * fcn_handle_value(bool silent=false) const
virtual bool is_null_value(void) const
std::string xstring_value(const char *fmt,...) const
ComplexDiagMatrix complex_diag_matrix_value(bool force=false) const
virtual bool is_int64_type(void) const
virtual bool is_cellstr(void) const
OCTINTERP_API bool called_from_builtin(void)
bool is_empty(void) const
boolNDArray bool_array_value(bool warn=false) const
virtual octave_idx_type * mex_get_jc(void) const
virtual bool is_scalar_type(void) const
octave_base_value * clone(void) const
virtual void * mex_get_data(void) const
virtual bool is_range(void) const
virtual bool is_map(void) const
virtual octave_idx_type numel(void) const
int64NDArray int64_array_value(void) const
Cell cell_value(void) const
static int curr_print_indent_level
virtual bool is_single_type(void) const
OCTINTERP_API bool Vsparse_auto_mutate
sortmode is_sorted(sortmode mode=UNSORTED) const
idx_vector index_vector(bool require_integers=false) const
virtual bool is_uint64_type(void) const
Array< std::string > cellstr_value(void) const
octave_value_list do_multi_index_op(int nargout, const octave_value_list &idx)
static const builtin_type_t btyp
virtual octave_base_value * clone(void) const
void print_info(std::ostream &os, const std::string &prefix="") const
long int long_value(bool req_int=false, bool frc_str_conv=false) const
virtual octave_base_value * try_narrowing_conversion(void)
FloatNDArray float_array_value(bool frc_str_conv=false) const
void dump(std::ostream &os) const
virtual octave_base_value * find_parent_class(const std::string &)
#define DECLARE_OV_BASE_TYPEID_FUNCTIONS_AND_DATA
octave_value as_single(void) const
unsigned long int ulong_value(bool req_int=false, bool frc_str_conv=false) const
octave_uint8 uint8_scalar_value(void) const
virtual bool is_builtin_function(void) const
virtual bool is_integer_type(void) const
OCTAVE_EXPORT octave_value_list return the number of command line arguments passed to Octave If called with the optional argument the function xample nargout(@histc)
int write(octave_stream &os, int block_size, oct_data_conv::data_type output_type, int skip, octave::mach_info::float_format flt_fmt) const
octave_value as_int16(void) const
octave_value convert_to_str(bool pad=false, bool force=false, char type= '\'') const
uint64_t uint64_value(bool req_int=false, bool frc_str_conv=false) const
octave_value squeeze(void) const
virtual bool is_all_va_args(void) const
octave_value as_int8(void) const
virtual bool is_object(void) const
void print(std::ostream &os, bool pr_as_read_syntax=false)
std::string string_value(bool force=false) const
FloatDiagMatrix float_diag_matrix_value(bool force=false) const
nd deftypefn *octave_map m
virtual int ndims(void) const
int nint_value(bool frc_str_conv=false) const
bool load_hdf5(octave_hdf5_id loc_id, const char *name)
FloatComplex float_complex_value(bool frc_str_conv=false) const
virtual bool is_bool_scalar(void) const
Range range_value(void) const
FloatComplexNDArray float_complex_array_value(bool frc_str_conv=false) const
virtual bool is_int16_type(void) const
octave_user_function * user_function_value(bool silent=false) const
bool save_binary(std::ostream &os, bool &save_as_floats)
octave_value as_uint32(void) const
SparseBoolMatrix sparse_bool_matrix_value(bool warn=false) const
void print_raw(std::ostream &os, bool pr_as_read_syntax=false) const
virtual bool is_int32_type(void) const
bool btyp_isnumeric(builtin_type_t btyp)
virtual bool is_real_scalar(void) const
virtual bool is_instance_of(const std::string &) const
virtual bool print_as_scalar(void) const
virtual bool is_complex_type(void) const
virtual bool is_user_script(void) const
string_vector map_keys(void) const
virtual bool is_user_function(void) const
octave_value all(int dim=0) const
SparseComplexMatrix sparse_complex_matrix_value(bool frc_str_conv=false) const
string_vector parent_class_names(void) const
the exceeded dimensions are set to if fewer subscripts than dimensions are the exceeding dimensions are merged into the final requested dimension For consider the following dims
bool btyp_isinteger(builtin_type_t btyp)
string_vector string_vector_value(bool pad=false) const
Matrix matrix_value(bool frc_str_conv=false) const
virtual bool is_dld_function(void) const
void decrement_indent_level(void) const
virtual bool is_defined(void) const
virtual bool is_sq_string(void) const
virtual bool is_java(void) const
charMatrix char_matrix_value(bool frc_str_conv=false) const
virtual octave_base_value * unique_clone(void)
octave_function * function_value(bool silent=false) const
bool save_ascii(std::ostream &os)
MatrixType matrix_type(void) const
DiagMatrix diag_matrix_value(bool force=false) const
virtual bool is_constant(void) const
unsigned short int ushort_value(bool req_int=false, bool frc_str_conv=false) const
octave_value sort(octave_idx_type dim=0, sortmode mode=ASCENDING) const
virtual bool islocked(void) const
octave_value undef_subsasgn(const std::string &type, const std::list< octave_value_list > &idx, const octave_value &rhs)
virtual ~octave_base_value(void)
T::size_type numel(const T &str)
NDArray array_value(bool frc_str_conv=false) const
octave_base_value(const octave_base_value &)
octave_int8 int8_scalar_value(void) const
virtual bool is_float_type(void) const
virtual void erase_subfunctions(void)
octave_scalar_map scalar_map_value(void) const
type_conv_info(type_conv_fcn f=0, int t=-1)
bool load_ascii(std::istream &is)
bool bool_value(bool warn=false) const
virtual bool is_complex_scalar(void) const
ComplexMatrix complex_matrix_value(bool frc_str_conv=false) const
virtual bool is_string(void) const
int current_print_indent_level(void) const
virtual bool is_uint16_type(void) const
Complex complex_value(bool frc_str_conv=false) const
FloatMatrix float_matrix_value(bool frc_str_conv=false) const
idx subsasgn(val, idx, 0) esult
void print_with_name(std::ostream &os, const std::string &name) const
virtual bool is_matrix_type(void) const
virtual bool is_inline_function(void) const
the element is set to zero In other the statement xample y
octave_int64 int64_scalar_value(void) const
virtual builtin_type_t builtin_type(void) const
OCTINTERP_API builtin_type_t btyp_mixed_numeric(builtin_type_t x, builtin_type_t y)
virtual bool is_char_matrix(void) const
octave_uint64 uint64_scalar_value(void) const
octave_value fast_elem_extract(octave_idx_type n) const
octave_value_list list_value(void) const
std::complex< float > FloatComplex
virtual bool fast_elem_insert(octave_idx_type n, const octave_value &x)
PermMatrix perm_matrix_value(void) const
SparseMatrix sparse_matrix_value(bool frc_str_conv=false) const
virtual bool is_uint8_type(void) const
void reset_indent_level(void) const
virtual bool is_diag_matrix(void) const
std::complex< double > Complex
octave_fcn_inline * fcn_inline_value(bool silent=false) const
double double_value(bool frc_str_conv=false) const
static bool beginning_of_line
write the output to stdout if nargout is
Vector representing the dimensions (size) of an Array.
octave_user_script * user_script_value(bool silent=false) const
the second is matched to the second specifier and placed in the second column and so forth If there are more words than specifiers then the process is repeated until all words have been processed or the limit imposed by any(non-whitespace) text in the format that is not one of these specifiers is considered a literal.If there is a literal between two format specifiers then that same literal must appear in the input stream between the matching words.The following specifiers are valid
octave_uint32 uint32_scalar_value(void) const
bool load_binary(std::istream &is, bool swap, octave::mach_info::float_format fmt)
uint32NDArray uint32_array_value(void) const
If this string is the system will ring the terminal sometimes it is useful to be able to print the original representation of the string
octave_value as_uint64(void) const
uint16NDArray uint16_array_value(void) const
void convert_to_row_or_column_vector(void)
octave_uint16 uint16_scalar_value(void) const
octave_idx_type rows(void) const
F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_REAL const F77_REAL F77_REAL &F77_RET_T const F77_DBLE const F77_DBLE F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T F77_DBLE &F77_RET_T F77_REAL &F77_RET_T F77_REAL &F77_RET_T F77_DBLE &F77_RET_T const F77_DBLE F77_DBLE &F77_RET_T const F77_REAL F77_REAL &F77_RET_T F77_REAL F77_REAL &F77_RET_T F77_DBLE F77_DBLE &F77_RET_T const F77_DBLE * x
short int short_value(bool req_int=false, bool frc_str_conv=false) const
octave_value do_index_op(const octave_value_list &idx, bool resize_ok=false)