26#if ! defined (octave_ov_fcn_handle_h)
27#define octave_ov_fcn_handle_h 1
29#include "octave-config.h"
55 const std::string& file =
"")
56 : m_name (name), m_file (file)
65 virtual std::string
type ()
const = 0;
75 virtual bool is_nested (
const std::shared_ptr<stack_frame>&)
const
88 virtual OCTINTERP_API
octave_value make_weak_nested_handle ()
const;
90 virtual OCTINTERP_API
octave_value make_weak_anonymous_handle ()
const;
92 std::string
fcn_name ()
const {
return m_name; }
94 std::string
file ()
const {
return m_file; }
97 subsref (
const std::string& type,
const std::list<octave_value_list>& idx,
127 convert_to_str_internal (
bool pad,
bool force,
char type)
const;
129 virtual OCTINTERP_API
bool save_ascii (std::ostream& os);
131 virtual OCTINTERP_API
bool load_ascii (std::istream& is);
133 virtual OCTINTERP_API
bool
134 save_binary (std::ostream& os,
bool save_as_floats);
136 virtual OCTINTERP_API
bool
137 load_binary (std::istream& is,
bool swap, mach_info::float_format fmt);
139 virtual OCTINTERP_API
bool
140 save_hdf5 (
octave_hdf5_id loc_id,
const char *name,
bool save_as_floats);
142 virtual OCTINTERP_API
bool
154 set_fcn (
const std::string& ,
const std::string& )
172 OCTINTERP_API
void warn_load (
const char *file_type)
const;
173 OCTINTERP_API
void warn_save (
const char *file_type)
const;
175 OCTINTERP_API
void unimplemented (
const char *op,
const char *fmt)
const;
185OCTAVE_END_NAMESPACE(octave)
213 const std::string& meth_nm);
217 const std::string& class_nm,
218 const std::string& meth_nm);
222 const std::list<std::string>& parentage);
226 const std::shared_ptr<octave::stack_frame>& closure_frames);
231 const octave::stack_frame::local_vars_map& local_vars,
232 const std::shared_ptr<octave::stack_frame>& closure_frames
233 = std::shared_ptr<octave::stack_frame> ());
262 const std::list<octave_value_list>& idx)
269 const std::list<octave_value_list>& idx,
272 return m_rep->subsref (type, idx, nargout);
291 bool is_nested (
const std::shared_ptr<octave::stack_frame>& frame)
const
293 return m_rep->is_nested (frame);
306 return m_rep->make_weak_nested_handle ();
311 return m_rep->make_weak_anonymous_handle ();
333 std::string
fcn_name ()
const {
return m_rep->fcn_name (); }
337 return m_rep->workspace ();
344 m_rep->set_dispatch_class (class_name);
349 return m_rep->get_dispatch_class ();
357 bool save_ascii (std::ostream& os);
359 bool load_ascii (std::istream& is);
361 bool save_binary (std::ostream& os,
bool save_as_floats);
363 bool load_binary (std::istream& is,
bool swap,
364 octave::mach_info::float_format fmt);
366 bool save_hdf5 (
octave_hdf5_id loc_id,
const char *name,
bool save_as_floats);
370 void print (std::ostream& os,
bool pr_as_read_syntax =
false);
372 void print_raw (std::ostream& os,
bool pr_as_read_syntax =
false)
const;
382 std::shared_ptr<octave::base_fcn_handle> m_rep;
384 octave::base_fcn_handle * get_rep ()
const {
return m_rep.get (); }
virtual bool is_weak_nested() const
virtual bool is_scoped() const
virtual bool is_weak_anonymous() const
virtual bool is_class_simple() const
virtual octave_function * function_value(bool=false)
virtual bool print_as_scalar() const
virtual bool is_nested(const std::shared_ptr< stack_frame > &) const
virtual void set_dispatch_class(const std::string &)
virtual bool is_simple() const
virtual octave_function * get_cached_fcn(const octave_value_list &)
virtual octave_function * get_cached_fcn(void *, void *)
virtual bool has_function_cache() const
virtual octave_user_function * user_function_value(bool=false)
virtual octave_scalar_map info()
base_fcn_handle(const base_fcn_handle &)=default
virtual octave_value_list call(int nargout, const octave_value_list &args)=0
virtual base_fcn_handle * clone() const =0
base_fcn_handle(const std::string &name="", const std::string &file="")
virtual ~base_fcn_handle()=default
virtual std::string get_dispatch_class() const
virtual octave_value workspace() const
virtual bool is_nested() const
virtual octave_value fcn_val()
std::string fcn_name() const
virtual bool is_anonymous() const
virtual std::string type() const =0
virtual bool set_fcn(const std::string &, const std::string &)
virtual void print_raw(std::ostream &, bool, int) const
virtual bool is_internal() const
Vector representing the dimensions (size) of an Array.
virtual octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
virtual octave_function * function_value(bool silent=false)
~octave_fcn_handle()=default
static const std::string anonymous
octave_function * function_value(bool=false)
bool is_class_simple() const
bool print_as_scalar() const
std::string get_dispatch_class() const
octave_fcn_handle(const std::string &name, octave_value cache)
octave_value_list call(int nargout, const octave_value_list &args)
builtin_type_t builtin_type() const
octave_user_function * user_function_value(bool=false)
octave_value convert_to_str_internal(bool pad, bool force, char type) const
octave_value make_weak_anonymous_handle() const
octave_value subsref(const std::string &type, const std::list< octave_value_list > &idx)
octave_fcn_handle * fcn_handle_value(bool=false)
std::string fcn_name() const
octave_base_value * clone() const
octave_value_list subsref(const std::string &type, const std::list< octave_value_list > &idx, int nargout)
bool is_anonymous() const
octave_value workspace() const
bool is_function_handle() const
octave_value make_weak_nested_handle() const
octave_base_value * empty_clone() const
bool is_weak_anonymous() const
bool is_weak_nested() const
bool is_nested(const std::shared_ptr< octave::stack_frame > &frame) const
void set_dispatch_class(const std::string &class_name)
octave_user_function * user_function_value(bool=false)
octave_idx_type length() const
octave_value convert_to_str_internal(bool pad, bool force, char type) const
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
#define DECLARE_OV_TYPEID_FUNCTIONS_AND_DATA_API(API)
bool is_equal_to(const octave_fcn_handle &fh1, const octave_fcn_handle &fh2)