4 static void realloc(struct naVec* v)
6 int i, newsz = 1 + ((v->size*3)>>1);
7 naRef* na = naAlloc(sizeof(naRef) * newsz);
9 for(i=0; i<v->size; i++)
15 void naVec_init(naRef vec)
17 struct naVec* v = vec.ref.ptr.vec;
23 void naVec_gcclean(struct naVec* v)
31 naRef naVec_get(naRef v, int i)
33 if(!IS_VEC(v)) return naNil();
34 if(i >= v.ref.ptr.vec->size) return naNil();
35 return v.ref.ptr.vec->array[i];
38 void naVec_set(naRef vec, int i, naRef o)
40 struct naVec* v = vec.ref.ptr.vec;
41 if(!IS_VEC(vec) || i >= v->size) return;
45 int naVec_size(naRef v)
47 if(!IS_VEC(v)) return 0;
48 return v.ref.ptr.vec->size;
51 int naVec_append(naRef vec, naRef o)
53 struct naVec* v = vec.ref.ptr.vec;
54 if(!IS_VEC(vec)) return 0;
55 if(v->size >= v->alloced)
57 v->array[v->size] = o;
61 void naVec_setsize(naRef vec, int sz)
64 struct naVec* v = vec.ref.ptr.vec;
65 naRef* na = naAlloc(sizeof(naRef) * sz);
67 na[i] = (i < v->size) ? v->array[i] : naNil();
74 naRef naVec_removelast(naRef vec)
77 struct naVec* v = vec.ref.ptr.vec;
78 if(!IS_VEC(vec) || v->size == 0) return naNil();
79 o = v->array[v->size - 1];
81 if(v->size < (v->alloced >> 1))