Theolizer  Version.1.2.0
serializer for C++ / Do you want to update your classes easily ?
serializer.h ファイル

TheolizerライブラリのAPI部 [詳解]

#include "internal/core.h"
serializer.h の依存先関係図:

[ソースコード]

名前空間

 theolizer
 theolizer名前空間
 

マクロ定義

#define THEOLIZER_PROCESS(dSerializer, dInstance)
 通常の保存/回復処理マクロ(2-4-2.シリアライズ処理要求 参照) [詳解]
 
#define THEOLIZER_PROCESS_POINTEE(dSerializer, dInstance)
 被ポインタ用の保存/回復処理マクロ(2-4-2.シリアライズ処理要求 参照) [詳解]
 
#define THEOLIZER_PROCESS_OWNER(dSerializer, dInstance)
 オーナ・ポインタ用の保存/回復処理マクロ(2-4-2.シリアライズ処理要求 参照) [詳解]
 
#define THEOLIZER_PROCESS_BASE(dSerializer, dBase, dInstance)
 非侵入型手動クラスの保存/回復処理で、基底クラスを保存/回復するためのマクロ(3-5.保存/回復処理関数の記述 参照) [詳解]
 
#define THEOLIZER_INTRUSIVE(dAnno, dClass, dLastVersionNo)
 侵入型半自動クラス(名前対応)指定(2.侵入型半自動クラス 参照) [詳解]
 
#define THEOLIZER_INTRUSIVE_ORDER(dAnno, dClass, dLastVersionNo)
 侵入型半自動クラス(順序対応)指定(2.侵入型半自動クラス 参照) [詳解]
 
#define THEOLIZER_NON_INTRUSIVE_ORDER(dClass, dLastVersionNo)
 非侵入型手動クラス指定(3.非侵入型手動クラス 参照) [詳解]
 
#define THEOLIZER_ENUM(dEnum, dLastVersionNo)   THEOLIZER_INTERNAL_ENUM(dEnum, dLastVersionNo, theolizer::internal::estName, false)
 enum型シリアライズ(シンボル名保存)指定(2.非侵入型半自動enum型 参照)
 
#define THEOLIZER_ENUM_VALUE(dEnum, dLastVersionNo)   THEOLIZER_INTERNAL_ENUM(dEnum, dLastVersionNo, theolizer::internal::estValue, false)
 enum型シリアライズ(シンボル値保存)指定(2.非侵入型半自動enum型 参照)
 
#define THEOLIZER_REGISTER_CLASS(dClass)
 ポリモーフィズム用派生クラス登録(3-1.使い方 参照) [詳解]
 
#define THEOLIZER_ANNOTATE(...)
 アノテーション用マクロ [詳解]
 
#define THEOLIZER_DESTINATIONS(dPrevSymbol, ...)
 保存先定義用マクロ [詳解]
 
#define THEOLIZER_DEFINE_GLOBAL_VERSION_TABLE(dName, dLastGlobalVersionNo)
 グローバル・バージョン番号テーブル定義用マクロ
 

詳解

TheolizerライブラリのAPI部

下記Theolizer(Theolizer Serializer)のAPI定義
  標準派生Serializer
  標準Serializableクラス

著者
Yoshinori Tahara
日付
2016/03/21 Created

serializer.h に定義があります。

マクロ定義詳解

§ THEOLIZER_ANNOTATE

§ THEOLIZER_DESTINATIONS

#define THEOLIZER_DESTINATIONS (   dPrevSymbol,
  ... 
)
値:
namespace theolizer{ \
namespace internal{namespace{namespace bits{ \
enum : unsigned { \
THEOLIZER_INTERNAL_CAT(dPrevSymbol, Cont)= \
static_cast<unsigned>(theolizerD::dPrevSymbol), \
__VA_ARGS__ \
}; \
}}} /* namespace internal */ \
THEOLIZER_INTERNAL_FOR(THEOLIZER_INTERNAL_DESTINATION, __VA_ARGS__);\
} /* namespace theolizer */
theolizer名前空間
Definition: base.h:53

保存先定義用マクロ

serializer.h315 行目に定義があります。

§ THEOLIZER_INTRUSIVE

#define THEOLIZER_INTRUSIVE (   dAnno,
  dClass,
  dLastVersionNo 
)
値:
private: \
THEOLIZER_INTERNAL_SERIALIZABLE_AUTO( \
THEOLIZER_ANNOTATE(dAnno:), dClass, dClass, dLastVersionNo, \
(), theolizer::internal::emName, false, false)
#define THEOLIZER_ANNOTATE(...)
アノテーション用マクロ
Definition: serializer.h:252

侵入型半自動クラス(名前対応)指定(2.侵入型半自動クラス 参照)

serializer.h132 行目に定義があります。

§ THEOLIZER_INTRUSIVE_ORDER

#define THEOLIZER_INTRUSIVE_ORDER (   dAnno,
  dClass,
  dLastVersionNo 
)
値:
private: \
THEOLIZER_INTERNAL_SERIALIZABLE_AUTO( \
THEOLIZER_ANNOTATE(dAnno:), dClass, dClass, dLastVersionNo, \
(), theolizer::internal::emOrder, false, false)
#define THEOLIZER_ANNOTATE(...)
アノテーション用マクロ
Definition: serializer.h:252

侵入型半自動クラス(順序対応)指定(2.侵入型半自動クラス 参照)

serializer.h141 行目に定義があります。

§ THEOLIZER_NON_INTRUSIVE_ORDER

#define THEOLIZER_NON_INTRUSIVE_ORDER (   dClass,
  dLastVersionNo 
)
値:
template<> \
struct TheolizerNonIntrusive<THEOLIZER_INTERNAL_UNPAREN dClass> : \
public THEOLIZER_INTERNAL_UNPAREN dClass \
{ \
THEOLIZER_INTERNAL_SERIALIZABLE_MANUAL(dClass, dLastVersionNo, \
(), theolizer::internal::emOrder, true); \
}

非侵入型手動クラス指定(3.非侵入型手動クラス 参照)

serializer.h182 行目に定義があります。

§ THEOLIZER_PROCESS

#define THEOLIZER_PROCESS (   dSerializer,
  dInstance 
)
値:
theolizer::internal::process<theolizer::internal::etmDefault,tTheolizerVersion>\
(dSerializer, dInstance, #dInstance, THEOLIZER_INTERNAL_FILE, __LINE__)

通常の保存/回復処理マクロ(2-4-2.シリアライズ処理要求 参照)

serializer.h67 行目に定義があります。

§ THEOLIZER_PROCESS_BASE

#define THEOLIZER_PROCESS_BASE (   dSerializer,
  dBase,
  dInstance 
)
値:
{ \
theolizer::internal::BaseSerializer::AutoBaseProcessing \
aAutoBaseProcessing(dSerializer); \
theolizer::internal::process<theolizer::internal::etmDefault,tTheolizerVersion>\
( \
dSerializer, \
const_cast<dBase&>(static_cast<dBase const&>(*dInstance)), \
"(" #dBase ")", THEOLIZER_INTERNAL_FILE, __LINE__ \
); \
}

非侵入型手動クラスの保存/回復処理で、基底クラスを保存/回復するためのマクロ(3-5.保存/回復処理関数の記述 参照)

serializer.h103 行目に定義があります。

§ THEOLIZER_PROCESS_OWNER

#define THEOLIZER_PROCESS_OWNER (   dSerializer,
  dInstance 
)
値:
do { \
typedef typename std::remove_reference<decltype(dInstance)>::type Type;\
static_assert(std::is_pointer<typename std::remove_all_extents<Type>::type>::value,\
"THEOLIZER_PROCESS_OWNER() support a pointer only."); \
theolizer::internal::process<theolizer::internal::etmOwner,tTheolizerVersion>\
(dSerializer, dInstance, #dInstance, THEOLIZER_INTERNAL_FILE, __LINE__);\
} while(0)

オーナ・ポインタ用の保存/回復処理マクロ(2-4-2.シリアライズ処理要求 参照)

serializer.h91 行目に定義があります。

§ THEOLIZER_PROCESS_POINTEE

#define THEOLIZER_PROCESS_POINTEE (   dSerializer,
  dInstance 
)
値:
do { \
typedef typename std::remove_reference<decltype(dInstance)>::type Type;\
static_assert(!std::is_pointer<Type>::value, \
"THEOLIZER_PROCESS_POINTEE() does not support a pointer."); \
theolizer::internal::process<theolizer::internal::etmPointee,tTheolizerVersion>\
(dSerializer, dInstance, #dInstance, THEOLIZER_INTERNAL_FILE, __LINE__);\
} while(0)

被ポインタ用の保存/回復処理マクロ(2-4-2.シリアライズ処理要求 参照)

serializer.h76 行目に定義があります。

§ THEOLIZER_REGISTER_CLASS

#define THEOLIZER_REGISTER_CLASS (   dClass)
値:
namespace theolizer{namespace internal{ \
template \
class RegisterToBaseClass<THEOLIZER_INTERNAL_UNPAREN dClass>; \
}}
theolizer名前空間
Definition: base.h:53

ポリモーフィズム用派生クラス登録(3-1.使い方 参照)

serializer.h225 行目に定義があります。