#ifndef VECTOR_H #define VECTOR_H template struct PgfVector { size_t len; A data[]; }; template inline ref> vector_new(size_t len) { ref> res = DB::malloc>(sizeof(PgfVector)+len*sizeof(A)); res->len = len; return res; } template inline ref vector_new(PgfVector C::* field, size_t len) { ref res = DB::malloc(((size_t) &(((C*) NULL)->*field))+sizeof(PgfVector)+len*sizeof(A)); (res->*field).len = len; return res; } template inline ref vector_elem(ref> v, size_t index) { return ref::from_ptr(&v->data[index]); } #endif // VECTOR_H