CastleDB: http://castledb.org/ Github: https://github.com/ncannasse/castle
Process CastleDB database JSON files and generates source code for both the types contained in the database and code to load and resolve foreign keys.
Supported CastleDB data types
- Unique Identifier
- Text
- bool
- Int
- Float
- Enum
- Flags
- Lists
- References
- Color
- File (as String)
Unsupported CastleDB data types
- Layer
- TilePos
- TileLayer
- Custom
- Dynamic
- Image (seperate IMG database, base64 encoding - will probably fork CastleDB to work with Urho3D resources in the future)
CastleDBGen - (C) JSandusky 2015
usage:
CastleDBGen <input-db-path> [outputfilename]
switches:
-ns: namespace, follow with namespace
default: none
C#: REQUIRED
-lang: <language>
default: cpp
option: as
option: cs
option: lua
option: asbind (generate AS bindings)
-hd: <header path string>, C++ only
-db: name for database class
default: GameDatabase
-bin: <setting>, type of binary read/write suppprt
default: none
option: on
option: only, only generates binary read/write, no JSON
-inherit: <classname>
default: none
Required as "RefCounted" for AS binding generation
Note: in C++ inheriting RefCounted will use SharedPtr for all things
Examples
CastleDBGen C:\MyDdatabase.cdb -lang cpp -ns MyNamespace
CastleDBGen C:\MyDdatabase.cdb -lang as
CastleDBGen C:\MyDdatabase.cdb -lang cpp -hd "../HeaderPath/"
Newtonsoft.JSON via Nuget
To use CastleDB custom types and their constructors a specific set of rules must be used to make the generator happy. These necessities were irrelevant to Haxe. Eventually a CastleDB fork will account for the necessity.
- The first "constructor" must be the variable type and must not be used in your data.
- All other constructors will be used to construct that data
The following snippet is valid for a field that is a float and is constructed via a call to random(value,value). The effect of the constructed code would be to call random() to set a float.
enum MyCustom {
float;
random(min : float, max : float);
}