35 lines
2.2 KiB
Markdown
35 lines
2.2 KiB
Markdown
|
# Cwtch Autobindings
|
||
|
|
||
|
## Building
|
||
|
|
||
|
go mod download
|
||
|
go run generate/generate_bindings.go
|
||
|
make linux // alternatively windows, android, macos
|
||
|
|
||
|
## Spec File Format
|
||
|
|
||
|
The current Cwtch Bindings Specification is defined in [spec](./spec)
|
||
|
|
||
|
Supported function prototypes:
|
||
|
|
||
|
* `app <Function Name> <Args>` - an application-level function, called on global `Application`
|
||
|
* `profile <Function Name> <Args>` - a profile-level function, takes `profile` as an implicit first argument
|
||
|
* `json(profile) <Function Name> <Args>` - a profile-level function, takes `profile` as an implicit first argument and returns a json blob that must be freed by the calling library
|
||
|
* `@profile-experiment <Function Name> <Experiment> <Args>`- an experimental profile-level function, takes `profile` as an implicit first argument, experiment must implement cwtch Functionality interface
|
||
|
* `@(json)profile-experiment <Function Name> <Experiment> <Args>` - am experimental profile-level function, takes `profile` as an implicit first argument and returns a json blob that must be freed by the calling library, , experiment must implement cwtch Functionality interface
|
||
|
|
||
|
Supported argument prototypes:
|
||
|
|
||
|
* `profile` - a cwtch profile identifier
|
||
|
* `conversation` - a cwtch conversation identifier
|
||
|
* `message` - a cwtch message identifier
|
||
|
* `int:<name>` - a generic integer argument (with optional name)
|
||
|
* `bool:<name>` - a generic boolean argument (with optional name)
|
||
|
* `string:<name>` - a generic string argument (with optional name)
|
||
|
|
||
|
All arguments must be defined in the order they are specified by the underlying Cwtch library function.
|
||
|
|
||
|
Other directives:
|
||
|
|
||
|
* `import <go pkg>` - includes an additional go importin the compiled lib.go (needed for experiments)
|
||
|
* Functions that start with `Enhanced` are automatically stripped of that prefix for their binding names e.g. `EnhancedGetMessage` generated a binding `c_GetMessage` - for certain functions Cwtch has two potential calling options `<Function>` and `Enhanced<Function>`. "Enhanced" in this case means that the response is optimised for calling by a user-facing application by e.g. directly making a number of calls under the hood and returning a json blob of the results.
|