libvec

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

vec.h (941B)


      1 #define Vecadd(p) Vecadd_((void**)p)
      2 #define Vecaddv(p, a, type) *(type*)Vecadd(p) = a
      3 #define Vecclose(p) Vecclose_((void**)p)
      4 #define Vecdel(p, n) Vecdel_((void**)p, n)
      5 #define Vecinit(p) Vecinit_((void**)p, sizeof(*p[0]), NULL, NULL)
      6 #define Vecinitf(p, i, c) Vecinit_((void**)p, sizeof(*p[0]), i, c)
      7 #define Vecinsure(p, n) Vecinsure_((void**)p, n);
      8 #define Veczero(p) Veczero_((void**)p);
      9 
     10 typedef struct {
     11 	void          (*init)();
     12 	void          (*close)();
     13 	unsigned long ms; /*member size*/
     14 	unsigned long n;
     15 	unsigned long size;
     16 } Vector;
     17 
     18 /* These take the vector pointer as arguments */
     19 Vector* Vec(void* p);
     20 unsigned long Vecsiz(void* p);
     21 
     22 /* These take the address of the vector pointer */
     23 void* Vecadd_(void** p);
     24 void Vecclose_(void** p);
     25 void Vecdel_(void** p, unsigned long n);
     26 void Vecinit_(void** p, unsigned long ms, void (*init)(), void (*close)());
     27 void Vecinsure_(void** p, unsigned long n);
     28 void Veczero_(void** p);