summaryrefslogtreecommitdiff
path: root/vere/pkg/noun/jets/k.h
blob: 27733fb5e036045a1889bf84d47572fcb4eef163 (plain)
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
/// @file

#ifndef U3_JETS_K_H
#define U3_JETS_K_H

#include "types.h"

  /** Tier 1.
  **/
    u3_noun u3ka_add(u3_noun a, u3_noun b);
    u3_noun u3ka_dec(u3_atom a);
    u3_noun u3ka_div(u3_noun a, u3_noun b);
    u3_noun u3ka_sub(u3_noun a, u3_noun b);
    u3_noun u3ka_max(u3_noun a, u3_noun b);
    u3_noun u3ka_min(u3_noun a, u3_noun b);
    u3_noun u3ka_mod(u3_noun a, u3_noun b);
    u3_noun u3ka_mul(u3_noun a, u3_noun b);
    u3_noun u3ka_gth(u3_noun a, u3_noun b);
    u3_noun u3ka_lte(u3_noun a, u3_noun b);

  /** Tier 2.
  **/
    u3_noun u3kb_lent(u3_noun a);
    u3_noun u3kb_weld(u3_noun a, u3_noun b);
    u3_noun u3kb_flop(u3_noun a);

/* u3kc: tier 3 functions
*/
  /* u3kc_bex(): binary exponent.
  */
    u3_noun
    u3kc_bex(u3_atom);

  /* u3kc_con(): binary loobean conjunction.
  */
    u3_noun
    u3kc_con(u3_noun a,
             u3_noun b);

  /* u3kc_mix(): binary xor.
  */
    u3_noun
    u3kc_mix(u3_atom a, u3_atom b);

  /* u3kc_lsh(): left shift.
  */
    u3_noun
    u3kc_lsh(u3_noun a, u3_noun b, u3_noun c);

  /* u3kc_rsh(): right shift.
  */
    u3_noun
    u3kc_rsh(u3_noun a, u3_noun b, u3_noun c);

  /* u3kc_rep(): assemble single.
  */
    u3_noun
    u3kc_rep(u3_atom a,
             u3_atom b,
             u3_noun c);

  /* u3kc_rip(): disassemble.
  */
    u3_noun
    u3kc_rip(u3_atom a,
             u3_atom b,
             u3_atom c);

  /* u3kc_rev(): reverse block order, accounting for leading zeroes.
  */
    u3_noun
    u3kc_rev(u3_atom boz, u3_atom len, u3_atom dat);

  /* u3kc_swp(): reverse block order.
  */
    u3_noun
    u3kc_swp(u3_atom a, u3_atom b);

/* u3kd: tier 4 functions
*/
  /* u3kdb_get(): map get for key `b` in map `a` with u3_none.
  */
    u3_weak
    u3kdb_get(u3_noun a, u3_noun b);

  /* u3kdb_got(): map get for key `b` in map `a` with bail.
  */
    u3_noun
    u3kdb_got(u3_noun a, u3_noun b);

  /* u3kdb_put(): map put for key `b`, value `c` in map `a`.
  */
    u3_weak
    u3kdb_put(u3_noun a, u3_noun b, u3_noun c);

  /* u3kdb_del(): map del for key `b`
  */
    u3_weak
    u3kdb_del(u3_noun a, u3_noun b);

  /* u3kdb_has(): test for get.
  */
    u3_noun
    u3kdb_has(u3_noun a, u3_noun b);

  /* u3kdb_gas(): list to map.
  */
    u3_noun
    u3kdb_gas(u3_noun a, u3_noun b);

  /* u3kdb_uni(): map union.
  */
    u3_noun
    u3kdb_uni(u3_noun a, u3_noun b);

  /* u3kdi_gas(): list to map.
  */
    u3_noun
    u3kdi_gas(u3_noun a, u3_noun b);

  /* u3kdi_has(): test for presence.
  */
    u3_noun
    u3kdi_has(u3_noun a, u3_noun b);

  /* u3kdi_tap(): map/set convert to list.  (solves by_tap also.)
  */
    u3_noun
    u3kdi_tap(u3_noun a);

  /* u3kdi_put(): put in set.
  */
    u3_weak
    u3kdi_put(u3_noun a, u3_noun b);

  /* u3kdi_uni(): set union.
  */
    u3_noun
    u3kdi_uni(u3_noun a, u3_noun b);

#   define u3kdb_tap(a) u3kdi_tap(a)

/* u3ke: tier 5 functions
*/
  /* u3ke_cue(): expand saved pill.
  */
    u3_noun
    u3ke_cue(u3_atom a);

  /* u3ke_jam(): pack noun as atom.
  */
    u3_atom
    u3ke_jam(u3_noun a);

  /* u3ke_trip(): atom to tape.
  */
    u3_noun
    u3ke_trip(u3_noun a);

  /* u3ke_json_de(): parse JSON from cord.
  */
    u3_noun
    u3ke_json_de(u3_atom);

  /* u3ke_json_en(): serialize JSON to cord.
  */
    u3_atom
    u3ke_json_en(u3_noun);

  /* u3kf_fork(): build %fork span.
  */
    u3_noun
    u3kf_fork(u3_noun yed);

  /* u3kz_fork(): build %fork span.
  */
    u3_noun
    u3kz_fork(u3_noun yed);

  /* u3kfu_repo():
  */
    u3_noun
    u3kfu_repo(u3_noun, u3_noun);

#endif /* ifndef U3_JETS_K_H */