00001 #if !defined(LATTICEDEF_H) 00002 #define LATTICEDEF_H 00003 00004 00006 // Lat // 00007 // // 00008 // Package: Lat (Lattice Navigation Model). // 00009 // // 00010 // Lattice Type Definitiosn:- // 00011 // // 00012 // 1) ID Identifier type. Currently void*. Can be changed subject // 00013 // to assumptions:- // 00014 // // 00015 // 1) A simple value != 0 (0 is used to signal missing) // 00016 // 2) Has unique maping to its object // 00017 // 2) Provides access to its object // 00018 // // 00019 // 2) Classes derived from ID // 00020 // // 00021 // 3) Classes derived from Lattice base classes Base, Link, // 00022 // LeftNode, RightNode // 00023 // // 00024 // 4) Link data classes: LinkData and StoreableType (not currently // 00025 // used). // 00026 // // 00027 // N. West 03/2000 // 00029 00030 00031 00032 #include "Rtypes.h" 00033 #include <vector> 00034 using namespace std; 00035 00036 class LatticeLeftNode; 00037 class LatticeRightNode; 00038 class LatticeBase; 00039 class LatticeLink; 00040 00041 class DefaultLinkData; 00042 00043 class StorableType{ 00044 00045 public: 00046 void* identifier() const {return 0;} 00047 }; 00048 00049 class LatticeDef{ 00050 00051 public: 00052 00053 typedef void* Identifier; 00054 typedef Identifier ID; // Just a convenient short form 00055 typedef Identifier LeftID; 00056 typedef Identifier RightID; 00057 00058 typedef vector<ID> VectorID; 00059 typedef VectorID VectorLeftID; 00060 typedef VectorID VectorRightID; 00061 00062 typedef LatticeLink Link; 00063 typedef vector<Link*> Links; 00064 00065 typedef StorableType StoreType; 00066 typedef DefaultLinkData LinkData; 00067 }; 00068 00069 00070 00071 00072 00073 #endif /* LATTICEDEV_H */
1.3.9.1