1 /* encoding.h
2  *  Copyright (C) 2004-2007,2014, Parrot Foundation.
3  *  Overview:
4  *     This is the header for the generic encoding functions
5  *  Data Structure and Algorithms:
6  *  History:
7  *  Notes:
8  *  References:
9  */
10 
11 #ifndef PARROT_ENCODING_H_GUARD
12 #define PARROT_ENCODING_H_GUARD
13 
14 #include "parrot/parrot.h"
15 
16 PARROT_DATA STR_VTABLE *Parrot_ascii_encoding_ptr;
17 PARROT_DATA STR_VTABLE *Parrot_latin1_encoding_ptr;
18 PARROT_DATA STR_VTABLE *Parrot_binary_encoding_ptr;
19 PARROT_DATA STR_VTABLE *Parrot_utf8_encoding_ptr;
20 PARROT_DATA STR_VTABLE *Parrot_utf16_encoding_ptr;
21 PARROT_DATA STR_VTABLE *Parrot_ucs2_encoding_ptr;
22 PARROT_DATA STR_VTABLE *Parrot_ucs4_encoding_ptr;
23 
24 PARROT_DATA STR_VTABLE *Parrot_default_encoding_ptr;
25 PARROT_DATA STR_VTABLE *Parrot_platform_encoding_ptr;
26 
27 #ifdef PARROT_IN_CORE
28 PARROT_DATA STR_VTABLE *Parrot_null_encoding_ptr;
29 #endif
30 
31 /* HEADERIZER BEGIN: src/string/encoding.c */
32 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
33 
34 PARROT_EXPORT
35 PARROT_PURE_FUNCTION
36 PARROT_WARN_UNUSED_RESULT
37 PARROT_CANNOT_RETURN_NULL
38 const STR_VTABLE * Parrot_default_encoding(PARROT_INTERP);
39 
40 PARROT_EXPORT
41 PARROT_PURE_FUNCTION
42 PARROT_WARN_UNUSED_RESULT
43 PARROT_CAN_RETURN_NULL
44 const char * Parrot_encoding_c_name(PARROT_INTERP,
45     INTVAL number_of_encoding);
46 
47 PARROT_EXPORT
48 PARROT_PURE_FUNCTION
49 PARROT_WARN_UNUSED_RESULT
50 PARROT_CAN_RETURN_NULL
51 STRING* Parrot_encoding_name(PARROT_INTERP, INTVAL number_of_encoding);
52 
53 PARROT_EXPORT
54 PARROT_PURE_FUNCTION
55 PARROT_WARN_UNUSED_RESULT
56 INTVAL Parrot_encoding_number(PARROT_INTERP,
57     ARGIN(const STRING *encodingname))
58         __attribute__nonnull__(1)
59         __attribute__nonnull__(2);
60 
61 PARROT_EXPORT
62 PARROT_PURE_FUNCTION
63 PARROT_WARN_UNUSED_RESULT
64 INTVAL Parrot_encoding_number_of_str(PARROT_INTERP,
65     ARGIN(const STRING *src))
66         __attribute__nonnull__(2);
67 
68 PARROT_EXPORT
69 void Parrot_encodings_init(PARROT_INTERP)
70         __attribute__nonnull__(1);
71 
72 PARROT_EXPORT
73 PARROT_PURE_FUNCTION
74 PARROT_WARN_UNUSED_RESULT
75 PARROT_CAN_RETURN_NULL
76 const STR_VTABLE * Parrot_find_encoding(PARROT_INTERP,
77     ARGIN(const char *encodingname))
78         __attribute__nonnull__(2);
79 
80 PARROT_EXPORT
81 PARROT_PURE_FUNCTION
82 PARROT_WARN_UNUSED_RESULT
83 PARROT_CAN_RETURN_NULL
84 const STR_VTABLE * Parrot_find_encoding_by_string(PARROT_INTERP,
85     ARGIN(STRING *encodingname))
86         __attribute__nonnull__(1)
87         __attribute__nonnull__(2);
88 
89 PARROT_EXPORT
90 PARROT_PURE_FUNCTION
91 PARROT_WARN_UNUSED_RESULT
92 PARROT_CAN_RETURN_NULL
93 const STR_VTABLE* Parrot_get_encoding(PARROT_INTERP,
94     INTVAL number_of_encoding);
95 
96 PARROT_EXPORT
97 PARROT_DOES_NOT_RETURN
98 PARROT_CANNOT_RETURN_NULL
99 const STR_VTABLE * Parrot_load_encoding(PARROT_INTERP,
100     const char *encodingname)
101         __attribute__nonnull__(1);
102 
103 PARROT_EXPORT
104 INTVAL Parrot_make_default_encoding(PARROT_INTERP,
105     ARGIN(const char *encodingname),
106     ARGIN(STR_VTABLE *encoding))
107         __attribute__nonnull__(2)
108         __attribute__nonnull__(3);
109 
110 PARROT_EXPORT
111 PARROT_MALLOC
112 PARROT_CANNOT_RETURN_NULL
113 STR_VTABLE * Parrot_new_encoding(PARROT_INTERP)
114         __attribute__nonnull__(1);
115 
116 PARROT_EXPORT
117 INTVAL Parrot_register_encoding(PARROT_INTERP, ARGIN(STR_VTABLE *encoding))
118         __attribute__nonnull__(1)
119         __attribute__nonnull__(2);
120 
121 void Parrot_deinit_encodings(PARROT_INTERP)
122         __attribute__nonnull__(1);
123 
124 PARROT_PURE_FUNCTION
125 PARROT_WARN_UNUSED_RESULT
126 INTVAL Parrot_str_internal_find_codepoint(PARROT_INTERP,
127     ARGIN(const STRING *name))
128         __attribute__nonnull__(1)
129         __attribute__nonnull__(2);
130 
131 void Parrot_str_internal_register_encoding_names(PARROT_INTERP)
132         __attribute__nonnull__(1);
133 
134 #define ASSERT_ARGS_Parrot_default_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
135 #define ASSERT_ARGS_Parrot_encoding_c_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
136 #define ASSERT_ARGS_Parrot_encoding_name __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
137 #define ASSERT_ARGS_Parrot_encoding_number __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
138        PARROT_ASSERT_ARG(interp) \
139     , PARROT_ASSERT_ARG(encodingname))
140 #define ASSERT_ARGS_Parrot_encoding_number_of_str __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
141        PARROT_ASSERT_ARG(src))
142 #define ASSERT_ARGS_Parrot_encodings_init __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
143        PARROT_ASSERT_ARG(interp))
144 #define ASSERT_ARGS_Parrot_find_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
145        PARROT_ASSERT_ARG(encodingname))
146 #define ASSERT_ARGS_Parrot_find_encoding_by_string \
147      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
148        PARROT_ASSERT_ARG(interp) \
149     , PARROT_ASSERT_ARG(encodingname))
150 #define ASSERT_ARGS_Parrot_get_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
151 #define ASSERT_ARGS_Parrot_load_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
152        PARROT_ASSERT_ARG(interp))
153 #define ASSERT_ARGS_Parrot_make_default_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
154        PARROT_ASSERT_ARG(encodingname_unused) \
155     , PARROT_ASSERT_ARG(encoding))
156 #define ASSERT_ARGS_Parrot_new_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
157        PARROT_ASSERT_ARG(interp))
158 #define ASSERT_ARGS_Parrot_register_encoding __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
159        PARROT_ASSERT_ARG(interp) \
160     , PARROT_ASSERT_ARG(encoding))
161 #define ASSERT_ARGS_Parrot_deinit_encodings __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
162        PARROT_ASSERT_ARG(interp))
163 #define ASSERT_ARGS_Parrot_str_internal_find_codepoint \
164      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
165        PARROT_ASSERT_ARG(interp) \
166     , PARROT_ASSERT_ARG(name))
167 #define ASSERT_ARGS_Parrot_str_internal_register_encoding_names \
168      __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
169        PARROT_ASSERT_ARG(interp))
170 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END.  Your changes will be lost. */
171 /* HEADERIZER END: src/string/encoding.c */
172 
173 #endif /* PARROT_ENCODING_H_GUARD */
174 
175 /*
176  * Local variables:
177  *   c-file-style: "parrot"
178  * End:
179  * vim: expandtab shiftwidth=4 cinoptions='\:2=2' :
180  */
181