2 * Copyright (C) 2001-2007, The Perl Foundation.
6 * This is the API header for the PMC subsystem
7 * Data Structure and Algorithms:
13 #ifndef PARROT_KEY_H_GUARD
14 #define PARROT_KEY_H_GUARD
16 #include "parrot/parrot.h"
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
|
35 KEY_hash_iterator_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. */
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)
54 PARROT_WARN_UNUSED_RESULT
55 INTVAL
key_integer(PARROT_INTERP
, ARGIN(PMC
*key
))
56 __attribute__nonnull__(1)
57 __attribute__nonnull__(2);
60 void key_mark(PARROT_INTERP
, ARGIN(PMC
*key
))
61 __attribute__nonnull__(1)
62 __attribute__nonnull__(2);
65 PARROT_CANNOT_RETURN_NULL
66 PARROT_WARN_UNUSED_RESULT
67 PMC
* key_new(PARROT_INTERP
)
68 __attribute__nonnull__(1);
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);
77 PARROT_CANNOT_RETURN_NULL
78 PARROT_WARN_UNUSED_RESULT
79 PMC
* key_new_integer(PARROT_INTERP
, INTVAL value
)
80 __attribute__nonnull__(1);
83 PARROT_CANNOT_RETURN_NULL
84 PARROT_WARN_UNUSED_RESULT
85 PMC
* key_new_number(PARROT_INTERP
, FLOATVAL value
)
86 __attribute__nonnull__(1);
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);
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);
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);
110 PARROT_WARN_UNUSED_RESULT
111 FLOATVAL
key_number(PARROT_INTERP
, ARGIN(PMC
*key
))
112 __attribute__nonnull__(1)
113 __attribute__nonnull__(2);
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);
123 void key_set_integer(SHIM_INTERP
, ARGMOD(PMC
*key
), INTVAL value
)
124 __attribute__nonnull__(2)
128 void key_set_number(SHIM_INTERP
, ARGMOD(PMC
*key
), FLOATVAL value
)
129 __attribute__nonnull__(2)
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)
140 void key_set_register(SHIM_INTERP
,
144 __attribute__nonnull__(2)
148 void key_set_string(SHIM_INTERP
, ARGMOD(PMC
*key
), ARGIN(STRING
*value
))
149 __attribute__nonnull__(2)
150 __attribute__nonnull__(3)
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);
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);
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 */
178 * c-file-style: "parrot"
180 * vim: expandtab shiftwidth=4: