tagged release 0.6.4
[parrot.git] / include / parrot / key.h
blob608112de8b9fe4775f9c10b84c2ebe60652bdad8
1 /* key.h
2 * Copyright (C) 2001-2007, The Perl Foundation.
3 * SVN Info
4 * $Id$
5 * Overview:
6 * This is the API header for the PMC subsystem
7 * Data Structure and Algorithms:
8 * History:
9 * Notes:
10 * References:
13 #ifndef PARROT_KEY_H_GUARD
14 #define PARROT_KEY_H_GUARD
16 #include "parrot/parrot.h"
18 typedef enum {
19 KEY_integer_FLAG = PObj_private0_FLAG,
20 KEY_number_FLAG = PObj_private1_FLAG,
21 KEY_hash_iterator_FLAGS = PObj_private0_FLAG | PObj_private1_FLAG,
22 KEY_string_FLAG = PObj_private2_FLAG,
23 KEY_pmc_FLAG = PObj_private3_FLAG,
24 KEY_register_FLAG = PObj_private4_FLAG,
26 KEY_start_slice_FLAG = PObj_private5_FLAG,
27 KEY_end_slice_FLAG = PObj_private6_FLAG,
28 KEY_inf_slice_FLAG = PObj_private7_FLAG,
30 KEY_type_FLAGS = KEY_integer_FLAG |
31 KEY_number_FLAG |
32 KEY_string_FLAG |
33 KEY_pmc_FLAG |
34 KEY_register_FLAG |
35 KEY_hash_iterator_FLAGS
37 } KEY_flags;
39 #define KEY_IS_HASH_ITERATOR(k) \
40 ((PObj_get_FLAGS((k)) & KEY_type_FLAGS) == KEY_hash_iterator_FLAGS)
42 /* HEADERIZER BEGIN: src/key.c */
43 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
45 PARROT_API
46 PARROT_CANNOT_RETURN_NULL
47 PARROT_IGNORABLE_RESULT
48 PMC * key_append(SHIM_INTERP, ARGMOD(PMC *key1), ARGIN(PMC *key2))
49 __attribute__nonnull__(2)
50 __attribute__nonnull__(3)
51 FUNC_MODIFIES(*key1);
53 PARROT_API
54 PARROT_WARN_UNUSED_RESULT
55 INTVAL key_integer(PARROT_INTERP, ARGIN(PMC *key))
56 __attribute__nonnull__(1)
57 __attribute__nonnull__(2);
59 PARROT_API
60 void key_mark(PARROT_INTERP, ARGIN(PMC *key))
61 __attribute__nonnull__(1)
62 __attribute__nonnull__(2);
64 PARROT_API
65 PARROT_CANNOT_RETURN_NULL
66 PARROT_WARN_UNUSED_RESULT
67 PMC * key_new(PARROT_INTERP)
68 __attribute__nonnull__(1);
70 PARROT_API
71 PARROT_CANNOT_RETURN_NULL
72 PARROT_WARN_UNUSED_RESULT
73 PMC * key_new_cstring(PARROT_INTERP, ARGIN_NULLOK(const char *value))
74 __attribute__nonnull__(1);
76 PARROT_API
77 PARROT_CANNOT_RETURN_NULL
78 PARROT_WARN_UNUSED_RESULT
79 PMC * key_new_integer(PARROT_INTERP, INTVAL value)
80 __attribute__nonnull__(1);
82 PARROT_API
83 PARROT_CANNOT_RETURN_NULL
84 PARROT_WARN_UNUSED_RESULT
85 PMC * key_new_number(PARROT_INTERP, FLOATVAL value)
86 __attribute__nonnull__(1);
88 PARROT_API
89 PARROT_CANNOT_RETURN_NULL
90 PARROT_WARN_UNUSED_RESULT
91 PMC * key_new_pmc(PARROT_INTERP, ARGIN(PMC *value))
92 __attribute__nonnull__(1)
93 __attribute__nonnull__(2);
95 PARROT_API
96 PARROT_CANNOT_RETURN_NULL
97 PARROT_WARN_UNUSED_RESULT
98 PMC * key_new_string(PARROT_INTERP, ARGIN(STRING *value))
99 __attribute__nonnull__(1)
100 __attribute__nonnull__(2);
102 PARROT_API
103 PARROT_CAN_RETURN_NULL
104 PARROT_WARN_UNUSED_RESULT
105 PMC * key_next(PARROT_INTERP, ARGIN(PMC *key))
106 __attribute__nonnull__(1)
107 __attribute__nonnull__(2);
109 PARROT_API
110 PARROT_WARN_UNUSED_RESULT
111 FLOATVAL key_number(PARROT_INTERP, ARGIN(PMC *key))
112 __attribute__nonnull__(1)
113 __attribute__nonnull__(2);
115 PARROT_API
116 PARROT_CANNOT_RETURN_NULL
117 PARROT_WARN_UNUSED_RESULT
118 PMC * key_pmc(PARROT_INTERP, ARGIN(PMC *key))
119 __attribute__nonnull__(1)
120 __attribute__nonnull__(2);
122 PARROT_API
123 void key_set_integer(SHIM_INTERP, ARGMOD(PMC *key), INTVAL value)
124 __attribute__nonnull__(2)
125 FUNC_MODIFIES(*key);
127 PARROT_API
128 void key_set_number(SHIM_INTERP, ARGMOD(PMC *key), FLOATVAL value)
129 __attribute__nonnull__(2)
130 FUNC_MODIFIES(*key);
132 PARROT_API
133 void key_set_pmc(PARROT_INTERP, ARGMOD(PMC *key), ARGIN(PMC *value))
134 __attribute__nonnull__(1)
135 __attribute__nonnull__(2)
136 __attribute__nonnull__(3)
137 FUNC_MODIFIES(*key);
139 PARROT_API
140 void key_set_register(SHIM_INTERP,
141 ARGMOD(PMC *key),
142 INTVAL value,
143 INTVAL flag)
144 __attribute__nonnull__(2)
145 FUNC_MODIFIES(*key);
147 PARROT_API
148 void key_set_string(SHIM_INTERP, ARGMOD(PMC *key), ARGIN(STRING *value))
149 __attribute__nonnull__(2)
150 __attribute__nonnull__(3)
151 FUNC_MODIFIES(*key);
153 PARROT_API
154 PARROT_CANNOT_RETURN_NULL
155 PARROT_WARN_UNUSED_RESULT
156 STRING * key_set_to_string(PARROT_INTERP, ARGIN_NULLOK(PMC *key))
157 __attribute__nonnull__(1);
159 PARROT_API
160 PARROT_WARN_UNUSED_RESULT
161 PARROT_CANNOT_RETURN_NULL
162 STRING * key_string(PARROT_INTERP, ARGIN(PMC *key))
163 __attribute__nonnull__(1)
164 __attribute__nonnull__(2);
166 PARROT_API
167 PARROT_WARN_UNUSED_RESULT
168 INTVAL key_type(SHIM_INTERP, ARGIN(const PMC *key))
169 __attribute__nonnull__(2);
171 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
172 /* HEADERIZER END: src/key.c */
174 #endif /* PARROT_KEY_H_GUARD */
177 * Local variables:
178 * c-file-style: "parrot"
179 * End:
180 * vim: expandtab shiftwidth=4: