#include <stdio.h>
#include "host.h"
#include "serialis.h"
#include "lsterr.h"
Go to the source code of this file.
Classes | |
class | ELIST2_LINK |
class | ELIST2 |
class | ELIST2_ITERATOR |
Defines | |
#define | QUOTE_IT(parm) #parm |
#define | ELIST2IZEH_A(CLASSNAME) |
#define | ELIST2IZEH_B(CLASSNAME) |
#define | ELIST2IZEH_C(CLASSNAME) |
#define | ELIST2IZEH(CLASSNAME) |
#define | ELIST2IZEH_S(CLASSNAME) |
#define | ELIST2IZE(CLASSNAME) |
#define | ELIST2IZE_S(CLASSNAME) |
#define ELIST2IZE | ( | CLASSNAME | ) |
\ \ \ DLLSYM void CLASSNAME##_zapper( /*delete a link*/ \ ELIST2_LINK* link) /*link to delete*/ \ { \ delete (CLASSNAME *) link; \ } \ \ /* Become a deep copy of src_list*/ \ void CLASSNAME##_LIST::deep_copy(const CLASSNAME##_LIST* src_list, \ CLASSNAME* (*copier)(const CLASSNAME*)) { \ \ CLASSNAME##_IT from_it(const_cast<CLASSNAME##_LIST*>(src_list)); \ CLASSNAME##_IT to_it(this); \ \ for (from_it.mark_cycle_pt(); !from_it.cycled_list(); from_it.forward()) \ to_it.add_after_then_move((*copier)(from_it.data())); \ }
#define ELIST2IZE_S | ( | CLASSNAME | ) |
\ ELIST2IZE(CLASSNAME) \ \ \ \ DLLSYM void CLASSNAME##_serialiser(FILE* f, ELIST2_LINK* element) { \ reinterpret_cast<CLASSNAME*>(element)->serialise(f); \ } \ \ \ \ DLLSYM ELIST2_LINK* CLASSNAME##_de_serialiser(FILE* f) { \ return reinterpret_cast<ELIST2_LINK*>(CLASSNAME::de_serialise(f)); \ }
#define ELIST2IZEH | ( | CLASSNAME | ) |
\ ELIST2IZEH_A( CLASSNAME ) \ \ ELIST2IZEH_B( CLASSNAME ) \ \ ELIST2IZEH_C( CLASSNAME )
#define ELIST2IZEH_A | ( | CLASSNAME | ) |
\ extern DLLSYM void CLASSNAME##_zapper( /*delete a link*/ \ ELIST2_LINK* link);
#define ELIST2IZEH_B | ( | CLASSNAME | ) |
\ \ \ class DLLSYM CLASSNAME##_LIST : public ELIST2 \ { \ public: \ CLASSNAME##_LIST():ELIST2() {} \ /* constructor */ \ \ CLASSNAME##_LIST( /* dont construct */ \ const CLASSNAME##_LIST&) /*by initial assign*/\ { DONT_CONSTRUCT_LIST_BY_COPY.error( QUOTE_IT( CLASSNAME##_LIST ), \ ABORT, NULL ); } \ \ void clear() /* delete elements */\ { ELIST2::internal_clear( &CLASSNAME##_zapper ); } \ \ ~CLASSNAME##_LIST() /* destructor */ \ { clear(); } \ \ /* Become a deep copy of src_list*/ \ void deep_copy(const CLASSNAME##_LIST* src_list, \ CLASSNAME* (*copier)(const CLASSNAME*)); \ \ void operator=( /* prevent assign */ \ const CLASSNAME##_LIST&) \ { DONT_ASSIGN_LISTS.error( QUOTE_IT( CLASSNAME##_LIST ), \ ABORT, NULL ); }
#define ELIST2IZEH_C | ( | CLASSNAME | ) |
#define ELIST2IZEH_S | ( | CLASSNAME | ) |
\ ELIST2IZEH_A( CLASSNAME ) \ \ extern DLLSYM void CLASSNAME##_serialiser( \ FILE* f, \ ELIST2_LINK* element); \ \ extern DLLSYM ELIST2_LINK* CLASSNAME##_de_serialiser( \ FILE* f); \ \ ELIST2IZEH_B( CLASSNAME ) \ \ void dump( /* dump to file */ \ FILE* f) \ { ELIST2::internal_dump( f, &CLASSNAME##_serialiser );} \ \ void de_dump( /* get from file */ \ FILE* f) \ { ELIST2::internal_de_dump( f, &CLASSNAME##_de_serialiser );} \ \ make_serialise( CLASSNAME##_LIST ) \ \ ELIST2IZEH_C( CLASSNAME )
#define QUOTE_IT | ( | parm | ) | #parm |