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
00023 #ifdef GENOM_SERIALIZATION
00024 #include <boost/archive/binary_iarchive.hpp>
00025 #include <boost/archive/binary_oarchive.hpp>
00026 #include <boost/serialization/base_object.hpp>
00027 #include <boost/serialization/export.hpp>
00028 #endif //GENOM_SERIALIZATION
00029
00030 #include "torc/generic/om/ScalarNet.hpp"
00031 #include "torc/generic/om/NetBundle.hpp"
00032
00033 #ifdef GENOM_SERIALIZATION
00034 BOOST_CLASS_EXPORT( torc::generic::ScalarNet )
00035 #endif //GENOM_SERIALIZATION
00036
00037 namespace torc {
00038
00039 namespace generic {
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 ScalarNetSharedPtr
00051 ScalarNet::Factory::newScalarNetPtr( const std::string &inName,
00052 const ViewSharedPtr &inViewPtr,
00053 const NetBundleSharedPtr &inParentCollection,
00054 const std::string &inOriginalName ) throw(Error) {
00055 try
00056 {
00057 ScalarNetSharedPtr newScalarNet;
00058 create( newScalarNet );
00059 newScalarNet->setName(inName);
00060 newScalarNet->setOriginalName( inOriginalName );
00061 if( inParentCollection )
00062 {
00063 inParentCollection->addChild( newScalarNet );
00064 }
00065 else
00066 {
00067 inViewPtr->addNet( newScalarNet );
00068 }
00069 return newScalarNet;
00070 }
00071 catch( Error &e )
00072 {
00073 e.setCurrentLocation(
00074 __FUNCTION__, __FILE__, __LINE__ );
00075 throw;
00076 }
00077 }
00078
00079 void
00080 ScalarNet::accept(BaseVisitor & inoutVisitor) throw(Error) {
00081 try
00082 {
00083 runVisitor( *this, inoutVisitor );
00084 }
00085 catch( Error &e )
00086 {
00087 e.setCurrentLocation(
00088 __FUNCTION__, __FILE__, __LINE__ );
00089 throw;
00090 }
00091 }
00092
00093 Connectable::Connection
00094 ScalarNet::connect(
00095 const NetSharedPtr &inNet) throw(Error)
00096 {
00097 if( !inNet )
00098 {
00099 Error e( eMessageIdErrorPointerToItemDoesNotExist,
00100 __FUNCTION__, __FILE__, __LINE__ );
00101 e.saveContextData("Pointer to Net", inNet);
00102 throw e;
00103 }
00104 if( inNet->getSize() != getSize() )
00105 {
00106 Error e( eMessageIdErrorItemSizeMismatch,
00107 __FUNCTION__, __FILE__, __LINE__ );
00108 e.saveContextData("Net Size", inNet->getSize());
00109 e.saveContextData("Connectable object Size", getSize() );
00110 throw e;
00111 }
00112 return Connectable::connect( inNet );
00113 }
00114
00115 void
00116 ScalarNet::disconnect(
00117 const Connection & inConnection) throw(Error) {
00118 Connectable::disconnect( inConnection );
00119 }
00120
00121 ScalarNet::ScalarNet()
00122 :Net(),
00123 Scalar<Net>() {
00124
00125 }
00126
00127 ScalarNet::~ScalarNet() throw() {
00128 }
00129
00130 #ifdef GENOM_SERIALIZATION
00131 template<class Archive> void
00132 ScalarNet::serialize( Archive &ar, unsigned int ) {
00133 ar & boost::serialization::base_object< Net >( *this );
00134 ar & boost::serialization::base_object< Scalar<Net> >( *this );
00135 }
00136
00137
00138 template void
00139 ScalarNet::serialize<boost::archive::binary_iarchive>(
00140 boost::archive::binary_iarchive & ar, const unsigned int);
00141
00142 template void
00143 ScalarNet::serialize<boost::archive::binary_oarchive>(
00144 boost::archive::binary_oarchive & ar, const unsigned int);
00145
00146 #endif //GENOM_SERIALIZATION
00147
00148
00149 }
00150
00151 }