#include "customgui_priority.h" #include "c4d_string.h" #include "c4d_gui.h" static PriorityCustomGuiLib *lib_Priority = nullptr; static PriorityCustomGuiLib *CheckLib(Int32 offset) { return (PriorityCustomGuiLib*)CheckLib(CUSTOMGUI_PRIORITY, offset, (C4DLibrary**)&lib_Priority); } #define PriorityCall(b) PriorityCustomGuiLib *lib = CheckLib(LIBOFFSET(PriorityCustomGuiLib, b)); \ if (!lib || !lib->b) return; \ (((iPriorityData*)this)->*lib->b) #define PriorityCallR(a,b) PriorityCustomGuiLib *lib = CheckLib(LIBOFFSET(PriorityCustomGuiLib, b)); \ if (!lib || !lib->b) return a; \ return (((iPriorityData*)this)->*lib->b) #define PriorityGuiCall(b) PriorityCustomGuiLib *lib = CheckLib(LIBOFFSET(PriorityCustomGuiLib, b)); \ if (!lib || !lib->b) return; \ (((iPriorityCustomGui*)this)->*lib->b) #define PriorityGuiCallR(a,b) PriorityCustomGuiLib *lib = CheckLib(LIBOFFSET(PriorityCustomGuiLib, b)); \ if (!lib || !lib->b) return a; \ return (((iPriorityCustomGui*)this)->*lib->b) Bool PriorityCustomGui::SetValue(Int32 lValueID, const GeData &data) { PriorityGuiCallR(false, SetValue)(lValueID, data); } GeData PriorityCustomGui::GetValue(Int32 lValueID) const { PriorityGuiCallR(GeData(), GetValue)(lValueID); } Bool PriorityData::SetPriorityValue(Int32 lValueID, const GeData &data) { PriorityCallR(false, SetPriorityValue)(lValueID, data); } // same like above GeData PriorityData::GetPriorityValue(Int32 lValueID) const { PriorityCallR(GeData(), GetPriorityValue)(lValueID); }