hecl
High-Level Extensible Combiner Language and Resource Database
|
Base object to subclass for integrating with key project operations. More...
#include <HECLDatabase.hpp>
Public Member Functions | |
ObjectBase (const SystemString &path) | |
const SystemString & | getPath () const |
Protected Types | |
enum | DataEndianness { DE_NONE, DE_BIG, DE_LITTLE } |
Byte-order of target system. More... | |
enum | DataPlatform { DP_NONE, DP_GENERIC, DP_REVOLUTION, DP_CAFE } |
Data-formats of target system. More... | |
typedef std::function< void(const void *data, size_t len)> | FDataAppender |
typedef std::function< void(ObjectBase *)> | FDepAdder |
Protected Member Functions | |
virtual bool | _cookObject (FDataAppender dataAppender, DataEndianness endianness, DataPlatform platform) |
Optional private method implemented by CProjectObject subclasses to cook objects. More... | |
virtual void | _gatherDeps (FDepAdder depAdder) |
Optional private method implemented by CProjectObject subclasses to resolve dependencies. More... | |
Friends | |
class | Project |
Base object to subclass for integrating with key project operations.
All project objects are provided with IDataObject pointers to their database entries. Subclasses register themselves with a type registry so instances are automatically constructed when performing operations like cooking and packaging.
DO NOT CONSTRUCT THIS OR SUBCLASSES DIRECTLY!!
|
protected |
|
protected |
|
inlineprotectedvirtual |
Optional private method implemented by CProjectObject subclasses to cook objects.
dataAppender | subclass calls this function zero or more times to provide cooked-data linearly |
endianness | byte-order to target |
platform | data-formats to target |
This method is called during IProject::cookPath(). Part of the cooking process may include embedding database-refs to dependencies. This method should store the 64-bit value provided by IDataObject::id() when doing this.
|
inlineprotectedvirtual |
Optional private method implemented by CProjectObject subclasses to resolve dependencies.
depAdder | subclass calls this function zero or more times to register each dependency |
This method is called during IProject::packagePath(). Dependencies registered via this method will eventually have this method called on themselves as well. This is a non-recursive operation, no need for subclasses to implement recursion-control.