From ba066c34dde204aa192d03a23a81356374d93731 Mon Sep 17 00:00:00 2001 From: chatty Date: Wed, 7 Apr 1993 11:50:31 +0000 Subject: Initial revision --- comm/OLD/Event.cc | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 comm/OLD/Event.cc (limited to 'comm/OLD/Event.cc') 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 + +UchEventFeatureList :: UchEventFeatureList (const UchEventFeatureList& base, int nbf, UchEventFeature* f) +: CcuListOf (base) +{ + Load (nbf, f); +} + +UchEventFeatureList :: UchEventFeatureList (int nbf, UchEventFeature* f) +: CcuListOf () +{ + Load (nbf, f); +} + +void +UchEventFeatureList :: Load (int nbf, UchEventFeature* f) +{ + while (nbf-- > 0) + Append (f++); +} + +UchEventFeatureList :: ~UchEventFeatureList () +{ +} + + +CcuListOf * UchEventType::AllTypes = 0; + +void +UchEventType :: ClassInit () +{ + AllTypes = new CcuListOf ; +} + +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 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); +} + -- cgit v1.1