]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blob - QRScanner/mobile/jni/thirdparty/mujs/mujs.h
Add MuPDF native source codes
[hornmich/skoda-qr-demo.git] / QRScanner / mobile / jni / thirdparty / mujs / mujs.h
1 #ifndef mujs_h
2 #define mujs_h
3
4 /* noreturn is a GCC extension */
5 #ifdef __GNUC__
6 #define JS_NORETURN __attribute__((noreturn))
7 #else
8 #ifdef _MSC_VER
9 #define JS_NORETURN __declspec(noreturn)
10 #else
11 #define JS_NORETURN
12 #endif
13 #endif
14
15 /* GCC can do type checking of printf strings */
16 #ifdef __printflike
17 #define JS_PRINTFLIKE __printflike
18 #else
19 #if __GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ >= 7
20 #define JS_PRINTFLIKE(fmtarg, firstvararg) \
21         __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
22 #else
23 #define JS_PRINTFLIKE(fmtarg, firstvararg)
24 #endif
25 #endif
26
27 typedef struct js_State js_State;
28
29 typedef void *(*js_Alloc)(void *memctx, void *ptr, unsigned int size);
30 typedef void (*js_Panic)(js_State *J);
31 typedef void (*js_CFunction)(js_State *J);
32 typedef void (*js_Finalize)(js_State *J, void *p);
33
34 /* Basic functions */
35 js_State *js_newstate(js_Alloc alloc, void *actx, int flags);
36 void js_setcontext(js_State *J, void *uctx);
37 void *js_getcontext(js_State *J);
38 js_Panic js_atpanic(js_State *J, js_Panic panic);
39 void js_freestate(js_State *J);
40 void js_gc(js_State *J, int report);
41
42 int js_dostring(js_State *J, const char *source, int report);
43 int js_dofile(js_State *J, const char *filename);
44 int js_ploadstring(js_State *J, const char *filename, const char *source);
45 int js_ploadfile(js_State *J, const char *filename);
46 int js_pcall(js_State *J, int n);
47 int js_pconstruct(js_State *J, int n);
48
49 /* State constructor flags */
50 enum {
51         JS_STRICT = 1,
52 };
53
54 /* RegExp flags */
55 enum {
56         JS_REGEXP_G = 1,
57         JS_REGEXP_I = 2,
58         JS_REGEXP_M = 4,
59 };
60
61 /* Property attribute flags */
62 enum {
63         JS_READONLY = 1,
64         JS_DONTENUM = 2,
65         JS_DONTCONF = 4,
66 };
67
68 void js_newerror(js_State *J, const char *message);
69 void js_newevalerror(js_State *J, const char *message);
70 void js_newrangeerror(js_State *J, const char *message);
71 void js_newreferenceerror(js_State *J, const char *message);
72 void js_newsyntaxerror(js_State *J, const char *message);
73 void js_newtypeerror(js_State *J, const char *message);
74 void js_newurierror(js_State *J, const char *message);
75
76 JS_NORETURN void js_error(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
77 JS_NORETURN void js_evalerror(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
78 JS_NORETURN void js_rangeerror(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
79 JS_NORETURN void js_referenceerror(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
80 JS_NORETURN void js_syntaxerror(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
81 JS_NORETURN void js_typeerror(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
82 JS_NORETURN void js_urierror(js_State *J, const char *fmt, ...) JS_PRINTFLIKE(2,3);
83 JS_NORETURN void js_throw(js_State *J);
84
85 void js_loadstring(js_State *J, const char *filename, const char *source);
86 void js_loadfile(js_State *J, const char *filename);
87
88 void js_eval(js_State *J);
89 void js_call(js_State *J, int n);
90 void js_construct(js_State *J, int n);
91
92 const char *js_ref(js_State *J);
93 void js_unref(js_State *J, const char *ref);
94
95 void js_getregistry(js_State *J, const char *name);
96 void js_setregistry(js_State *J, const char *name);
97 void js_delregistry(js_State *J, const char *name);
98
99 void js_getglobal(js_State *J, const char *name);
100 void js_setglobal(js_State *J, const char *name);
101 void js_defglobal(js_State *J, const char *name, int atts);
102
103 int js_hasproperty(js_State *J, int idx, const char *name);
104 void js_getproperty(js_State *J, int idx, const char *name);
105 void js_setproperty(js_State *J, int idx, const char *name);
106 void js_defproperty(js_State *J, int idx, const char *name, int atts);
107 void js_delproperty(js_State *J, int idx, const char *name);
108 void js_defaccessor(js_State *J, int idx, const char *name, int atts);
109
110 unsigned int js_getlength(js_State *J, int idx);
111 void js_setlength(js_State *J, int idx, unsigned int len);
112 int js_hasindex(js_State *J, int idx, unsigned int i);
113 void js_getindex(js_State *J, int idx, unsigned int i);
114 void js_setindex(js_State *J, int idx, unsigned int i);
115 void js_delindex(js_State *J, int idx, unsigned int i);
116
117 void js_currentfunction(js_State *J);
118 void js_pushglobal(js_State *J);
119 void js_pushundefined(js_State *J);
120 void js_pushnull(js_State *J);
121 void js_pushboolean(js_State *J, int v);
122 void js_pushnumber(js_State *J, double v);
123 void js_pushstring(js_State *J, const char *v);
124 void js_pushlstring(js_State *J, const char *v, unsigned int n);
125 void js_pushliteral(js_State *J, const char *v);
126
127 void js_newobject(js_State *J);
128 void js_newarray(js_State *J);
129 void js_newboolean(js_State *J, int v);
130 void js_newnumber(js_State *J, double v);
131 void js_newstring(js_State *J, const char *v);
132 void js_newcfunction(js_State *J, js_CFunction fun, const char *name, unsigned int length);
133 void js_newcconstructor(js_State *J, js_CFunction fun, js_CFunction con, const char *name, unsigned int length);
134 void js_newuserdata(js_State *J, const char *tag, void *data, js_Finalize finalize);
135 void js_newregexp(js_State *J, const char *pattern, int flags);
136
137 void js_pushiterator(js_State *J, int idx, int own);
138 const char *js_nextiterator(js_State *J, int idx);
139
140 int js_isdefined(js_State *J, int idx);
141 int js_isundefined(js_State *J, int idx);
142 int js_isnull(js_State *J, int idx);
143 int js_isboolean(js_State *J, int idx);
144 int js_isnumber(js_State *J, int idx);
145 int js_isstring(js_State *J, int idx);
146 int js_isprimitive(js_State *J, int idx);
147 int js_isobject(js_State *J, int idx);
148 int js_isarray(js_State *J, int idx);
149 int js_isregexp(js_State *J, int idx);
150 int js_iscallable(js_State *J, int idx);
151 int js_isuserdata(js_State *J, int idx, const char *tag);
152
153 int js_toboolean(js_State *J, int idx);
154 double js_tonumber(js_State *J, int idx);
155 const char *js_tostring(js_State *J, int idx);
156 void *js_touserdata(js_State *J, int idx, const char *tag);
157
158 double js_tointeger(js_State *J, int idx);
159 int js_toint32(js_State *J, int idx);
160 unsigned int js_touint32(js_State *J, int idx);
161 short js_toint16(js_State *J, int idx);
162 unsigned short js_touint16(js_State *J, int idx);
163
164 int js_gettop(js_State *J);
165 void js_settop(js_State *J, int idx);
166 void js_pop(js_State *J, int n);
167 void js_rot(js_State *J, int n);
168 void js_copy(js_State *J, int idx);
169 void js_remove(js_State *J, int idx);
170 void js_insert(js_State *J, int idx);
171 void js_replace(js_State* J, int idx);
172
173 void js_concat(js_State *J);
174 int js_compare(js_State *J, int *okay);
175 int js_equal(js_State *J);
176 int js_strictequal(js_State *J);
177 int js_instanceof(js_State *J);
178
179 #endif