Showing the changes to array.c (1 of 2 files). Show all
Unified · Split
| @@ -51,3 +51,25 @@ err: · 50 unmodified lines | ||
| 51 | 51 | pdfobjfree(o); |
| 52 | 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 | +} | |