# 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 ` - an application-level function, called on global `Application` * `profile ` - a profile-level function, takes `profile` as an implicit first argument * `json(profile) ` - a profile-level function, takes `profile` as an implicit first argument and returns a json blob that must be freed by the calling library (see [MEMORY](./MEMORY.md)) * `@profile-experiment `- an experimental profile-level function, takes `profile` as an implicit first argument, experiment must implement cwtch Functionality interface * `@(json)profile-experiment ` - am experimental profile-level function, takes `profile` as an implicit first argument and returns a json blob that must be freed by the calling (see [MEMORY](./MEMORY.md)) 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:` - a generic integer argument (with optional name) * `bool:` - a generic boolean argument (with optional name) * `string:` - 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 ` - 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 `` and `Enhanced`. "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. ## Support Cwtch Development We couldn't do what we do without all the wonderful community support we get, from [one-off donations](https://openprivacy.ca/donate) to [recurring support via Patreon](https://www.patreon.com/openprivacy). If you want to see us move faster on some of these goals and are in a position to, please [donate](https://openprivacy.ca/donate). If you happen to be at a company that wants to do more for the community and this aligns, please consider donating or sponsoring a developer. Donations of **$5 or more** can opt to receive stickers as a thank-you gift! For more information about donating to Open Privacy and claiming a thank you gift [please visit the Open Privacy Donate page](https://openprivacy.ca/donate/).