IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseArchive.h
1 // BaseArchive.h:
3 // --------------
4 //
14 
15 #ifndef __IPSDKSERIALIZATION_BASEARCHIVE_H__
16 #define __IPSDKSERIALIZATION_BASEARCHIVE_H__
17 
18 // suppression warnings
19 // warning C4275: interface non dll class 'boost::noncopyable_::noncopyable' utilisée comme base d'une interface dll class 'ipsdk::BaseArchive'
20 // warning C4251: 'ipsdk::BaseArchive::_classVersionMap' : class 'std::map<_Kty,_Ty>' nécessite une interface DLL pour être utilisé(e) par les clients de class 'ipsdk::BaseArchive'
21 #pragma warning (push)
22 #pragma warning (disable : 4275 4251)
23 
25 #include <IPSDKSerialization/Archive/ArchiveSectionManager.h>
27 #include <IPSDKUtil/BaseTypes.h>
28 #include <map>
29 #include <boost/noncopyable.hpp>
30 
31 namespace ipsdk {
32 
35 
36 class IPSDKSERIALIZATION_API BaseArchive : public boost::noncopyable
37 {
38  // friend class for protected members access
39  friend class ArchiveSectionManager;
40 
41 public:
44  BaseArchive(bool bIsTextArchive);
45  virtual ~BaseArchive();
47 
48 // methods
49 public:
51  bool isTextArchive() const;
52 
56  virtual void archiveHeader() {}
57  virtual void archiveFooter() {}
59 
61  bool isClassVersionRegistred(const std::string& className) const;
62 
65  void registerClassVersion(const std::string& className,
66  ipUInt32 version);
67 
70  ipUInt32 getRegisterClassVersion(const std::string& className) const;
71 
73  virtual Guid getSocketGuid() const {return Guid::getNilGuid();}
74 
75 protected:
78  virtual void startSubSection(const std::string& subSectionName) {}
79  virtual void endSubSection(const std::string& subSectionName) {}
81 
82 // attributes
83 protected:
85  typedef std::map<std::string, ipUInt32> ClassVersionMap;
86 
89 
92 };
93 
96 
97 inline bool
99 {
100  return _bIsTextArchive;
101 }
102 
105 
106 } // end of namespace ipsdk
107 
108 #pragma warning (pop)
109 
110 #endif // __IPSDKSERIALIZATION_BASEARCHIVE_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Class providing section management for archive serialization.
Definition: ArchiveSectionManager.h:37
virtual void endSubSection(const std::string &subSectionName)
start/end a new sub section for a archive
Definition: BaseArchive.h:79
bool _bIsTextArchive
flag indicating whether archive is an human readable text archive
Definition: BaseArchive.h:91
bool isTextArchive() const
method allowing to test whether archive is an human readable text archive
Definition: BaseArchive.h:98
virtual Guid getSocketGuid() const
retrieve socket guid associated to archive remote computer
Definition: BaseArchive.h:73
virtual void startSubSection(const std::string &subSectionName)
start/end a new sub section for a archive
Definition: BaseArchive.h:78
Base types for multiplatform compatibility.
Class encapsulating an auto initialized uuid.
Definition: Guid.h:27
Predefined types for serialization objectsn.
Base class for serialization archives.
Definition: BaseArchive.h:36
ClassVersionMap _classVersionMap
map for class name / class version association
Definition: BaseArchive.h:88
virtual void archiveHeader()
methods allowing to read/write header and footer for an archive
Definition: BaseArchive.h:56
virtual void archiveFooter()
methods allowing to read/write header and footer for an archive
Definition: BaseArchive.h:57
Definition of import/export macro for library.
#define IPSDKSERIALIZATION_API
Import/Export macro for library IPSDKUtil.
Definition: IPSDKSerializationExports.h:27
std::map< std::string, ipUInt32 > ClassVersionMap
map associating a class name to its id
Definition: BaseArchive.h:85
static Guid getNilGuid()
retrieve nil value for guid
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53