metagen/README.md

39 lines
970 B
Markdown
Raw Normal View History

2022-12-09 12:24:17 +03:00
Metagen package is used to describe structures, interfaces, functions, RPC calls using DSL.
This can be useful for codegen, bindings, etc.
Here is an example of some imaginary DSL:
#include enum.meta
func GetPlayer(
id : uint32
) : DataPlayer
func Apply(
fn : func(float, DataPlayer) : uint32
)
struct DataPlayer
@POD @table:player @pkey:id
id : uint32
version : string @strmax:16
gold : uint8 @default:0 #bonus
registered : bool @default:true
func Equals(
o : DataPlayer
v : uint32
) : bool,bool
end
struct ProtoBase
id : uint32
title : string @strmax:16 @default:"Hello"
end
struct ProtoBuilding extends ProtoBase
floors : int32
arr : uint32[] @default:[1,2,3]
end
[Look at tests for an actual API usage.](../master/tests/run.php)