|
|
1.1 root 1: typedef void* PV;
2: typedef void (*PF)(PV);
3: typedef void (*PFI)(PV,int);
4:
5: PV _vec_new(PV op, int n, int sz, PV f)
6: /*
7: allocate a vector of "n" elements of size "sz"
8: and initialize each by a call of "f"
9: */
10: {
11: if (op == 0) op = PV( new char[n*sz] );
12: register char* p = (char*) op;
13: if (f) for (register int i=0; i<n; i++) ( *PF(f) )( PV(p+i*sz) );
14: return PV(p);
15: }
16:
17: void _vec_delete(PV op, int n, int sz, PV f, int del)
18: {
19: if (op == 0) return;
20: if (f) {
21: register char* p = (char*) op;
22: for (register int i=0; i<n; i++) PFI(f)(PV(p+i*sz),0);
23: }
24: if (del) delete op;
25: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.