You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.9 KiB

4 years ago
2 years ago
4 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
4 years ago
2 years ago
4 years ago
2 years ago
4 years ago
2 years ago
4 years ago
4 years ago
  1. // p≡p API Y language
  2. // Copyleft (c) 2019-2020, p≡p foundation
  3. // this file is under GNU General Public License 3.0
  4. // see LICENSE.txt
  5. // written by Volker Birk and Nana Karlstetter
  6. decl package @name;
  7. decl api @name (type=api) alias package;
  8. decl type @name;
  9. decl extends @type;
  10. decl enum @name;
  11. decl item @name;
  12. decl struct @name;
  13. decl field @type @name; // optional: function=free for a free function
  14. decl internal < field >; // internal field, p≡p engine only
  15. decl hex is item (output=hex);
  16. decl flag @name;
  17. decl protocol @name;
  18. decl method @name;
  19. decl construct, new is construct;
  20. // readonly in parm, ownership remains with caller
  21. decl use @type @name (mode=use) alias parm;
  22. // inout parm, ownership remains with caller
  23. decl supply @type @name (mode=supply) alias parm;
  24. // factory delivers this, ownership goes to caller
  25. decl create @type @name (mode=create) alias parm;
  26. // in parm, ownership goes to callee
  27. decl provide @type @name (mode=provide) alias parm;
  28. // out parm, ownership goes to callee
  29. decl return @type @name (mode=return) alias parm;
  30. decl throws @except;
  31. decl caveat(mode=caveat) alias doc;
  32. // base types
  33. // string text
  34. // p≡p engine uses UTF-8 strings which are NFC normalized.
  35. // Cf. https //dev.pep.foundation/Engine/Basic%20Concepts%20of%20the%20pEp%20Engine
  36. // binary binary data
  37. // int signed integer number
  38. // unsigned unsigned integer number
  39. // size_t size in memory
  40. // bool true or false
  41. // timestamp point of time
  42. // any any type
  43. // collections
  44. // list one or more elements, which have a sequence
  45. // set one or more elements, which do not have a sequence
  46. // pair two elements in sequence
  47. package pEp {
  48. api transport include ./transport_api.yml2
  49. api message include ./message_api.yml2
  50. api keymanagement include ./keymanagement_api.yml2
  51. api basic include ./basic_api.yml2
  52. }