2 #ifndef vsl_binary_loader_hxx_ 3 #define vsl_binary_loader_hxx_ 11 # include <vcl_msvc_warnings.h> 14 template<
class BaseClass>
17 if (instance_ ==
nullptr)
27 template<
class BaseClass>
30 for (
unsigned int i=0; i<object_.size(); ++i)
35 template<
class BaseClass>
43 template<
class BaseClass>
57 if (name==
"VSL_NULL_PTR")
65 while (i<object_.size() && !(object_[i]->is_a()==name)) ++i;
69 b = object_[i]->clone();
74 std::cerr <<
"\n I/O ERROR: " << is_a() <<
"::load_object: " 75 <<
"class name <" << name <<
"> not in list of loaders\n" 76 << object_.size()<<
" valid loaders:\n";
77 for (
unsigned int j=0; j<object_.size(); ++j)
78 std::cerr << object_[j]->is_a() << std::endl;
79 is.
is().clear(std::ios::badbit);
85 template<
class BaseClass>
97 template <
class BaseClass>
101 #undef VSL_BINARY_LOADER_INSTANTIATE 102 #define VSL_BINARY_LOADER_WITH_SPECIALIZATION_INSTANTIATE(T) \ 103 template <> std::string vsl_binary_loader<T >::is_a() const \ 104 { return std::string("vsl_binary_loader<" #T ">"); }\ 105 template class vsl_binary_loader<T > 106 #define VSL_BINARY_LOADER_INSTANTIATE(T) \ 107 VSL_BINARY_LOADER_WITH_SPECIALIZATION_INSTANTIATE(T); \ 109 template void vsl_b_write(vsl_b_ostream& bfs, const T* b) 111 #endif // vsl_binary_loader_hxx_ A binary output adaptor for any std::ostream.
static vsl_binary_loader< BaseClass > & instance()
Returns the instance variable for the singleton.
void register_this()
Register this, so it can be deleted by vsl_delete_all_loaders();.
Loader to do Polymorphic IO.
std::istream & is() const
A reference to the adaptor's stream.
Class to load objects by baseclass pointer.
void make_empty()
Remove all example objects.
void vsl_b_write(vsl_b_ostream &bfs, const BaseClass *b)
Binary file stream output operator for pointer to class.
void vsl_b_read(vsl_b_istream &is, char &n)
Read char from vsl_b_istream.
An adaptor for any std::istream to make it suitable for binary input.
~vsl_binary_loader() override
Destructor.
void load_object(vsl_b_istream &is, BaseClass *&b)
Loads object and sets base class pointer.