IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
SerializationEnumSrcMacro.h
Go to the documentation of this file.
1 // SerializationEnumSrcMacro.h:
3 // ----------------------------
4 //
14 
15 #ifndef __IPSDKSERIALIZATION_SERIALIZATIONENUMSRCMACRO_H__
16 #define __IPSDKSERIALIZATION_SERIALIZATIONENUMSRCMACRO_H__
17 
18 #include <IPSDKSerialization/Archive/BaseIArchive.h>
19 #include <IPSDKSerialization/Archive/BaseOArchive.h>
25 
28 
31 #define IPSDK_IMPLEMENT_SERIAL_ENUM(enumName) \
32  ipsdk::BaseIArchive& \
33  ipsdk::operator>> (ipsdk::BaseIArchive& ar, const ipsdk::SerializationIItem<enumName>& item) \
34  { \
35  if (ar.isTextArchive() == true) { \
36  std::string strValue; \
37  ar >> ipsdk::make_iitem(item._itemName, strValue); \
38  enumName::optional res = enumName::get_by_name(strValue.c_str()); \
39  if (res) \
40  item._value = *res; \
41  else \
42  IPSDKSERIALIZATION_THROW([ipsdk::eIPSDKSerializationMessage::eInvalidSavedEnumString] % \
43  strValue); \
44  } \
45  else { \
46  enumName::value_type value; \
47  ar >> ipsdk::make_iitem(item._itemName, value); \
48  enumName::optional res = enumName::get_by_value(value); \
49  if (res) \
50  item._value = *res; \
51  else \
52  IPSDKSERIALIZATION_THROW([ipsdk::eIPSDKSerializationMessage::eInvalidSavedEnumValue] % \
53  value); \
54  } \
55  return ar; \
56  } \
57  ipsdk::BaseOArchive& \
58  ipsdk::operator<< (ipsdk::BaseOArchive& ar, const ipsdk::SerializationOItem<enumName>& item) \
59  { \
60  if (ar.isTextArchive() == true) { \
61  std::string strValue = item._value.str(); \
62  ar << ipsdk::make_oitem(item._itemName, strValue); \
63  } \
64  else { \
65  ar << ipsdk::make_oitem(item._itemName, item._value.value()); \
66  } \
67  return ar; \
68  }
69 
72 
73 #endif // __IPSDKSERIALIZATION_SERIALIZATIONENUMSRCMACRO_H__
Serialization operators for basic types.
Macro set allowing to handle input object serialization.
Macro set allowing to handle input object serialization.
Macro set for template class manipulation.
Logger api for library IPSDKSerialization.