26#if ! defined (octave_oct_shlib_h)
27#define octave_oct_shlib_h 1
29#include "octave-config.h"
45 typedef std::function<std::string (
const std::string&)>
name_mangler;
52 : m_count (1), m_fcn_names (), m_file (), m_time_loaded (OCTAVE_TIME_T ()),
53 m_search_all_loaded (false)
67 s_instances.erase (m_file);
73 virtual void *
search (
const std::string&,
85 {
return m_time_loaded; }
92 OCTAVE_API std::list<std::string> function_names ()
const;
94 OCTAVE_API void add_fcn_name (
const std::string&);
96 OCTAVE_API bool remove_fcn_name (
const std::string&);
133 if (--m_rep->m_count == 0 && m_rep != &s_nil_rep)
147 if (m_rep != sl.m_rep)
149 if (--m_rep->m_count == 0 && m_rep != &s_nil_rep)
160 {
return (m_rep == sl.m_rep); }
162 operator bool ()
const {
return m_rep->is_open (); }
169 std::list<std::string> removed_fcns = m_rep->function_names ();
171 m_rep->clear_fcn_names ();
181 void *
f = m_rep->search (nm, mangler);
183 m_rep->add_fcn_name (nm);
188 void add (
const std::string& name)
189 { m_rep->add_fcn_name (name); }
192 {
return m_rep->remove_fcn_name (name); }
195 {
return m_rep->num_fcn_names (); }
198 {
return m_rep->is_out_of_date (); }
201 {
return m_rep->file_name (); }
204 {
return m_rep->time_loaded (); }
216OCTAVE_END_NAMESPACE(octave)
std::map< std::string, std::size_t >::iterator fcn_names_iterator
std::size_t num_fcn_names() const
sys::time time_loaded() const
static std::map< std::string, dynlib_rep * > s_instances
std::map< std::string, std::size_t >::const_iterator fcn_names_const_iterator
virtual bool is_open() const
std::map< std::string, std::size_t > m_fcn_names
virtual void * search(const std::string &, const name_mangler &=name_mangler())
std::string file_name() const
refcount< octave_idx_type > m_count
void open(const std::string &f)
std::string file_name() const
bool is_out_of_date() const
std::function< std::string(const std::string &)> name_mangler
void * search(const std::string &nm, const name_mangler &mangler=name_mangler()) const
std::list< std::string > close()
dynamic_library(const std::string &f, bool fake=true)
sys::time time_loaded() const
std::size_t number_of_functions_loaded() const
dynamic_library(const dynamic_library &sl)
void add(const std::string &name)
bool remove(const std::string &name)
OCTAVE_BEGIN_NAMESPACE(octave) static octave_value daspk_fcn
bool operator==(const dim_vector &a, const dim_vector &b)
F77_RET_T const F77_DBLE const F77_DBLE * f
int release_unreferenced_dynamic_libraries()