Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
7643 views
1
/* This file contains wrapper functions for pdf_jsimp functions implemented
2
* in C++, from which calls to fz_throw aren't safe. The C++ versions
3
* return errors explicitly, and these wrappers then throw them. */
4
5
#include "mupdf/pdf.h"
6
#include "pdf-jsimp-cpp.h"
7
8
pdf_jsimp *pdf_new_jsimp(fz_context *ctx, void *jsctx)
9
{
10
pdf_jsimp *jsi = NULL;
11
const char *err = pdf_new_jsimp_cpp(ctx, jsctx, &jsi);
12
if (err != NULL)
13
fz_throw(ctx, FZ_ERROR_GENERIC, "%s", err);
14
15
return jsi;
16
}
17
18
void pdf_drop_jsimp(pdf_jsimp *imp)
19
{
20
if (imp)
21
{
22
fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
23
const char *err = pdf_drop_jsimp_cpp(imp);
24
if (err != NULL)
25
fz_warn(ctx, "%s", err);
26
}
27
}
28
29
pdf_jsimp_type *pdf_jsimp_new_type(pdf_jsimp *imp, pdf_jsimp_dtr *dtr, char *name)
30
{
31
pdf_jsimp_type *type = NULL;
32
const char *err = pdf_jsimp_new_type_cpp(imp, dtr, &type);
33
if (err != NULL)
34
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
35
36
return type;
37
}
38
39
void pdf_jsimp_drop_type(pdf_jsimp *imp, pdf_jsimp_type *type)
40
{
41
const char *err = pdf_jsimp_drop_type_cpp(imp, type);
42
if (err != NULL)
43
fz_warn(pdf_jsimp_ctx_cpp(imp), "%s", err);
44
}
45
46
void pdf_jsimp_addmethod(pdf_jsimp *imp, pdf_jsimp_type *type, char *name, pdf_jsimp_method *meth)
47
{
48
const char *err = pdf_jsimp_addmethod_cpp(imp, type, name, meth);
49
if (err != NULL)
50
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
51
}
52
53
void pdf_jsimp_addproperty(pdf_jsimp *imp, pdf_jsimp_type *type, char *name, pdf_jsimp_getter *get, pdf_jsimp_setter *set)
54
{
55
const char *err = pdf_jsimp_addproperty_cpp(imp, type, name, get, set);
56
if (err != NULL)
57
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
58
}
59
60
void pdf_jsimp_set_global_type(pdf_jsimp *imp, pdf_jsimp_type *type)
61
{
62
const char *err = pdf_jsimp_set_global_type_cpp(imp, type);
63
if (err != NULL)
64
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
65
}
66
67
pdf_jsimp_obj *pdf_jsimp_new_obj(pdf_jsimp *imp, pdf_jsimp_type *type, void *natobj)
68
{
69
pdf_jsimp_obj *obj = NULL;
70
const char *err = pdf_jsimp_new_obj_cpp(imp, type, natobj, &obj);
71
if (err != NULL)
72
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
73
74
return obj;
75
}
76
77
void pdf_jsimp_drop_obj(pdf_jsimp *imp, pdf_jsimp_obj *obj)
78
{
79
const char *err = pdf_jsimp_drop_obj_cpp(imp, obj);
80
if (err != NULL)
81
fz_warn(pdf_jsimp_ctx_cpp(imp), "%s", err);
82
}
83
84
int pdf_jsimp_to_type(pdf_jsimp *imp, pdf_jsimp_obj *obj)
85
{
86
int type = 0;
87
const char *err = pdf_jsimp_to_type_cpp(imp, obj, &type);
88
if (err != NULL)
89
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
90
91
return type;
92
}
93
94
pdf_jsimp_obj *pdf_jsimp_from_string(pdf_jsimp *imp, char *str)
95
{
96
pdf_jsimp_obj *obj = NULL;
97
const char *err = pdf_jsimp_from_string_cpp(imp, str, &obj);
98
if (err != NULL)
99
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
100
101
return obj;
102
}
103
104
char *pdf_jsimp_to_string(pdf_jsimp *imp, pdf_jsimp_obj *obj)
105
{
106
char *str = NULL;
107
const char *err = pdf_jsimp_to_string_cpp(imp, obj, &str);
108
if (err != NULL)
109
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
110
111
return str;
112
}
113
114
pdf_jsimp_obj *pdf_jsimp_from_number(pdf_jsimp *imp, double num)
115
{
116
pdf_jsimp_obj *obj = NULL;
117
const char *err = pdf_jsimp_from_number_cpp(imp, num, &obj);
118
if (err != NULL)
119
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
120
121
return obj;
122
}
123
124
double pdf_jsimp_to_number(pdf_jsimp *imp, pdf_jsimp_obj *obj)
125
{
126
double num;
127
const char *err = pdf_jsimp_to_number_cpp(imp, obj, &num);
128
if (err != NULL)
129
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
130
131
return num;
132
}
133
134
int pdf_jsimp_array_len(pdf_jsimp *imp, pdf_jsimp_obj *obj)
135
{
136
int len = 0;
137
const char *err = pdf_jsimp_array_len_cpp(imp, obj, &len);
138
if (err != NULL)
139
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
140
141
return len;
142
}
143
144
pdf_jsimp_obj *pdf_jsimp_array_item(pdf_jsimp *imp, pdf_jsimp_obj *obj, int i)
145
{
146
pdf_jsimp_obj *item = NULL;
147
const char *err = pdf_jsimp_array_item_cpp(imp, obj, i, &item);
148
if (err != NULL)
149
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
150
151
return item;
152
}
153
154
pdf_jsimp_obj *pdf_jsimp_property(pdf_jsimp *imp, pdf_jsimp_obj *obj, char *prop)
155
{
156
pdf_jsimp_obj *pobj = NULL;
157
const char *err = pdf_jsimp_property_cpp(imp, obj, prop, &pobj);
158
if (err != NULL)
159
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
160
161
return pobj;
162
}
163
164
void pdf_jsimp_execute(pdf_jsimp *imp, char *code)
165
{
166
const char *err = pdf_jsimp_execute_cpp(imp, code);
167
if (err != NULL)
168
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
169
}
170
171
void pdf_jsimp_execute_count(pdf_jsimp *imp, char *code, int count)
172
{
173
const char *err = pdf_jsimp_execute_count_cpp(imp, code, count);
174
if (err != NULL)
175
fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
176
}
177
pdf_jsimp_obj *pdf_jsimp_call_method(pdf_jsimp *imp, pdf_jsimp_method *meth, void *jsctx, void *obj, int argc, pdf_jsimp_obj *args[])
178
{
179
fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
180
pdf_jsimp_obj *res;
181
182
fz_try(ctx)
183
{
184
res = meth(jsctx, obj, argc, args);
185
}
186
fz_catch(ctx)
187
{
188
res = NULL;
189
fz_warn(ctx, "%s", fz_caught_message(ctx));
190
}
191
192
return res;
193
}
194
195
pdf_jsimp_obj *pdf_jsimp_call_getter(pdf_jsimp *imp, pdf_jsimp_getter *get, void *jsctx, void *obj)
196
{
197
fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
198
pdf_jsimp_obj *res;
199
200
fz_try(ctx)
201
{
202
res = get(jsctx, obj);
203
}
204
fz_catch(ctx)
205
{
206
res = NULL;
207
fz_warn(ctx, "%s", fz_caught_message(ctx));
208
}
209
210
return res;
211
}
212
213
void pdf_jsimp_call_setter(pdf_jsimp *imp, pdf_jsimp_setter *set, void *jsctx, void *obj, pdf_jsimp_obj *val)
214
{
215
fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
216
217
fz_try(ctx)
218
{
219
set(jsctx, obj, val);
220
}
221
fz_catch(ctx)
222
{
223
fz_warn(ctx, "%s", fz_caught_message(ctx));
224
}
225
}
226
227