24 #ifndef SHEAF_DLL_SPEC_H 25 #include "SheafSystem/sheaf_dll_spec.h" 28 #ifndef STD_IOSTREAM_H 29 #include "SheafSystem/std_iostream.h" 33 #include "SheafSystem/std_map.h" 37 #include "SheafSystem/std_string.h" 43 class namespace_poset;
51 template <
typename T,
typename R>
54 template <
typename T,
typename R>
55 ostream& operator << (ostream &os, const factory_2<T, R>& xf);
69 template <
typename T,
typename R = T*>
72 friend ostream& operator << <T, R> (ostream& xos,
const factory_2<T, R>& xf);
130 typedef map<string, T*> prototypes_map_type;
135 prototypes_map_type _prototypes_map;
147 template <
typename T,
typename R>
148 ostream& operator << (ostream& xos, const factory_2<T, R>& xf);
152 #endif // ifndef FACTORY_2_H R new_instance(const string &xclient_class_name, const arg_list &xargs)
Creates an instance of type xclient_class_name with arguments xargs.
A whitespace separated list of arguments. Insertion operaters are used to insert arguments into the l...
factory_2()
Default constructor.
void insert_prototype(T *xprototype)
Sets xprototype as the prototype for its client class.
A factory for instanting descendants of an abstract type T, given the class name of the descendant...
bool contains_prototype(const string &xclass_name) const
True if the set of prototypes contains a prototype for handles of type xclass_name.
void delete_prototype(const string &xclass_name)
Removes the prototype for handles of type xclass_name.
Namespace for the sheaves component of the sheaf system.
Reference-counted pointer to object of type T. T must be an implementation of concept class rc_any...
virtual ~factory_2()
Destructor.