123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468 |
- #ifndef Array_H
- #define Array_H
- #define WIN32_LEAN_AND_MEAN
- #include <Windows.h>
- namespace Framework
- {
- class IntArray
- {
- private:
- int This;
- IntArray *next;
- public:
- // Konstruktor
- IntArray();
- // Destruktor
- ~IntArray();
- // nicht constant
- void addInt( int i, int index, int null ); // fügt i bei endex ein
- void addInt( int i ); // fügt i hinzu
- void setInt( int i, int index, int null ); // setzt das index - te int zu i
- void löscheInt( int index, int null ); // löscht das index - te int
- void tauschInt( int vindex, int nindex ); // löscht das index - te int
- void setNext( IntArray *n ); // setzt den next Zeiger auf n
- int getInt( int index, int null ); // gibt das index - te int zurück
- void deleteAll(); // gibt den Speicher frei
- IntArray *release(); // gibt den Speicher frei
- // constant
- int zThis() const; // gibt This zurück
- IntArray *zNext() const; // gibt den next Zeiger zurück
- };
-
- class Int64Array
- {
- private:
- __int64 This;
- Int64Array *next;
- public:
- // Konstruktor
- Int64Array();
- // Destruktor
- ~Int64Array();
- // nicht constant
- void addInt( __int64 i, int index, int null ); // fügt i bei endex ein
- void setInt( __int64 i, int index, int null ); // setzt das index - te int zu i
- void löscheInt( int index, int null ); // löscht das index - te int
- void tauschInt( int vindex, int nindex ); // löscht das index - te int
- void setNext( Int64Array *n ); // setzt den next Zeiger auf n
- __int64 getInt( int index, int null ); // gibt das index - te int zurück
- void deleteAll(); // gibt den Speicher frei
- Int64Array *release(); // gibt den Speicher frei
- // constant
- __int64 zThis() const; // gibt This zurück
- Int64Array *zNext() const; // gibt den next Zeiger zurück
- };
- class DoubleArray
- {
- private:
- double This;
- DoubleArray *next;
- public:
- // Konstruktor
- DoubleArray();
- // Destruktor
- ~DoubleArray();
- // nicht constant
- void addDouble( double i, int index, int null ); // fügt i bei endex ein
- void setDouble( double i, int index, int null ); // setzt das index - te int zu i
- void löscheDouble( int index, int null ); // löscht das index - te int
- void tauschDouble( int vindex, int nindex ); // löscht das index - te int
- void setNext( DoubleArray *n ); // setzt den next Zeiger auf n
- double getDouble( int index, int null ); // gibt das index - te int zurück
- void deleteAll(); // gibt den Speicher frei
- DoubleArray *release();
- // constant
- double zThis() const; // gibt This zurück
- DoubleArray *zNext() const; // gibt den next Zeiger zurück
- };
- template< class TYPE >
- class Array
- {
- private:
- TYPE This;
- Array<TYPE> *next;
- public:
- // Konstruktor
- Array()
- {
- next = 0;
- }
- // Destruktor
- ~Array()
- {
- if( next )
- delete next;
- }
- // nicht constant
- void add( TYPE t, int index, int null ) // fügt t bei endex ein
- {
- if( index == null )
- {
- Array<TYPE> *tmp = next;
- next = new Array<TYPE>();
- next->setNext( tmp );
- next->set( This, 0, 0 );
- This = t;
- return;
- }
- if( !next )
- next = new Array<TYPE>();
- next->add( t, index, null + 1 );
- }
- void set( TYPE t, int index, int null ) // setzt den index - ten T zu t
- {
- if( index == null )
- {
- This = t;
- return;
- }
- if( !next )
- next = new Array<TYPE>();
- next->set( t, index, null + 1 );
- }
- void lösche( int index, int null ) // löscht den index - ten T
- {
- if( index == null )
- {
- if( next )
- {
- This = next->getThis();
- Array<TYPE> *tmp = next->zNext();
- next->setNext( 0 );
- delete next;
- next = tmp;
- }
- return;
- }
- if( !next )
- next = new Array<TYPE>();
- next->lösche( index, null + 1 );
- }
- void tausch( int vindex, int nindex ) // vertauscht den vindex - ten T und den nindex - ten T
- {
- TYPE tmp = get( nindex, 0 );
- set( get( vindex, 0 ), nindex, 0 );
- set( tmp, vindex, 0 );
- }
- void setNext( Array<TYPE> *n ) // setzt den next Zeiger auf n
- {
- next = n;
- }
- TYPE get( int index, int null ) // gibt den index - ten T zurück
- {
- if( index == null )
- {
- return This;
- }
- if( !next )
- next = new Array<TYPE>();
- return next->get( index, null + 1 );
- }
- void deleteAll() // gibt den Speicher frei
- {
- if( next )
- next->deleteAll();
- delete next;
- next = 0;
- }
- Array<TYPE> *release()
- {
- if( next )
- next = next->release();
- delete this;
- return 0;
- }
- // constant
- TYPE getThis() const // gibt This zurück
- {
- return This;
- }
- Array<TYPE> *zNext() const // gibt den next Zeiger zurück
- {
- return next;
- }
- };
- template< class TYPE >
- class TArray
- {
- private:
- TYPE *This;
- TArray<TYPE> *next;
- public:
- // Konstruktor
- TArray()
- {
- This = 0;
- next = 0;
- }
- // Destruktor
- ~TArray()
- {
- if( next )
- delete next;
- }
- // nicht constant
- void add( TYPE *t, int index, int null ) // fügt t bei endex ein
- {
- if( index == null )
- {
- TArray<TYPE> *tmp = next;
- next = new TArray<TYPE>();
- next->setNext( tmp );
- next->set( This, 0, 0 );
- This = t;
- return;
- }
- if( !next )
- next = new TArray<TYPE>();
- next->add( t, index, null + 1 );
- }
- void set( TYPE *t, int index, int null ) // setzt den index - ten T zu t
- {
- if( index == null )
- {
- if( This )
- This->release();
- This = t;
- return;
- }
- if( !next )
- next = new TArray<TYPE>();
- next->set( t, index, null + 1 );
- }
- void lösche( int index, int null ) // löscht den index - ten T
- {
- if( index == null )
- {
- if( This )
- This = This->release();
- if( next )
- {
- This = next->zThis();
- TArray<TYPE> *tmp = next->zNext();
- next->setNext( 0 );
- delete next;
- next = tmp;
- }
- return;
- }
- if( !next )
- next = new TArray<TYPE>();
- next->lösche( index, null + 1 );
- }
- void tausch( int vindex, int nindex ) // vertauscht den vindex - ten T und den nindex - ten T
- {
- TYPE *tmp = get( nindex, 0 );
- set( get( vindex, 0 ), nindex, 0 );
- set( tmp, vindex, 0 );
- }
- void setNext( TArray<TYPE> *n ) // setzt den next Zeiger auf n
- {
- next = n;
- }
- TYPE *get( int index, int null ) // gibt den index - ten T zurück
- {
- if( index == null )
- {
- if( !This )
- return 0;
- return This->getThis();
- }
- if( !next )
- next = new TArray<TYPE>();
- return next->get( index, null + 1 );
- }
- TYPE *z( int index, int null )
- {
- if( index == null )
- return This;
- if( !next )
- next = new TArray<TYPE>();
- return next->z( index, null + 1 );
- }
- void deleteAll() // gibt den Speicher frei
- {
- if( This )
- This = This->release();
- if( next )
- next->deleteAll();
- delete next;
- next = 0;
- }
- TArray<TYPE> *release()
- {
- if( This )
- This = This->release();
- if( next )
- next = next->release();
- delete this;
- return 0;
- }
- // constant
- TYPE *zThis() const // gibt This zurück
- {
- return This;
- }
- TArray<TYPE> *zNext() const // gibt den next Zeiger zurück
- {
- return next;
- }
- };
- template< class TYPE >
- class ZTArray
- {
- private:
- TYPE *This;
- ZTArray<TYPE> *next;
- public:
- // Konstruktor
- ZTArray()
- {
- This = 0;
- next = 0;
- }
- // Destruktor
- ~ZTArray()
- {
- if( next )
- delete next;
- }
- // nicht constant
- void add( TYPE *zT, int index, int null ) // fügt zT bei endex ein
- {
- if( index == null )
- {
- ZTArray<TYPE> *tmp = next;
- next = new ZTArray<TYPE>();
- next->setNext( tmp );
- next->set( This, 0, 0 );
- This = zT;
- return;
- }
- if( !next )
- next = new ZTArray<TYPE>();
- next->add( zT, index, null + 1 );
- }
- void set( TYPE *zT, int index, int null ) // setzt den index - ten Zeiger zu zT
- {
- if( index == null )
- {
- This = zT;
- return;
- }
- if( !next )
- next = new ZTArray<TYPE>();
- next->set( zT, index, null + 1 );
- }
- void lösche( int index, int null ) // löscht den index - ten Zeiger
- {
- if( index == null )
- {
- This = 0;
- if( next )
- {
- This = next->zThis();
- ZTArray<TYPE> *tmp = next->zNext();
- next->setNext( 0 );
- delete next;
- next = tmp;
- }
- return;
- }
- if( !next )
- next = new ZTArray<TYPE>();
- next->lösche( index, null + 1 );
- }
- void tausch( int vindex, int nindex ) // vertauscht den vindex - ten Zeiger und den nindex - ten Zeiger
- {
- TYPE *tmp = z( nindex, 0 );
- set( z( vindex, 0 ), nindex, 0 );
- set( tmp, vindex, 0 );
- }
- void setNext( ZTArray<TYPE> *n ) // setzt den next Zeiger auf n
- {
- next = n;
- }
- TYPE *z( int index, int null ) // gibt den index - ten Zeiger zurück
- {
- if( index == null )
- return This;
- if( !next )
- next = new ZTArray<TYPE>();
- return next->z( index, null + 1 );
- }
- void deleteAll() // gibt den Speicher frei
- {
- This = 0;
- if( next )
- next->deleteAll();
- delete next;
- next = 0;
- }
- ZTArray<TYPE> *release()
- {
- This = 0;
- if( next )
- next = next->release();
- delete this;
- return 0;
- }
- // constant
- TYPE *zThis() const // gibt This zurück
- {
- return This;
- }
- ZTArray<TYPE> *zNext() const // gibt den next Zeiger zurück
- {
- return next;
- }
- };
- }
- #endif
|