#include "customgui_linkbox.h"
#include "c4d_string.h"
#include "c4d_gui.h"

static CustomGuiLinkBoxLib *lib_LinkBox = nullptr;

static CustomGuiLinkBoxLib *CheckLib(Int32 offset)
{
	return (CustomGuiLinkBoxLib*)CheckLib(CUSTOMGUI_LINKBOX,offset,(C4DLibrary**)lib_LinkBox);
}

#define LinkBoxGuiCall(b) 		CustomGuiLinkBoxLib *lib = CheckLib(LIBOFFSET(CustomGuiLinkBoxLib,b)); \
															if (!lib || !lib->b) return; \
															(((iLinkBoxGui*)this)->*lib->b)

#define LinkBoxGuiCallR(a,b)	CustomGuiLinkBoxLib *lib = CheckLib(LIBOFFSET(CustomGuiLinkBoxLib,b)); \
															if (!lib || !lib->b) return a; \
															return (((iLinkBoxGui*)this)->*lib->b)

BaseList2D* LinkBoxGui::GetLink(const BaseDocument* doc)
{
	LinkBoxGuiCallR(nullptr, GetLink)(doc);
}

BaseList2D* LinkBoxGui::GetLink(const BaseDocument* doc, Int32 instance)
{
	LinkBoxGuiCallR(nullptr, GetLinkI)(doc, instance);
}

Bool LinkBoxGui::SetLink(const BaseList2D* obj)
{
	LinkBoxGuiCallR(false, SetLink)(obj);
}
