21 #ifndef LIB_LIGHTMETRICA_ASSET_H
22 #define LIB_LIGHTMETRICA_ASSET_H
24 #include "component.h"
44 LM_DISABLE_COPY_AND_MOVE(
Asset);
64 LM_PUBLIC_API std::string
ID()
const;
73 LM_HIDDEN_API
void SetID(
const std::string&
id);
83 #define LM_ASSET_INTERFACE_DEF(Name, GroupName) \
84 LM_COMPONENT_INTERFACE_DEF(Name); \
85 static const char* InterfaceGroupName() { return GroupName; }
87 #define LM_ASSET_DEPENDENCIES(...) \
88 static const char** GetAssetDependencies(size_t& n) \
90 static const char* deps[] = { __VA_ARGS__ }; \
91 n = sizeof(deps) / sizeof(deps[0]); \
95 #define LM_ASSET_NO_DEPENDENCIES() \
96 static const char** GetAssetDependencies(size_t& n) \
103 LM_COMPONENT_CREATE_HAS_MEMBER_FUNCTION(GetAssetDependencies,
const char** (*)(
size_t&));
104 LM_COMPONENT_CREATE_HAS_MEMBER_FUNCTION(InterfaceGroupName,
const char* (*)());
107 #define LM_ASSET_CHECK_IS_VALID_INTERFACE(AssetInterfaceType) \
108 LM_COMPONENT_CHECK_IS_DERIVED_CLASS(AssetInterfaceType, Asset); \
109 LM_COMPONENT_CHECK_HAS_MEMBER_FUNCTION(AssetInterfaceType, GetAssetDependencies); \
110 LM_COMPONENT_CHECK_HAS_MEMBER_FUNCTION(AssetInterfaceType, InterfaceGroupName);
112 #endif // LIB_LIGHTMETRICA_ASSET_H
Definition: component.h:45
LM_PUBLIC_API std::string ID() const
Definition: asset.cpp:27
LM_HIDDEN_API void SetID(const std::string &id)
Definition: asset.cpp:32
virtual bool Load(const ConfigNode &node, const Assets &assets)=0
Definition: confignode.h:37