Go to the documentation of this file. 12 #ifndef EMP_SERIALIZE_MACROS_H 13 #define EMP_SERIALIZE_MACROS_H 15 #include "../base/macros.h" 17 #define EMP_SERIALIZE_INIT_VAR(VAR) VAR(emp::serialize::SetupLoad(pod, &VAR, true)) 20 #define EMP_SETUP_DATAPOD_BASEINFO(CLASS_NAME, BASE_LOAD, BASE_STORE, ...) \ 21 using emp_load_return_type = emp::serialize::DataPod; \ 22 void EMP_Store(emp::serialize::DataPod & pod) const { \ 24 emp::serialize::Store(pod, __VA_ARGS__); \ 26 explicit CLASS_NAME(emp::serialize::DataPod & pod) \ 27 : BASE_LOAD EMP_WRAP_ARGS(EMP_SERIALIZE_INIT_VAR, __VA_ARGS__) { \ 33 #define EMP_SETUP_DATAPOD(CLASS_NAME, ...) \ 34 EMP_SETUP_DATAPOD_BASEINFO(CLASS_NAME, , , __VA_ARGS__) 37 #define EMP_SETUP_DATAPOD_D(CLASS_NAME, BASE_CLASS, ...) \ 38 EMP_SETUP_DATAPOD_BASEINFO(CLASS_NAME, \ 39 EMP_CALL_BASE_1(BASE_CLASS), \ 40 BASE_CLASS::EMP_Store(pod), \ 45 #define EMP_SETUP_DATAPOD_D2(CLASS_NAME, BASE_CLASS1, BASE_CLASS2, ...) \ 46 EMP_SETUP_DATAPOD_BASEINFO(CLASS_NAME, \ 47 EMP_CALL_BASE_2(BASE_CLASS1, BASE_CLASS2), \ 48 BASE_CLASS1::EMP_Store(pod); BASE_CLASS2::EMP_Store(pod), \ 51 #define EMP_CALL_BASE_1(BASE1) BASE1(pod), 52 #define EMP_CALL_BASE_2(BASE1, BASE2) BASE1(pod), BASE2(pod),