// p≡p API Y language // Copyleft (c) 2019-2020, p≡p foundation // this file is under GNU General Public License 3.0 // see LICENSE.txt // written by Volker Birk and Nana Karlstetter decl package @name; decl api @name (type=api) alias package; decl type @name; decl extends @type; decl enum @name; decl item @name; decl struct @name; decl field @type @name; // optional: function=free for a free function decl internal < field >; // internal field, p≡p engine only decl hex is item (output=hex); decl flag @name; decl protocol @name; decl method @name; decl construct, new is construct; // readonly in parm, ownership remains with caller decl use @type @name (mode=use) alias parm; // inout parm, ownership remains with caller decl supply @type @name (mode=supply) alias parm; // factory delivers this, ownership goes to caller decl create @type @name (mode=create) alias parm; // in parm, ownership goes to callee decl provide @type @name (mode=provide) alias parm; // out parm, ownership goes to callee decl return @type @name (mode=return) alias parm; decl throws @except; decl caveat(mode=caveat) alias doc; // base types // string text // p≡p engine uses UTF-8 strings which are NFC normalized. // Cf. https //dev.pep.foundation/Engine/Basic%20Concepts%20of%20the%20pEp%20Engine // binary binary data // int signed integer number // unsigned unsigned integer number // size_t size in memory // bool true or false // timestamp point of time // any any type // collections // list one or more elements, which have a sequence // set one or more elements, which do not have a sequence // pair two elements in sequence package pEp { api transport include ./transport_api.yml2 api message include ./message_api.yml2 api keymanagement include ./keymanagement_api.yml2 api basic include ./basic_api.yml2 }