File: test.capnp.html

package info (click to toggle)
kf6-syntax-highlighting 6.18.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 49,060 kB
  • sloc: xml: 203,100; cpp: 12,878; python: 3,055; sh: 965; perl: 814; ruby: 494; pascal: 393; javascript: 161; php: 150; jsp: 132; lisp: 131; haskell: 124; ada: 119; ansic: 107; makefile: 96; f90: 94; ml: 85; cobol: 81; yacc: 71; csh: 62; exp: 61; erlang: 54; sql: 51; java: 47; sed: 45; objc: 37; tcl: 36; awk: 31; asm: 30; fortran: 18; cs: 10
file content (121 lines) | stat: -rw-r--r-- 15,643 bytes parent folder | download
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>