12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- @0xdbb9ad1f14bf0b36; # unique file ID, generated by `capnp id`
- struct Person {
- name @0 :Text;
- birthdate @3 :Date;
- email @1 :Text;
- phones @2 :List(PhoneNumber);
- struct PhoneNumber {
- number @0 :Text;
- type @1 :Type;
- enum Type {
- mobile @0;
- home @1;
- work @2;
- }
- }
- }
- struct Date {
- year @0 :Int16;
- month @1 :UInt8;
- day @2 :UInt8;
- flags @3 :List(Bool) = [ true, false, false, true ];
- }
- interface Node {
- isDirectory @0 () -> (result :Bool);
- }
- interface Directory extends(Node) {
- list @0 () -> (list: List(Entry));
- struct Entry {
- name @0 :Text;
- node @1 :Node;
- }
- create @1 (name :Text) -> (file :File);
- mkdir @2 (name :Text) -> (directory :Directory)
- open @3 (name :Text) -> (node :Node);
- delete @4 (name :Text);
- link @5 (name :Text, node :Node);
- }
- interface File extends(Node) {
- size @0 () -> (size: UInt64);
- read @1 (startAt :UInt64 = 0, amount :UInt64 = 0xffffffffffffffff)
- -> (data: Data);
- # Default params = read entire file.
- write @2 (startAt :UInt64, data :Data);
- truncate @3 (size :UInt64);
- }
|