00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "torc/generic/om/DumpRestoreConfig.hpp"
00017
00018 #ifndef HAVE_CONFIG_H
00019 #include "torc/generic/config.h"
00020 #endif
00021
00022 #ifdef GENOM_SERIALIZATION
00023 #include <boost/archive/binary_iarchive.hpp>
00024 #include <boost/archive/binary_oarchive.hpp>
00025 #include <boost/serialization/base_object.hpp>
00026 #include <boost/serialization/export.hpp>
00027 #endif //GENOM_SERIALIZATION
00028
00029 #include "torc/generic/om/SingleInstance.hpp"
00030
00031 #ifdef GENOM_SERIALIZATION
00032 BOOST_CLASS_EXPORT( torc::generic::SingleInstance )
00033 #endif //GENOM_SERIALIZATION
00034
00035 namespace torc {
00036
00037 namespace generic {
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 SingleInstanceSharedPtr
00049 SingleInstance::Factory::newSingleInstancePtr( const std::string &inName,
00050 const ViewSharedPtr &inViewPtr,
00051 const ViewSharedPtr &inMasterPtr,
00052 const std::string &inOriginalName ) throw(Error) {
00053 try
00054 {
00055 SingleInstanceSharedPtr newSingleInstance;
00056 create( newSingleInstance );
00057 newSingleInstance->setName(inName);
00058 newSingleInstance->setMaster( inMasterPtr );
00059 newSingleInstance->setOriginalName( inOriginalName );
00060 inViewPtr->addInstance( newSingleInstance );
00061 return newSingleInstance;
00062 }
00063 catch( Error &e )
00064 {
00065 e.setCurrentLocation(
00066 __FUNCTION__, __FILE__, __LINE__ );
00067 throw;
00068 }
00069 }
00070
00071 void
00072 SingleInstance::accept(
00073 BaseVisitor & inoutVisitor) throw(Error) {
00074 try
00075 {
00076 runVisitor( *this, inoutVisitor );
00077 }
00078 catch( Error &e )
00079 {
00080 e.setCurrentLocation(
00081 __FUNCTION__, __FILE__, __LINE__ );
00082 throw;
00083 }
00084 }
00085
00086
00087
00088
00089 void
00090 SingleInstance::flatten() throw(Error) {
00091
00092 }
00093
00094 SingleInstance::SingleInstance()
00095 : Instance(),
00096 Scalar<Instance>() {
00097 }
00098
00099 SingleInstance::~SingleInstance() throw() {
00100 }
00101
00102 #ifdef GENOM_SERIALIZATION
00103 template<class Archive> void
00104 SingleInstance::serialize( Archive &ar, unsigned int ) {
00105 ar & boost::serialization::base_object<Instance>( *this );
00106 ar & boost::serialization::base_object<
00107 Scalar<Instance> >( *this );
00108 }
00109
00110
00111 template void
00112 SingleInstance::serialize<boost::archive::binary_iarchive>(
00113 boost::archive::binary_iarchive & ar, const unsigned int);
00114
00115 template void
00116 SingleInstance::serialize<boost::archive::binary_oarchive>(
00117 boost::archive::binary_oarchive & ar, const unsigned int);
00118
00119 #endif //GENOM_SERIALIZATION
00120
00121 }
00122
00123 }