
1 changed files with 82 additions and 0 deletions
@ -0,0 +1,82 @@ |
|||||
|
// 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; |
||||
|
|
||||
|
decl type @name; |
||||
|
decl is @type; |
||||
|
decl extends @type; |
||||
|
|
||||
|
// enum |
||||
|
decl enum @name; |
||||
|
decl item @name; |
||||
|
decl hex is item (output=hex); |
||||
|
|
||||
|
// struct |
||||
|
decl struct @name; |
||||
|
decl field @type @name; // optional: function=free for a free function |
||||
|
|
||||
|
// method |
||||
|
decl method @name; |
||||
|
|
||||
|
|
||||
|
// unimplemented |
||||
|
// decl internal < field >; // internal field, p≡p engine only |
||||
|
// decl flag @name; |
||||
|
|
||||
|
// decl protocol @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; |
||||
|
|
||||
|
// in parm, ownership goes to callee |
||||
|
decl provide @type @name (mode=provide) alias parm; |
||||
|
|
||||
|
// out parm, ownership goes to caller |
||||
|
decl return @type @name (mode=return) alias parm; |
||||
|
|
||||
|
// factory delivers this, ownership goes to caller |
||||
|
decl create @type @name (mode=create) 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 |
||||
|
// uint unsigned integer number |
||||
|
// size size in memory |
||||
|
// bool true or false |
||||
|
// timestamp point of time |
||||
|
// opaque opaque type (was: 'any') |
||||
|
|
||||
|
//package idl { |
||||
|
// type string; |
||||
|
// type binary; |
||||
|
// type int; |
||||
|
// type uint; |
||||
|
// type size; |
||||
|
// type bool; |
||||
|
// type timestamp; |
||||
|
// type opaque; |
||||
|
//} |
||||
|
|
||||
|
// 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 |
Loading…
Reference in new issue