summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libasap/anylang.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libasap/anylang.h')
-rw-r--r--lib/rbcodec/codecs/libasap/anylang.h218
1 files changed, 218 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libasap/anylang.h b/lib/rbcodec/codecs/libasap/anylang.h
new file mode 100644
index 0000000000..e56dfbae0e
--- /dev/null
+++ b/lib/rbcodec/codecs/libasap/anylang.h
@@ -0,0 +1,218 @@
1/*
2 * anylang.h - C/Java/C#/JavaScript/ActionScript abstraction layer
3 *
4 * Copyright (C) 2007-2010 Piotr Fusik
5 *
6 * This file is part of ASAP (Another Slight Atari Player),
7 * see http://asap.sourceforge.net
8 *
9 * ASAP is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public License as published
11 * by the Free Software Foundation; either version 2 of the License,
12 * or (at your option) any later version.
13 *
14 * ASAP is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty
16 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
17 * See the GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with ASAP; if not, write to the Free Software Foundation, Inc.,
21 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 */
23
24#ifndef _ANYLANG_H_
25#define _ANYLANG_H_
26
27#if defined(JAVA) || defined(CSHARP) || defined(JAVASCRIPT) || defined(ACTIONSCRIPT)
28
29#define FALSE false
30#define TRUE true
31#define NULL null
32#define _ .
33#define PRIVATE
34#define CONST
35#define OUT_STRING STRING
36
37#else
38
39#define C
40#include <string.h>
41
42#define PRIVATE static
43#define FUNC(type, name, pars) type name pars
44#define P(type, name) type name
45#define V(type, name) type name
46#define CONST const
47#define _ ->
48#define PTR *
49#define ADDRESSOF &
50#define CAST(type) (type)
51#define TO_INT(x) (int) (x)
52#define TO_BYTE(x) (byte) (x)
53#define BYTEARRAY byte *
54#define BOOLARRAY abool *
55#define VOIDPTR void *
56#define UBYTE(data) (data)
57#define SBYTE(data) (signed char) (data)
58#define CONST_ARRAY(type, name) static const type name[] = {
59#define END_CONST_ARRAY }
60#define ZERO_ARRAY(array) memset(array, 0, sizeof(array))
61#define COPY_ARRAY(dest, dest_offset, src, src_offset, len) \
62 memcpy(dest + dest_offset, src + src_offset, len)
63#define NEW_ARRAY(type, name, size) \
64 type name[size]
65#define INIT_ARRAY(array) memset(array, 0, sizeof(array))
66#define STRING const char *
67#define OUT_STRING char *
68#define CHARAT(s, i) (s)[i]
69#define CHARCODEAT(s, i) (s)[i]
70#define CHARCODE(c) (c)
71#define EQUAL_STRINGS(s1, s2) (strcmp(s1, s2) == 0)
72#define EMPTY_STRING(s) (s)[0] = '\0'
73#define SUBSTR(s, i) (s + i)
74#define BYTES_TO_STRING(dest, src, src_offset, len) \
75 do { memcpy(dest, src + src_offset, len); (dest)[len] = '\0'; } while (FALSE)
76#define SUBSTRING(dest, src, src_offset, len) \
77 do { memcpy(dest, src + src_offset, len); (dest)[len] = '\0'; } while (FALSE)
78
79#define RESOURCE const byte *
80#define GET_RESOURCE(name, ext) name##_##ext
81
82#endif /* defined(JAVA) || defined(CSHARP) || defined(JAVASCRIPT) || defined(ACTIONSCRIPT) */
83
84#ifdef JAVA
85
86#define abool boolean
87#define FUNC(type, name, pars) private static type name pars
88#define P(type, name) type name
89#define V(type, name) type name
90#define PTR
91#define ADDRESSOF
92#define CAST(type) (type)
93#define TO_INT(x) (int) (x)
94#define TO_BYTE(x) (byte) (x)
95#define BYTEARRAY byte[]
96#define BOOLARRAY boolean[]
97#define VOIDPTR byte[]
98#define UBYTE(data) ((data) & 0xff)
99#define SBYTE(data) (byte) (data)
100#define CONST_ARRAY(type, name) private static final type[] name = {
101#define END_CONST_ARRAY }
102#define sizeof(array) array.length
103#define ZERO_ARRAY(array) for (int ii = 0; ii < array.length; ii++) array[ii] = 0
104#define COPY_ARRAY(dest, dest_offset, src, src_offset, len) \
105 System.arraycopy(src, src_offset, dest, dest_offset, len)
106#define NEW_ARRAY(type, name, size) \
107 type[] name = new type[size]
108#define INIT_ARRAY(array)
109#define STRING String
110#define CHARAT(s, i) (s).charAt(i)
111#define CHARCODEAT(s, i) (s).charAt(i)
112#define CHARCODE(c) (c)
113#define strlen(s) (s).length()
114#define EQUAL_STRINGS(s1, s2) (s1).equals(s2)
115#define EMPTY_STRING(s) (s) = ""
116#define SUBSTR(s, i) (s).substring(i)
117#define BYTES_TO_STRING(dest, src, src_offset, len) \
118 (dest) = new String(src, src_offset, len)
119#define SUBSTRING(dest, src, src_offset, len) \
120 (dest) = (src).substring(src_offset, src_offset + len)
121
122#define RESOURCE byte[]
123#define GET_RESOURCE(name, ext) getResourceBytes(#name + "." + #ext)
124
125#elif defined(CSHARP)
126
127#define abool bool
128#define FUNC(type, name, pars) private static type name pars
129#define P(type, name) type name
130#define V(type, name) type name
131#define PTR
132#define ADDRESSOF
133#define CAST(type) (type)
134#define TO_INT(x) (int) (x)
135#define TO_BYTE(x) (byte) (x)
136#define BYTEARRAY byte[]
137#define BOOLARRAY bool[]
138#define VOIDPTR byte[]
139#define UBYTE(data) (data)
140#define SBYTE(data) (sbyte) (data)
141#define CONST_ARRAY(type, name) private static readonly type[] name = {
142#define END_CONST_ARRAY }
143#define sizeof(array) array.Length
144#define ZERO_ARRAY(array) Array.Clear(array, 0, array.Length)
145#define COPY_ARRAY(dest, dest_offset, src, src_offset, len) \
146 Array.Copy(src, src_offset, dest, dest_offset, len)
147#define NEW_ARRAY(type, name, size) \
148 type[] name = new type[size]
149#define INIT_ARRAY(array)
150#define STRING string
151#define CHARAT(s, i) (s)[i]
152#define CHARCODEAT(s, i) (s)[i]
153#define CHARCODE(c) (c)
154#define strlen(s) (s).Length
155#define EQUAL_STRINGS(s1, s2) ((s1) == (s2))
156#define EMPTY_STRING(s) (s) = string.Empty
157#define SUBSTR(s, i) (s).Substring(i)
158#define BYTES_TO_STRING(dest, src, src_offset, len) \
159 (dest) = System.Text.Encoding.UTF8.GetString(src, src_offset, len)
160#define SUBSTRING(dest, src, src_offset, len) \
161 (dest) = (src).Substring(src_offset, len)
162
163#define RESOURCE byte[]
164#define GET_RESOURCE(name, ext) name##_##ext
165
166#elif defined(JAVASCRIPT) || defined(ACTIONSCRIPT)
167
168#ifdef ACTIONSCRIPT
169#define abool Boolean
170#define char String
171#define STRING String
172#define BYTEARRAY ByteArray
173#define BOOLARRAY Array
174#define VOIDPTR ByteArray
175#define RESOURCE Array
176#define FUNC(type, name, pars) private static function name pars : type
177#define P(type, name) name : type
178#define V(type, name) var name : type
179#define TO_INT(x) int(x)
180#define CONST_ARRAY(type, name) private static const name : Array = [
181#else
182#define FUNC(type, name, pars) function name pars
183#define P(type, name) name
184#define V(type, name) var name
185#define TO_INT(x) Math.floor(x)
186#define CONST_ARRAY(type, name) var name = [
187#endif
188#define PTR
189#define ADDRESSOF
190#define CAST(type)
191#define TO_BYTE(x) ((x) & 0xff)
192#define UBYTE(data) (data)
193#define SBYTE(data) ((data) < 0x80 ? (data) : (data) - 256)
194#define END_CONST_ARRAY ]
195#define sizeof(array) array.length
196#define ZERO_ARRAY(array) for (V(int, ii) = 0; ii < array.length; ii++) array[ii] = 0
197#define COPY_ARRAY(dest, dest_offset, src, src_offset, len) \
198 for (V(int, ii) = 0; ii < len; ii++) dest[dest_offset + ii] = src[src_offset + ii]
199#define NEW_ARRAY(type, name, size) \
200 V(Array, name) = new Array(size)
201#define INIT_ARRAY(array) for (V(int, ii) = 0; ii < array.length; ii++) array[ii] = 0
202#define CHARAT(s, i) (s).charAt(i)
203#define CHARCODEAT(s, i) (s).charCodeAt(i)
204#define CHARCODE(c) (c).charCodeAt(0)
205#define strlen(s) (s).length
206#define EQUAL_STRINGS(s1, s2) ((s1) == (s2))
207#define EMPTY_STRING(s) s = ""
208#define SUBSTR(s, i) (s).substr(i)
209#define BYTES_TO_STRING(dest, src, src_offset, len) \
210 { dest = ""; for (V(int, ii) = 0; ii < len; ii++) dest += String.fromCharCode(src[src_offset + ii]); }
211#define SUBSTRING(dest, src, src_offset, len) \
212 dest = (src).substring(src_offset, src_offset + len)
213
214#define GET_RESOURCE(name, ext) name##_##ext
215
216#endif
217
218#endif /* _ANYLANG_H_ */