File: rxputil.h

package info (click to toggle)
rxp 1.2.3-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny, sarge
  • size: 436 kB
  • ctags: 966
  • sloc: ansic: 9,679; makefile: 127; sh: 3
file content (37 lines) | stat: -rw-r--r-- 825 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#ifndef RXPUTIL_H
#define RXPUTIL_H

#define Vector(type, name) \
    int name##_count, name##_alloc; \
    type *name

#define VectorInit(v) \
    (v##_count = v##_alloc = 0, v = 0)

#define VectorAlloc(v, n) \
    (v##_alloc = n, \
     (v = Realloc(v, v##_alloc * sizeof(*v))) ? 1 : 0)

#define VectorPush(v, value) \
    ((v##_count < v##_alloc || \
      (v = VectorExtend(v))) ? \
     (v[v##_count++] = (value), 1) : \
     0)

#define VectorPushNothing(v) \
    ((v##_count < v##_alloc || \
      (v = VectorExtend(v))) ? \
     (v##_count++, 1) : \
     0)

#define VectorPop(v) (v##_count--)

#define VectorLast(v) (v[v##_count-1])

#define VectorExtend(v) \
    (v##_alloc = (v##_alloc == 0 ? 8 : v##_alloc * 2), \
     Realloc(v, v##_alloc * sizeof(*v)))

#define VectorCount(v) v##_count

#endif /* RXPUTIL_H */