Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DynamicObjectLib< ObjectType > Class Template Reference

#include <DLTools.H>

Inheritance diagram for DynamicObjectLib< ObjectType >:
Collaboration diagram for DynamicObjectLib< ObjectType >:

Public Member Functions

virtual dlHandleType Handle () const
 
virtual std::string Name () const
 
virtual std::string File () const
 
virtual std::string & Name ()
 
virtual std::string & File ()
 
virtual std::string Error ()
 
virtual ObjectFactory
< ObjectType > & 
Factory ()
 
virtual ObjectFactory< ObjectType > Factory () const
 
virtual ObjectType * CreateObject (const std::string &objectname)
 
virtual void DestroyObject (const std::string &objectname, ObjectType *objptr)
 
virtual int Load (const std::string &name, const std::string &path)
 
virtual void Unload ()
 
virtual ~DynamicObjectLib ()
 

Protected Attributes

std::string _path
 
ObjectFactory< ObjectType > _factory
 

Detailed Description

template<typename ObjectType>
class Sys::DynamicObjectLib< ObjectType >

Definition at line 34 of file DLTools.H.

Constructor & Destructor Documentation

virtual ~DynamicObjectLib ( )
inlinevirtual

Definition at line 93 of file DLTools.H.

93 { if(this->second) dlclose(this->second);};

Member Function Documentation

virtual ObjectType* CreateObject ( const std::string &  objectname)
inlinevirtual

Definition at line 48 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_factory.

49  {
50  ObjectType* retval = static_cast<ObjectType*>(NULL);
51  if(this->second){
52  std::ostringstream Ostr;
53  Ostr << "create_" << objectname;
54  _factory.SetCreate((ObjectType * (*)())dlsym(this->second,Ostr.str().c_str()));
55  if(_factory.CreatePtr() != NULL)
56  retval = _factory.Create();
57  }
58  return(retval);
59  };
ObjectFactory< ObjectType > _factory
Definition: DLTools.H:38
virtual void DestroyObject ( const std::string &  objectname,
ObjectType *  objptr 
)
inlinevirtual

Definition at line 60 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_factory.

61  {
62  if(this->second){
63  std::ostringstream Ostr;
64  Ostr << "destroy_" << objectname;
65  _factory.SetDestroy((void (*)(ObjectType *))dlsym(this->second,Ostr.str().c_str()));
66  if(_factory.DestroyPtr() != NULL)
67  _factory.Destroy(objptr);
68  }
69  };
ObjectFactory< ObjectType > _factory
Definition: DLTools.H:38
virtual std::string Error ( )
inlinevirtual

Definition at line 45 of file DLTools.H.

45 { return(std::string(dlerror())); };
virtual ObjectFactory<ObjectType>& Factory ( )
inlinevirtual

Definition at line 46 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_factory.

46 { return(_factory); };
ObjectFactory< ObjectType > _factory
Definition: DLTools.H:38
virtual ObjectFactory<ObjectType> Factory ( ) const
inlinevirtual

Definition at line 47 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_factory.

47 { return(_factory); };
ObjectFactory< ObjectType > _factory
Definition: DLTools.H:38
virtual std::string File ( ) const
inlinevirtual

Definition at line 42 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_path.

42 { return(_path); };
std::string _path
Definition: DLTools.H:37
virtual std::string& File ( )
inlinevirtual

Definition at line 44 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_path.

44 { return(_path); };
std::string _path
Definition: DLTools.H:37
virtual dlHandleType Handle ( ) const
inlinevirtual

Definition at line 40 of file DLTools.H.

40 { return(this->second); };
virtual int Load ( const std::string &  name,
const std::string &  path 
)
inlinevirtual

Definition at line 70 of file DLTools.H.

71  {
72  void *handle = dlopen(path.c_str(),RTLD_LAZY);
73  if(handle){
74  if(this->second)
75  dlclose(this->second);
76  this->first = name;
77  this->second = handle;
78  }
79  else
80  return(1);
81  return(0);
82  };
virtual std::string Name ( ) const
inlinevirtual

Definition at line 41 of file DLTools.H.

41 { return(this->first); };
virtual std::string& Name ( )
inlinevirtual

Definition at line 43 of file DLTools.H.

43 { return(this->first); };
virtual void Unload ( )
inlinevirtual

Definition at line 83 of file DLTools.H.

References DynamicObjectLib< ObjectType >::_factory, and DynamicObjectLib< ObjectType >::_path.

84  {
85  if(this->second)
86  dlclose(this->second);
87  this->second = NULL;
88  this->first.erase();
89  _path.erase();
90  _factory.SetCreate(NULL);
91  _factory.SetDestroy(NULL);
92  };
ObjectFactory< ObjectType > _factory
Definition: DLTools.H:38
std::string _path
Definition: DLTools.H:37

Member Data Documentation

std::string _path
protected

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