diff options
author | chatty | 1993-04-07 11:50:31 +0000 |
---|---|---|
committer | chatty | 1993-04-07 11:50:31 +0000 |
commit | ba066c34dde204aa192d03a23a81356374d93731 (patch) | |
tree | 39391f6235d2cf8a59a0634ac5ea430cdd21f5d4 /comm/OLD/Event.cc | |
parent | 05ab076e1c2a9ca16472f9a6b47b8d22914b3783 (diff) | |
download | ivy-league-ba066c34dde204aa192d03a23a81356374d93731.zip ivy-league-ba066c34dde204aa192d03a23a81356374d93731.tar.gz ivy-league-ba066c34dde204aa192d03a23a81356374d93731.tar.bz2 ivy-league-ba066c34dde204aa192d03a23a81356374d93731.tar.xz |
Initial revision
Diffstat (limited to 'comm/OLD/Event.cc')
-rw-r--r-- | comm/OLD/Event.cc | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/comm/OLD/Event.cc b/comm/OLD/Event.cc new file mode 100644 index 0000000..5fdef7c --- /dev/null +++ b/comm/OLD/Event.cc @@ -0,0 +1,121 @@ +/* + * The Unix Channel + * + * by Michel Beaudouin-Lafon + * + * Copyright 1993 + * Centre d'Etudes de la Navigation Aerienne (CENA) + * + * Events, by Stephane Chatty + * + * $Id$ + * $CurLog$ + */ + +#include "Event.h" +#include <memory.h> + +UchEventFeatureList :: UchEventFeatureList (const UchEventFeatureList& base, int nbf, UchEventFeature* f) +: CcuListOf <UchEventFeature> (base) +{ + Load (nbf, f); +} + +UchEventFeatureList :: UchEventFeatureList (int nbf, UchEventFeature* f) +: CcuListOf <UchEventFeature> () +{ + Load (nbf, f); +} + +void +UchEventFeatureList :: Load (int nbf, UchEventFeature* f) +{ + while (nbf-- > 0) + Append (f++); +} + +UchEventFeatureList :: ~UchEventFeatureList () +{ +} + + +CcuListOf <UchEventType>* UchEventType::AllTypes = 0; + +void +UchEventType :: ClassInit () +{ + AllTypes = new CcuListOf <UchEventType>; +} + +UchEventType :: UchEventType (const char* name, int nbf, UchEventFeature f []) +: Name (name), +#if 0 + Features (), +#endif + NbFeatures (nbf), + FeaturesOffsets (new int [nbf]) +{ + if (!AllTypes) + ClassInit (); + AllTypes->Append (this); + int offset = 0; + for (int i = 0; i < nbf; ++i) { + offset += f[i].Size; + FeaturesOffsets [i] = offset; + } +} + +UchEventType :: UchEventType (const char* name, const UchEventFeatureList& fl) +: Name (name), +#if 0 + Features (), +#endif + NbFeatures (fl.Length ()), + FeaturesOffsets (new int [NbFeatures]) +{ + if (!AllTypes) + ClassInit (); + AllTypes->Append (this); + int offset = 0; + int i = 0; + CcuListIterOf <UchEventFeature> f = fl; + while (++f) { + offset += (*f)->Size; + FeaturesOffsets [i] = offset; + ++i; + } +} + +UchEventType :: ~UchEventType () +{ + AllTypes->Remove (this); + delete [] FeaturesOffsets; +} + +UchEvent :: UchEvent (const UchEventType* t) +: Type (*t) +{ + Data = new char [t->GetTotalSize ()]; +} + +UchEvent :: ~UchEvent () +{ + delete [] Data; +} + +void +UchEvent :: SetFeature (int i, const void* data) +{ + int offset = Type.GetOffset (i); + int size = Type.GetSize (i); + memcpy (Data+offset, data, size); +} + +void +UchEvent :: GetFeature (int i, void* data) +{ + int offset = Type.GetOffset (i); + int size = Type.GetSize (i); + memcpy (data, Data+offset, size); +} + |