1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>test.capnp</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Cap'n Proto) - Theme (Breeze Light)"/>
</head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
<span style="color:#644a9b">@0xdbb9ad1f14bf0b36</span>; <span style="color:#898887"># unique file ID, generated by `capnp id`</span>
<span style="font-weight:bold">struct</span> Foo <span style="color:#644a9b">@0x8db435604d0d3723</span> <span style="font-weight:bold">{</span> <span style="font-weight:bold">}</span>
<span style="font-weight:bold">struct</span> Person <span style="font-weight:bold">{</span>
name <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span>;
birthdate <span style="color:#644a9b">@3</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Date</span>;
phones <span style="color:#644a9b">@2</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">List</span><span style="color:#0057ae">(PhoneNumber)</span>;
<span style="font-weight:bold">struct</span> PhoneNumber <span style="font-weight:bold">{</span>
type <span style="color:#644a9b">@1</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Type</span>;
<span style="font-weight:bold">enum</span> Type <span style="font-weight:bold">{</span>
mobile <span style="color:#644a9b">@0</span>;
home <span style="color:#644a9b">@1</span>;
work <span style="color:#644a9b">@2</span>;
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">struct</span> Dummy <span style="font-weight:bold">{</span>
byName <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Map(</span><span style="color:#0057ae">Text</span><span style="color:#0057ae">, Person)</span>;
foo <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Int32</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000">123</span>;
bar <span style="color:#644a9b">@1</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#bf0303">"blah"</span>;
baz <span style="color:#644a9b">@2</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">List</span><span style="color:#0057ae">(</span><span style="color:#0057ae">Bool</span><span style="color:#0057ae">) </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span>[<span style="color:#0057ae"> </span><span style="color:#aa5500">true</span>,<span style="color:#0057ae"> </span><span style="color:#aa5500">false</span>,<span style="color:#0057ae"> </span><span style="color:#aa5500">false</span>,<span style="color:#0057ae"> </span><span style="color:#aa5500">true</span><span style="color:#0057ae"> </span>];
qux <span style="color:#644a9b">@3</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Person </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span>(<span style="color:#0057ae">name </span><span style="color:#0057ae">=</span><span style="color:#0057ae"> </span><span style="color:#bf0303">"Bob"</span>,<span style="color:#0057ae"> email </span><span style="color:#0057ae">=</span><span style="color:#0057ae"> </span><span style="color:#bf0303">"bob@example.com"</span>);
corge <span style="color:#644a9b">@4</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Void</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> void</span>;
grault <span style="color:#644a9b">@5</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Data</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000;font-style:italic">0x</span><span style="color:#bf0303">"a1 40 33"</span>;
<span style="font-weight:bold">union</span> <span style="font-weight:bold">{</span>
circle <span style="color:#644a9b">@1</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Float64</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000">nan</span>; <span style="color:#898887"># radius</span>
square <span style="color:#644a9b">@2</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Float64</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000">12.23e+2</span>; <span style="color:#898887"># width</span>
<span style="font-weight:bold">}</span>
address <span style="color:#0057ae">:</span><span style="color:#0057ae">group</span><span style="color:#0057ae"> </span><span style="font-weight:bold">{</span>
<span style="color:#898887"># Note: This is a terrible way to use groups, and meant</span>
<span style="color:#898887"># only to demonstrate the syntax.</span>
houseNumber <span style="color:#644a9b">@8</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">UInt32</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000;font-style:italic">0</span><span style="color:#b08000">123</span><span style="color:#bf0303;text-decoration:underline">8</span>;
city <span style="color:#644a9b">@10</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#bf0303">"abc</span><span style="color:#924c9d">\n</span><span style="color:#bf0303">def</span><span style="color:#bf0303;text-decoration:underline">\</span><span style="color:#bf0303">p</span><span style="color:#bf0303;text-decoration:underline">\xa</span><span style="color:#bf0303">x</span><span style="color:#924c9d">\xab</span><span style="color:#bf0303">c"</span>;
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">const</span> pi <span style="color:#0057ae">:</span><span style="color:#0057ae">Float32</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000">3.14159</span>;
<span style="font-weight:bold">const</span> foo <span style="color:#0057ae">:</span><span style="color:#0057ae">Int32</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000;font-style:italic">0x</span><span style="color:#b08000">123</span>;
<span style="font-weight:bold">const</span> bar <span style="color:#0057ae">:</span><span style="color:#0057ae">SomeStruct </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span>(<span style="color:#0057ae">id </span><span style="color:#0057ae">=</span><span style="color:#0057ae"> .foo</span>,<span style="color:#0057ae"> message </span><span style="color:#0057ae">=</span><span style="color:#0057ae"> .bar</span>);
<span style="font-weight:bold">interface</span> Directory <span style="font-weight:bold">extends</span>(Node) <span style="font-weight:bold">{</span>
list <span style="color:#644a9b">@0</span> () -> (list <span style="color:#0057ae">:</span><span style="color:#0057ae">List</span><span style="color:#0057ae">(Entry)</span>);
create <span style="color:#644a9b">@1</span> (name <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span>) -> (file <span style="color:#0057ae">:</span><span style="color:#0057ae">File</span>);
delete <span style="color:#644a9b">@4</span> (name <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span>);
link <span style="color:#644a9b">@5</span> (name <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span>, node <span style="color:#0057ae">:</span><span style="color:#0057ae">Node</span>);
read <span style="color:#644a9b">@1</span> (startAt <span style="color:#0057ae">:</span><span style="color:#0057ae">UInt64</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000">0</span>, amount <span style="color:#0057ae">:</span><span style="color:#0057ae">UInt64</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000;font-style:italic">0x</span><span style="color:#b08000">ffffffffffffffff</span>)
-> (data <span style="color:#0057ae">:</span><span style="color:#0057ae">Data</span>);
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">interface</span> Assignable(T) <span style="font-weight:bold">{</span>
<span style="color:#898887"># A generic interface, with non-generic methods.</span>
get <span style="color:#644a9b">@0</span> () -> (value <span style="color:#0057ae">:</span><span style="color:#0057ae">T</span>);
set <span style="color:#644a9b">@1</span> (value <span style="color:#0057ae">:</span><span style="color:#0057ae">T</span>) -> ();
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">interface</span> AssignableFactory <span style="font-weight:bold">{</span>
newAssignable <span style="color:#644a9b">@0</span> [T] (initialValue <span style="color:#0057ae">:</span><span style="color:#0057ae">T</span>)
-> (assignable <span style="color:#0057ae">:</span><span style="color:#0057ae">Assignable(T)</span>);
<span style="color:#898887"># A generic method.</span>
<span style="font-weight:bold">}</span>
newUnsetAssignable <span style="color:#644a9b">@1</span> [T] () -> (assignable <span style="color:#0057ae">:</span><span style="color:#0057ae">Assignable(T)</span>);
getNamedAssignable <span style="color:#644a9b">@2</span> (name <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span>) -> (assignable <span style="color:#0057ae">:</span><span style="color:#0057ae">Assignable</span>);
<span style="font-weight:bold">struct</span> Baz <span style="font-weight:bold">{</span>
bar <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Foo.Bar</span>;
<span style="font-weight:bold">using</span> Foo.Bar;
bar <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Bar</span>;
<span style="font-weight:bold">using</span> T <span style="color:#ca60ca">=</span><span style="color:#0057ae"> Foo.Bar</span>;
bar <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">T</span>;
baz <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">import </span><span style="color:#0057ae">"</span><span style="color:#0057ae">bar.capnp</span><span style="color:#0057ae">"</span><span style="color:#0057ae">.Baz</span>;
<span style="color:#898887"># Use type "Baz" defined in bar.capnp.</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">using</span> Bar <span style="color:#ca60ca">=</span><span style="color:#0057ae"> import </span><span style="color:#bf0303">"bar.capnp"</span>;
<span style="font-weight:bold">using</span> <span style="font-weight:bold">import</span> "bar.capnp".Baz;
<span style="font-weight:bold">annotation</span> foo(<span style="font-weight:bold">struct</span>, <span style="font-weight:bold">enum</span>) <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span>;
<span style="color:#898887"># Declare an annotation 'foo' which applies to struct and enum types.</span>
<span style="font-weight:bold">struct</span> MyType <span style="color:#b08000">$</span><span style="color:#b08000">foo(</span><span style="color:#b08000">"</span><span style="color:#b08000">bar</span><span style="color:#b08000">"</span><span style="color:#b08000">) </span><span style="font-weight:bold">{</span>
<span style="color:#898887"># ...</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">annotation</span> baz(*) <span style="color:#0057ae">:</span><span style="color:#0057ae">Int32</span>;
<span style="font-weight:bold">annotation</span> myAnnotation(<span style="font-weight:bold">struct</span>) <span style="color:#0057ae">:</span><span style="color:#0057ae">Int32</span><span style="color:#0057ae"> </span><span style="color:#b08000">$</span><span style="color:#b08000">baz(10)</span>;
<span style="color:#b08000">$</span><span style="color:#b08000">baz(1)</span>; <span style="color:#898887"># Annotate the file.</span>
<span style="font-weight:bold">struct</span> MyStruct <span style="color:#b08000">$</span><span style="color:#b08000">baz(2) </span><span style="font-weight:bold">{</span>
myField <span style="color:#644a9b">@0</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#bf0303">"default"</span><span style="color:#0057ae"> </span><span style="color:#b08000">$</span><span style="color:#b08000">baz(3)</span>;
number <span style="color:#644a9b">@1</span> <span style="color:#0057ae">:</span><span style="color:#0057ae">Int32</span><span style="color:#0057ae"> </span><span style="color:#b08000">$</span><span style="color:#b08000">qux</span>;
myUnion <span style="color:#0057ae">:</span><span style="color:#0057ae">union</span><span style="color:#0057ae"> </span><span style="color:#b08000">$</span><span style="color:#b08000">baz(4) </span><span style="font-weight:bold">{</span>
<span style="color:#898887"># ...</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">interface</span> MyInterface <span style="color:#b08000">$</span><span style="color:#b08000">baz(7) </span><span style="font-weight:bold">{</span>
myMethod <span style="color:#644a9b">@0</span> (myParam <span style="color:#0057ae">:</span><span style="color:#0057ae">Text</span><span style="color:#0057ae"> </span><span style="color:#b08000">$</span><span style="color:#b08000">baz(9)</span>) -> () <span style="color:#b08000">$</span><span style="color:#b08000">baz(8)</span>;
<span style="font-weight:bold">}</span>
<span style="font-weight:bold">const</span> myConst <span style="color:#0057ae">:</span><span style="color:#0057ae">Int32</span><span style="color:#0057ae"> </span><span style="color:#ca60ca">=</span><span style="color:#0057ae"> </span><span style="color:#b08000">123</span><span style="color:#0057ae"> </span><span style="color:#b08000">$</span><span style="color:#b08000">baz(11)</span>;
<span style="color:#b08000">$</span><span style="color:#b08000">corge(string = </span><span style="color:#b08000">"</span><span style="color:#b08000">hello</span><span style="color:#b08000">"</span><span style="color:#b08000">, number = 123)</span>;
<span style="color:#b08000">$</span><span style="color:#b08000">grault()</span>; <span style="color:#898887"># value defaults to 123</span>
</pre></body></html>
|