source: branches/port5/ALIV3/a3_darray.hxx

Last change on this file was 3482, checked in by westram, 20 years ago
  • tabs → spaces
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.7 KB
Line 
1// -----------------------------------------------------------------------------
2
3#ifndef _A3_DARRAY_HXX
4#define _A3_DARRAY_HXX
5
6// -----------------------------------------------------------------------------
7//  Datentypen
8// -----------------------------------------------------------------------------
9
10#define DARRAY_SIZE     10
11#define DARRAY_INC       2
12
13#define DARRAY_NONULL    0
14#define DARRAY_NULL      1
15
16#define DARRAY_NOFREE    0
17#define DARRAY_FREE      1
18
19// -----------------------------------------------------------------------------
20//  Datentypen
21// -----------------------------------------------------------------------------
22
23typedef void *vp;                       // Element eines DArray
24
25typedef void (*dumpfunc)(vp);           // Ausgabefunktion fuer ein Element
26
27typedef int  (*cmpfunc) (const void*,   // Vergleichsfunktion fuer zwei Elemente
28                         const void*);
29
30class DArray        // Dynamisches Array fuer beliebige Elemente
31{
32    private:
33
34    int      elements,      // Anzahl der Elemente
35             nextfree,      // Naechster freier Index
36             increment,     // Schrittweite fuer Vergroesserung
37             null,          // Sollen 0-Elemente beruecksichtigt werden
38             free;          // Sollen Elemente explizit mit delete freigegeben werden
39    vp      *array;         // Eigentliches Array
40
41    void     Init           ( int        num,
42                              int        inc,
43                              int        del );
44    void     Grow           ( void );
45    void     Shrink         ( int        num );
46   
47    public:
48
49             DArray         ( void );
50             DArray         ( int        num );
51             DArray         ( int        num,
52                              int        inc,
53                              int        del );
54             DArray         ( DArray    &other );
55            ~DArray         ( void );
56
57    void     Free           ( int        del ) { free = !!del; };
58    void     Null           ( int        nul ) { null = !!nul; };
59
60    int      Elements       ( void );
61   
62    int      Add            ( vp         elem );
63
64    int      Set            ( vp         elem,
65                              int        index );
66
67    int      Del            ( int        index );
68   
69    vp       operator []    ( int        index );
70    DArray  &operator =     ( DArray    &other );
71
72    void     Sort           ( cmpfunc    cmp );
73
74    void     Clear          ( void );
75   
76    void     Dump           ( dumpfunc   edump );
77};
78
79// -----------------------------------------------------------------------------
80
81#endif
82
83// -----------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.