SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_IAssetObject.hpp
Go to the documentation of this file.
1// SDOM_IAssetObject.hpp
2#pragma once
3// #include <sol/sol.hpp>
5
6namespace SDOM
7{
8
9 class IAssetObject : public IDataObject
10 {
11 using SUPER = IDataObject;
12
13 public:
14
15 static constexpr const char* TypeName = "IAssetObject";
16
17 // --- Construction & Initialization --- //
18 struct InitStruct {
19 std::string name = TypeName;
20 std::string type = TypeName;
21 std::string filename = "";
22 bool isInternal = true;
23 };
24
25 IAssetObject(const InitStruct& init);
26 IAssetObject(const sol::table& config);
28
29 virtual ~IAssetObject();
30
31 virtual bool onInit() = 0;
32 virtual void onQuit() = 0;
33 virtual void onLoad() = 0;
34 virtual void onUnload() = 0;
35 virtual bool onUnitTest() override { return true; }
36
37 // accessors
38 const std::string& getType() const { return type_; }
39 const std::string& getName() const { return name_; }
40 const std::string& getFilename() const { return filename_; }
41 bool isInternal() const { return isInternal_; }
42 bool isLoaded() const { return isLoaded_; }
43 // mutators
44 void setType(const std::string& type) { type_ = type; }
45 void setName(const std::string& name) { name_ = name; }
46 void setFilename(const std::string& filename) { filename_ = filename; }
47
48 template <typename T>
49 T* as() { return dynamic_cast<T*>(this); }
50
51 protected:
52 std::string name_;
53 std::string type_;
54 std::string filename_;
56 bool isLoaded_ = false;
57
58 // --- Lua Registration --- //
59 virtual void _registerLuaBindings(const std::string& typeName, sol::state_view lua) override;
60 sol::usertype<IAssetObject> objHandleType_;
61
62 }; // class IAssetObject
63
64 // --- comparison operators: MUST be at namespace scope (not inside the class) --- //
65 inline bool operator<(const IAssetObject& a, const IAssetObject& b) { return a.getName() < b.getName(); }
66 inline bool operator==(const IAssetObject& a, const IAssetObject& b) { return a.getName() == b.getName() && a.getType() == b.getType() && a.getFilename() == b.getFilename(); }
67 inline bool operator<=(const IAssetObject& a, const IAssetObject& b) { return !(b < a); }
68
69
70} // end namespace SDOM
Definition SDOM_IAssetObject.hpp:10
void setType(const std::string &type)
Definition SDOM_IAssetObject.hpp:44
virtual bool onUnitTest() override
Runs unit tests for this object.
Definition SDOM_IAssetObject.hpp:35
bool isLoaded() const
Definition SDOM_IAssetObject.hpp:42
sol::usertype< IAssetObject > objHandleType_
Definition SDOM_IAssetObject.hpp:60
virtual ~IAssetObject()
Definition SDOM_IAssetObject.cpp:39
T * as()
Definition SDOM_IAssetObject.hpp:49
std::string name_
Definition SDOM_IAssetObject.hpp:52
bool isInternal() const
Definition SDOM_IAssetObject.hpp:41
virtual void _registerLuaBindings(const std::string &typeName, sol::state_view lua) override
Definition SDOM_IAssetObject.cpp:44
virtual bool onInit()=0
bool isInternal_
Definition SDOM_IAssetObject.hpp:55
const std::string & getFilename() const
Definition SDOM_IAssetObject.hpp:40
virtual void onQuit()=0
virtual void onLoad()=0
void setFilename(const std::string &filename)
Definition SDOM_IAssetObject.hpp:46
static constexpr const char * TypeName
Definition SDOM_IAssetObject.hpp:15
IAssetObject()
Definition SDOM_IAssetObject.cpp:29
std::string type_
Definition SDOM_IAssetObject.hpp:53
void setName(const std::string &name)
Definition SDOM_IAssetObject.hpp:45
const std::string & getType() const
Definition SDOM_IAssetObject.hpp:38
std::string filename_
Definition SDOM_IAssetObject.hpp:54
bool isLoaded_
Definition SDOM_IAssetObject.hpp:56
virtual void onUnload()=0
const std::string & getName() const
Definition SDOM_IAssetObject.hpp:39
Definition SDOM_IDataObject.hpp:107
Contains all core classes and utilities for the SDOM library.
Definition lua_BindHelpers.hpp:7
bool operator<=(const IAssetObject &a, const IAssetObject &b)
Definition SDOM_IAssetObject.hpp:67
bool operator==(const IAssetObject &a, const IAssetObject &b)
Definition SDOM_IAssetObject.hpp:66
bool operator<(const IAssetObject &a, const IAssetObject &b)
Definition SDOM_IAssetObject.hpp:65
Definition SDOM_IAssetObject.hpp:18
std::string name
Definition SDOM_IAssetObject.hpp:19
bool isInternal
Definition SDOM_IAssetObject.hpp:22
std::string type
Definition SDOM_IAssetObject.hpp:20
std::string filename
Definition SDOM_IAssetObject.hpp:21