Mercurial > repos > rhope
annotate runtime/blueprint.c @ 52:079200bc3e75
String literals almost working. Print moved out of C runtime.
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 28 Apr 2010 01:23:30 -0400 |
parents | 3e20ed8959c4 |
children | d4b44ae2e34a |
rev | line source |
---|---|
39 | 1 #include "blueprint.h" |
2 #include "builtin.h" | |
49
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
3 #include "context.h" |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
4 #include <stddef.h> |
39 | 5 |
6 typedef struct | |
7 { | |
8 blueprint * bp; | |
9 } l_Build; | |
10 | |
11 Func(Build, | |
12 NumParams 1, | |
13 CallSpace 1, | |
14 l_Build) | |
15 | |
16 Param(0, TYPE_BLUEPRINT) | |
17 | |
18 locals->bp = ((t_Blueprint *)(cdata->params[0]))->bp; | |
19 release_ref(cdata->params[0]); | |
20 | |
21 Ret(0, new_object_bp(locals->bp)) | |
49
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
22 EndFunc |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
23 |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
24 Func(BlueprintSP_Of, |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
25 NumParams 1, |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
26 CallSpace 1, |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
27 l_Build) |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
28 |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
29 locals->bp = get_blueprint(cdata->params[0]); |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
30 release_ref(cdata->params[0]); |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
31 |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
32 Ret(0, new_object(TYPE_BLUEPRINT)) |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
33 ((t_Blueprint *)cdata->params[0])->bp = locals->bp; |
39 | 34 EndFunc |
35 | |
36 object * make_Blueprint(int32_t type_id) | |
37 { | |
38 t_Blueprint * obj; | |
39 object * ret = new_object(TYPE_BLUEPRINT); | |
40 obj = (t_Blueprint *)ret; | |
49
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
41 obj->bp = type_id ? get_blueprint_byid(type_id) : NULL; |
39 | 42 return ret; |
49
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
43 } |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
44 |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
45 int32_t _internal_blueprint_eq(object * left, object * right) |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
46 { |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
47 t_Blueprint * l = (t_Blueprint *)left; |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
48 t_Blueprint * r = (t_Blueprint *)right; |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
49 return l->bp == r->bp; |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
50 } |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
51 |
3e20ed8959c4
Added initial FFI implementation, Array type and 64-bit integers
Mike Pavone <pavone@retrodev.com>
parents:
39
diff
changeset
|
52 |