File: clib.fs

package info (click to toggle)
openbios-sparc 1.0%2Bsvn640-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 4,412 kB
  • ctags: 12,091
  • sloc: ansic: 57,249; asm: 2,680; xml: 1,335; cpp: 414; makefile: 224; sh: 190
file content (36 lines) | stat: -rw-r--r-- 813 bytes parent folder | download | duplicates (17)
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
\ tag: C helpers
\ 
\ Misc C helpers
\ 
\ Copyright (C) 2003, 2004 Samuel Rydh
\ 
\ See the file "COPYING" for further information about
\ the copyright and warranty status of this work.
\ 

\ should perhaps be moved somewhere else
: set-property ( buf len propname propname-len phandle -- )
	>r 2swap encode-bytes 2swap r> encode-property
;

\ install C function
: is-cfunc ( funcaddr word word-len -- )
  $create , does> @ call
;

\ install a nameless C function
: is-noname-cfunc ( funcaddr -- xt )
  0 0 is-cfunc last-xt
;

\ is-xt-cfunc installs a function which does the following:
\   - xt is executes
\   - funcarg is pushed
\   - funcaddr is called

: is-xt-cfunc ( xt|0 funcarg funcaddr word word-len -- )
	is-func-begin
  rot ?dup if , then
  swap ['] (lit) , , ['] (lit) , , ['] call ,
	is-func-end
;