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)
|