root/trunk/orca/boot.c

Revision 384, 12.5 kB (checked in by krobillard, 1 year ago)

Orca - Windows read directory now filters "." & "..".

Line 
1 // Automatically created by boot.r
2
3 static char _natives[] =
4   "sizeof: native []\n"
5   "comment: native [value]\n"
6   "set: native [\n"
7   "    word\n"
8   "    value\n"
9   "]\n"
10   "unset: native [\n"
11   "    word [word! block!]\n"
12   "]\n"
13   "value?: native [val]\n"
14   "any-word?: native [val]\n"
15   "get: native [\n"
16   "    word\n"
17   "]\n"
18   "do: native [\n"
19   "    \"Evaluates a block or any other value.\"\n"
20   "    value\n"
21   "    /args arg\n"
22   "]\n"
23   "make: native [\n"
24   "    \"Construct new value\"\n"
25   "    type\n"
26   "    spec\n"
27   "]\n"
28   "bind: native [\n"
29   "    words [block! word!]\n"
30   "    known-word [word! object!]\n"
31   "    /copy\n"
32   "]\n"
33   "in: native [\n"
34   "    object [object!]\n"
35   "    word [word!]\n"
36   "]\n"
37   "use: native [\n"
38   "    words [block! word!]\n"
39   "    body [block!]\n"
40   "]\n"
41   "copy: native [\n"
42   "    value [series! bitset! matrix!]\n"
43   "    /part\n"
44   "    range [integer! series!]\n"
45   "    /deep\n"
46   "]\n"
47   "change: native [\n"
48   "    series [series!]\n"
49   "    value\n"
50   "    /part\n"
51   "    range [integer! series!]\n"
52   "    /only\n"
53   "]\n"
54   "find: native [\n"
55   "    series [series!]\n"
56   "    value\n"
57   "    /match\n"
58   "    /last\n"
59   "    /skip size [integer!]\n"
60   "]\n"
61   "reduce: native [\n"
62   "    value\n"
63   "]\n"
64   "compose: native [\n"
65   "    value\n"
66   "    /deep\n"
67   "    /only\n"
68   "]\n"
69   "form: native [\n"
70   "    value\n"
71   "]\n"
72   "mold: native [\n"
73   "    value\n"
74   "    /only\n"
75   "]\n"
76   "not: native [value]\n"
77   "print: native [value]\n"
78   "prin: native [value]\n"
79   "clear: native [\n"
80   "    series [series! none!]\n"
81   "]\n"
82   "skip: native [\n"
83   "    series [series!]\n"
84   "    offset [number! logic!]\n"
85   "]\n"
86   "at: native [\n"
87   "    series [series!]\n"
88   "    index [number! logic!]\n"
89   "]\n"
90   "pick: native [\n"
91   "    series [series! tuple! matrix!]\n"
92   "    index [number! logic!]\n"
93   "]\n"
94   "poke: native [\n"
95   "    value\n"
96   "    index [number! logic!]\n"
97   "    data\n"
98   "]\n"
99   "select: native [\n"
100   "    series [series!]\n"
101   "    value\n"
102   "]\n"
103   "first: native [value]\n"
104   "second: native [value]\n"
105   "third: native [value]\n"
106   "last: native [value [series! tuple!]]\n"
107   "reverse: native [\n"
108   "    value [series! tuple! pair!]\n"
109   "    /part\n"
110   "    range [integer! series!]\n"
111   "]\n"
112   "parse: native [\n"
113   "    input [series!]\n"
114   "    rules [block! string! none!]\n"
115   "    /all\n"
116   "    /case\n"
117   "]\n"
118   "type?: native [value /word]\n"
119   "length?: native [value [series! tuple!]]\n"
120   "any-string?: native [value]\n"
121   "any-block?: native [value]\n"
122   "binary?:\n"
123   "bitset?:\n"
124   "block?:\n"
125   "char?:\n"
126   "datatype?:\n"
127   "decimal?:\n"
128   "error?:\n"
129   "file?:\n"
130   "function?:\n"
131   "getword?:\n"
132   "hash?:\n"
133   "integer?:\n"
134   "issue?:\n"
135   "list?:\n"
136   "litpath?:\n"
137   "litword?:\n"
138   "logic?:\n"
139   "native?:\n"
140   "none?:\n"
141   "number?:\n"
142   "object?:\n"
143   "op?:\n"
144   "pair?:\n"
145   "paren?:\n"
146   "path?:\n"
147   "refinement?:\n"
148   "series?:\n"
149   "setpath?:\n"
150   "setword?:\n"
151   "string?:\n"
152   "tag?:\n"
153   "time?:\n"
154   "tuple?:\n"
155   "unset?:\n"
156   "word?: native [value]\n"
157   "to: native [\n"
158   "    type\n"
159   "    value\n"
160   "]\n"
161   "disarm: native [error [error!]]\n"
162   "try: native [block [block!]]\n"
163   "catch: native [\n"
164   "    block [block!]\n"
165   "    /name word [word!]\n"
166   "]\n"
167   "throw: native [value /name word [word!]]\n"
168   "does: native [value]\n"
169   "func: native [\n"
170   "    spec [block!]\n"
171   "    body [block!]\n"
172   "]\n"
173   "if: native [\n"
174   "    condition\n"
175   "    then-block [block!]\n"
176   "]\n"
177   "unless: native [\n"
178   "    condition\n"
179   "    then-block [block!]\n"
180   "]\n"
181   "either: native [\n"
182   "    condition\n"
183   "    then-block [block!]\n"
184   "    else-block [block!]\n"
185   "]\n"
186   "any: native [\n"
187   "    block [block!]\n"
188   "]\n"
189   "all: native [\n"
190   "    block [block!]\n"
191   "]\n"
192   "loop: native [\n"
193   "    count [integer!]\n"
194   "    block [block!]\n"
195   "]\n"
196   "repeat: native [\n"
197   "    'word [word!]\n"
198   "    value [integer! series!]\n"
199   "    block [block!]\n"
200   "]\n"
201   "foreach: native [\n"
202   "    'word [word! block!]\n"
203   "    data [series!]\n"
204   "    body [block!]\n"
205   "]\n"
206   "remove-each: native [\n"
207   "    'word [word! block!]\n"
208   "    data [series!]\n"
209   "    body [block!]\n"
210   "]\n"
211   "while: native [\n"
212   "    cond [block!]\n"
213   "    body [block!]\n"
214   "]\n"
215   "until: native [\n"
216   "    cond [block!]\n"
217   "]\n"
218   "break: native [\n"
219   "    /return\n"
220   "    value\n"
221   "]\n"
222   "return: native [\n"
223   "    value\n"
224   "]\n"
225   "exit: native []\n"
226   "back: native [\n"
227   "    series [series!]\n"
228   "]\n"
229   "next: native [\n"
230   "    series [series!]\n"
231   "]\n"
232   "head: native [\n"
233   "    series [series!]\n"
234   "]\n"
235   "tail: native [\n"
236   "    series [series!]\n"
237   "]\n"
238   "index?: native [\n"
239   "    series [series!]\n"
240   "]\n"
241   "head?: native [\n"
242   "    series [series!]\n"
243   "]\n"
244   "tail?: native [\n"
245   "    series [series!]\n"
246   "]\n"
247   "insert: native [\n"
248   "    series [series!]\n"
249   "    value\n"
250   "    /part\n"
251   "    range [integer! series!]\n"
252   "    /only\n"
253   "]\n"
254   "remove: native [\n"
255   "    series [series! none!]\n"
256   "    /part\n"
257   "    range [integer! series! pair!]\n"
258   "]\n"
259   "lowercase: native [\n"
260   "    string [string! file!]\n"
261   "    /part range [integer!]\n"
262   "]\n"
263   "uppercase: native [\n"
264   "    string [string! file!]\n"
265   "    /part range [integer!]\n"
266   "]\n"
267   "load: native [\n"
268   "    source [file! string!]\n"
269   "]\n"
270   "open: native [what]\n"
271   "close: native [port [port!]]\n"
272   "read: native [\n"
273   "    source [file! port!]\n"
274   "    /binary\n"
275   "    /lines\n"
276   "    /skip length [number!]\n"
277   "    /part size [number!]\n"
278   "]\n"
279   "write: native [\n"
280   "    dest [file! port! object! block!]\n"
281   "    value\n"
282   "    /binary\n"
283   "    /append\n"
284   "]\n"
285   "rename: native [\n"
286   "    old [file!]\n"
287   "    new [file! string!]\n"
288   "]\n"
289   "delete: native [\n"
290   "    what [file!]\n"
291   "]\n"
292   "exists?: native [\n"
293   "    target [file!]\n"
294   "]\n"
295   "size?: native [\n"
296   "    target [file!]\n"
297   "]\n"
298   "dir?: native [\n"
299   "    target [file!]\n"
300   "]\n"
301   "modified?: native [\n"
302   "    target [file!]\n"
303   "]\n"
304   "getenv: native [name [string!]]\n"
305   "change-dir: native [value]\n"
306   "what-dir: native []\n"
307   "make-dir: native [path [file!]]\n"
308   "clean-path: native [path [file!]]\n"
309   "recycle: native [/off /on]\n"
310   "halt: native []\n"
311   "quit: native [/return code]\n"
312   "protect: native [\n"
313   "    value [word! block!]\n"
314   "]\n"
315   "now: native [\n"
316   "    /time\n"
317   "]\n"
318   "trim: native [\n"
319   "    string [string! series!]\n"
320   "    /auto\n"
321   "    /head\n"
322   "    /tail\n"
323   "]\n"
324   "dump: native [val]\n"
325   "same?: native [v1 v2]\n"
326   "equal?: native [v1 v2]\n"
327   "strict-equal?: native [v1 v2]\n"
328   "greater-or-equal?: native [v1 v2]\n"
329   "greater?: native [v1 v2]\n"
330   "lesser-or-equal?: native [v1 v2]\n"
331   "lesser?: native [v1 v2]\n"
332   "odd?: native [number [number! char!]]\n"
333   "even?: native [number [number! char!]]\n"
334   "abs: native [number [number! pair!]]\n"
335   "complement: native [value [logic! integer! bitset!]]\n"
336   "negate: native [number [number! pair! bitset! vec3!]]\n"
337   "sine: native [value [number!] /radians]\n"
338   "cosine: native [value [number!] /radians]\n"
339   "arcsine: native [value [number!] /radians]\n"
340   "arccosine: native [value [number!] /radians]\n"
341   "tangent: native [value [number!] /radians]\n"
342   "arctangent: native [value [number!] /radians]\n"
343   "square-root: native [value [number!]]\n"
344   "random: native [value /seed /only]\n"
345   "power: native [x [number!] y [number!]]\n"
346   "remainder: native [\n"
347   "    x [number!]\n"
348   "    y [number!]\n"
349   "]\n"
350   "compress: native [data [string! binary!]]\n"
351   "decompress: native [data [binary!]]\n"
352   "dot: native [a [vec3!] b [vec3!]]\n"
353   "cross: native [a [vec3!] b [vec3!]]\n"
354   "normalize: native [vec [vec3!]]\n"
355 ;
356
357 static char _boot[] =
358   "context: func [blk [block!]] [make object! blk]\n"
359   "probe: func [value] [print mold :value :value]\n"
360   "source: func ['word] [\n"
361   "    prin rejoin [word \": \"]\n"
362   "    either function? get word [\n"
363   "        print mold get word\n"
364   "    ] [\n"
365   "        either native? get word\n"
366   "        [print mold get word]\n"
367   "        [print \"is not a function\"]\n"
368   "    ]\n"
369   "]\n"
370   "function: func [\n"
371   "    spec [block!]\n"
372   "    vars [block!]\n"
373   "    body [block!]\n"
374   "] [\n"
375   "    func head insert insert tail copy spec /local vars body\n"
376   "]\n"
377   "true: yes: on: make logic! 1\n"
378   "false: no: off: make logic! 0\n"
379   "newline: #\"^/\"\n"
380   "empty?: :tail?\n"
381   "q: :quit\n"
382   "orca: true\n"
383   "system: context [\n"
384   "    version: 0.0.23\n"
385   "    os: none\n"
386   "    error: context [\n"
387   "        msg: type: id: near: none\n"
388   "    ]\n"
389   "    error-types: ['syntax 'script 'math 'access 'internal]\n"
390   "    words: none\n"
391   "    script-proto: context [\n"
392   "        args:\n"
393   "        path:\n"
394   "        parent:\n"
395   "        header: none\n"
396   "    ]\n"
397   "    script: none\n"
398   "]\n"
399   "protect 'system\n"
400   "protect 'datatypes\n"
401   "to-binary: func [value] [to binary! :value]\n"
402   "to-bitset: func [value] [to bitset! :value]\n"
403   "to-block: func [value] [to block! :value]\n"
404   "to-char: func [value] [to char! :value]\n"
405   "to-decimal: func [value] [to decimal! :value]\n"
406   "to-file: func [value] [to file! :value]\n"
407   "to-get-word: func [value] [to get-word! :value]\n"
408   "to-integer: func [value] [to integer! :value]\n"
409   "to-issue: func [value] [to issue! :value]\n"
410   "to-lit-path: func [value] [to lit-path! :value]\n"
411   "to-lit-word: func [value] [to lit-word! :value]\n"
412   "to-logic: func [value] [to logic! :value]\n"
413   "to-paren: func [value] [to paren! :value]\n"
414   "to-path: func [value] [to path! :value]\n"
415   "to-refinement: func [value] [to refinement! :value]\n"
416   "to-set-path: func [value] [to set-path! :value]\n"
417   "to-set-word: func [value] [to set-word! :value]\n"
418   "to-string: func [value] [to string! :value]\n"
419   "to-tag: func [value] [to tag! :value]\n"
420   "to-time: func [value] [to time! :value]\n"
421   "to-tuple: func [value] [to tuple! :value]\n"
422   "to-word: func [value] [to word! :value]\n"
423   "charset: func [str [string! block!]] [make bitset! str]\n"
424   "append: func [\n"
425   "    series [series!]\n"
426   "    value\n"
427   "    /only\n"
428   "] [\n"
429   "    head either only\n"
430   "    [insert/only tail series :value]\n"
431   "    [insert tail series :value]\n"
432   "]\n"
433   "rejoin: func [\n"
434   "    block [block!]\n"
435   "] [\n"
436   "    if empty? block: reduce block [return block]\n"
437   "    append either series? first block\n"
438   "    [copy first block]\n"
439   "    [form first block]\n"
440   "    next block\n"
441   "]\n"
442   "replace: func [\n"
443   "    series [series!]\n"
444   "    pattern\n"
445   "    with\n"
446   "    /all\n"
447   "    /local orig len\n"
448   "] [\n"
449   "    orig: series\n"
450   "    if (any-string? series) and any [not any-string? :pattern tag? :pattern] [\n"
451   "        pattern: form :pattern\n"
452   "    ]\n"
453   "    len: either any [any-string? series any-block? :pattern]\n"
454   "    [length? :pattern]\n"
455   "    [1]\n"
456   "    while [series: find series :pattern] [\n"
457   "        series: change/part series :with len\n"
458   "        if not all [break]\n"
459   "    ]\n"
460   "    orig\n"
461   "]\n"
462   "forall: func [\n"
463   "    [throw]\n"
464   "    'word [word!]\n"
465   "    body [block!]\n"
466   "] [\n"
467   "    while [not tail? get word] [\n"
468   "        do body\n"
469   "        set word next get word\n"
470   "    ]\n"
471   "]\n"
472   "switch: func [\n"
473   "    [throw]\n"
474   "    value\n"
475   "    options [block!]\n"
476   "    /default else\n"
477   "] [\n"
478   "    either value: select options value\n"
479   "    [do value]\n"
480   "    [either default [do else] [none]]\n"
481   "]\n"
482   "forever: func [\n"
483   "    [throw]\n"
484   "    body [block!]\n"
485   "] [\n"
486   "    while [1] body\n"
487   "]\n"
488   "forskip: func [\n"
489   "    [throw]\n"
490   "    'iter [word!]\n"
491   "    mod [integer!]\n"
492   "    body [block!]\n"
493   "] [\n"
494   "    while [not tail? get iter] [\n"
495   "        do body\n"
496   "        set iter skip get iter mod\n"
497   "    ]\n"
498   "]\n"
499   "join: func [a b] [\n"
500   "    a: either series? a [copy a] [form a]\n"
501   "    head insert tail a reduce :b\n"
502   "]\n"
503   "reform: func [value] [\n"
504   "    form reduce value\n"
505   "]\n"
506   "repend: func [\n"
507   "    series [series!]\n"
508   "    value\n"
509   "    /only\n"
510   "] [\n"
511   "    head either only\n"
512   "    [insert/only tail series reduce :value]\n"
513   "    [insert tail series reduce :value]\n"
514   "]\n"
515   "save: func [\n"
516   "    file [file!]\n"
517   "    data\n"
518   "] [\n"
519   "    write file mold/only data\n"
520   "]\n"
521   "dirize: func [path [file! string!] /local end]\n"
522   "[\n"
523   "    end: last path\n"
524   "    either all [\n"
525   "        end <> #\"/\"\n"
526   "        end <> #\"\\\"\n"
527   "    ] [append path #\"/\"] [path]\n"
528   "]\n"
529   "time-block: func [blk /local a b] [a: now/time do blk b: now/time b - a]\n"
530 ;
531
Note: See TracBrowser for help on using the browser.