Showing the changes to array.c (1 of 2 files). Show all
Unified · Split
| @@ -51,3 +51,25 @@ err: · 50 unmodified lines | |||
| 51 | pdfobjfree(o); | 51 | pdfobjfree(o); |
| 52 | return nil; | 52 | return nil; |
| 53 | } | 53 | } |
| 54 | |||
| 55 | int | ||
| 56 | arraylen(Object *o) | ||
| 57 | { | ||
| 58 | if(o == nil || o == &null) | ||
| 59 | return 0; | ||
| 60 | return (o->type == Oarray) ? o->array.ne : 1; | ||
| 61 | } | ||
| 62 | |||
| 63 | Object * | ||
| 64 | arrayget(Object *o, int i) | ||
| 65 | { | ||
| 66 | if(arraylen(o) <= i) | ||
| 67 | sysfatal("array: indexing out of range"); | ||
| 68 | return o->type == Oarray ? o->array.e[i] : o; | ||
| 69 | } | ||
| 70 | |||
| 71 | int | ||
| 72 | arrayint(Object *o, int i) | ||
| 73 | { | ||
| 74 | return (o = arrayget(o, i))->type == Onum ? o->num : 0; | ||
| 75 | } | ||