diff options
author | Tor Andersson <tor@ghostscript.com> | 2008-03-21 13:28:39 +0100 |
---|---|---|
committer | Tor Andersson <tor@ghostscript.com> | 2008-03-21 13:28:39 +0100 |
commit | 4b9181cdb56a9d2015f8d79e90015038f4792334 (patch) | |
tree | 507876fcec4f91aa591f3cbf2196f4dcc4deeaad /stream/obj_simple.c | |
parent | 65e3374a2415399ded4624326a01bb9dfa77fa9e (diff) | |
download | mupdf-4b9181cdb56a9d2015f8d79e90015038f4792334.tar.xz |
Backport of chained error messages from experimental branch.
Diffstat (limited to 'stream/obj_simple.c')
-rw-r--r-- | stream/obj_simple.c | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/stream/obj_simple.c b/stream/obj_simple.c index 77a7bca8..d8eb77b7 100644 --- a/stream/obj_simple.c +++ b/stream/obj_simple.c @@ -4,18 +4,18 @@ extern void fz_droparray(fz_obj *array); extern void fz_dropdict(fz_obj *dict); -#define NEWOBJ(KIND,SIZE) \ - fz_obj *o; \ - o = *op = fz_malloc(SIZE); \ - if (!o) return fz_outofmem; \ - o->refs = 1; \ - o->kind = KIND; \ +#define NEWOBJ(KIND,SIZE) \ + fz_obj *o; \ + o = *op = fz_malloc(SIZE); \ + if (!o) return fz_throw("outofmem: dynamic object"); \ + o->refs = 1; \ + o->kind = KIND; fz_error * fz_newnull(fz_obj **op) { NEWOBJ(FZ_NULL, sizeof (fz_obj)); - return nil; + return fz_okay; } fz_error * @@ -23,7 +23,7 @@ fz_newbool(fz_obj **op, int b) { NEWOBJ(FZ_BOOL, sizeof (fz_obj)); o->u.b = b; - return nil; + return fz_okay; } fz_error * @@ -31,7 +31,7 @@ fz_newint(fz_obj **op, int i) { NEWOBJ(FZ_INT, sizeof (fz_obj)); o->u.i = i; - return nil; + return fz_okay; } fz_error * @@ -39,7 +39,7 @@ fz_newreal(fz_obj **op, float f) { NEWOBJ(FZ_REAL, sizeof (fz_obj)); o->u.f = f; - return nil; + return fz_okay; } fz_error * @@ -49,7 +49,7 @@ fz_newstring(fz_obj **op, char *str, int len) o->u.s.len = len; memcpy(o->u.s.buf, str, len); o->u.s.buf[len] = '\0'; - return nil; + return fz_okay; } fz_error * @@ -57,7 +57,7 @@ fz_newname(fz_obj **op, char *str) { NEWOBJ(FZ_NAME, offsetof(fz_obj, u.n) + strlen(str) + 1); strcpy(o->u.n, str); - return nil; + return fz_okay; } fz_error * @@ -66,7 +66,7 @@ fz_newindirect(fz_obj **op, int objid, int genid) NEWOBJ(FZ_INDIRECT, sizeof (fz_obj)); o->u.r.oid = objid; o->u.r.gid = genid; - return nil; + return fz_okay; } fz_error * @@ -74,7 +74,7 @@ fz_newpointer(fz_obj **op, void *p) { NEWOBJ(FZ_POINTER, sizeof (fz_obj)); o->u.p = p; - return nil; + return fz_okay; } fz_obj * @@ -233,7 +233,7 @@ fz_topointer(fz_obj *obj) { if (fz_ispointer(obj)) return obj->u.p; - return nil; + return fz_okay; } fz_error * @@ -242,7 +242,7 @@ fz_newnamefromstring(fz_obj **op, fz_obj *str) NEWOBJ(FZ_NAME, offsetof(fz_obj, u.n) + fz_tostrlen(str) + 1); memcpy(o->u.n, fz_tostrbuf(str), fz_tostrlen(str)); o->u.n[fz_tostrlen(str)] = '\0'; - return nil; + return fz_okay; } int @@ -261,10 +261,12 @@ fz_objcmp(fz_obj *a, fz_obj *b) case FZ_BOOL: return a->u.b - b->u.b; case FZ_INT: return a->u.i - b->u.i; case FZ_REAL: return a->u.f - b->u.f; + case FZ_STRING: if (a->u.s.len != b->u.s.len) return a->u.s.len - b->u.s.len; return memcmp(a->u.s.buf, b->u.s.buf, a->u.s.len); + case FZ_NAME: return strcmp(a->u.n, b->u.n); @@ -299,3 +301,23 @@ fz_objcmp(fz_obj *a, fz_obj *b) return 1; } +char *fz_objkindstr(fz_obj *obj) +{ + if (obj == nil) + return "<nil>"; + switch (obj->kind) + { + case FZ_NULL: return "null"; + case FZ_BOOL: return "boolean"; + case FZ_INT: return "integer"; + case FZ_REAL: return "real"; + case FZ_STRING: return "string"; + case FZ_NAME: return "name"; + case FZ_ARRAY: return "array"; + case FZ_DICT: return "dictionary"; + case FZ_INDIRECT: return "reference"; + case FZ_POINTER: return "pointer"; + } + return "<unknown>"; +} + |