Main Page | Class Hierarchy | Compound List | File List | Compound Members

BxUnion.h

00001 // ##################################################################
00002 // Binx
00003 // $Id: BxUnion_8h-source.html,v 1.1.1.1 2006/04/19 14:19:02 edikt2 Exp $
00004 //
00005 // Class for union data type.
00006 // ##################################################################
00007 /*
00008 
00009 //  edikt::BinX
00010 //  www.edikt.org
00011 //  support@edikt.org
00012 
00013 // Copyright (c) 2004 The University of Edinburgh.
00014 
00015 */
00016 
00017 #ifndef __BxUnion__
00018 #define __BxUnion__
00019 
00020 #include "BxDataObject.h"
00021 #include "BxUnionCases.h"
00022 
00056 class DECLSPEC BxUnion : public BxDataObject
00057 {
00058 public:
00059     BxUnion();
00060     BxUnion(const BxUnion& copy);
00061     virtual ~BxUnion();
00062 
00063     virtual char * className() const { return "BxUnion"; }
00064     virtual BxUnion* clone() const;
00065     virtual void readFromBuffer(const byte *);
00066     virtual bool readFromFile();
00067     virtual char* toString(bool xml);
00068     virtual bool toStream(FILE*);
00069     virtual bool toStreamBinary(FILE*);
00070 
00071         // Write out the binary data with the specified byte order
00072     virtual bool toStreamBinary(FILE*, BxByteOrder);
00073     virtual void setBinaryFilePtr(BxBinaryFile* fp);
00074 
00075     void setDiscriminant(BxDataObject *);
00076     void setAssignedCase(BxUnionCase *p);
00077     void setAssignedCase(int index);
00078     void setAssignedCase();
00079 
00080     const BxUnionCases& getUnionCases() { return cases_; }
00081     BxDataObject * getDiscriminant() const { return discriminant_; }
00082     BxUnionCase * getAssignedCase() const { return assigned_; }
00083     BxDataObject * getDataObject();
00084 
00085     void addUnionCase(BxUnionCase * uc);
00086     void addUnionCase(const char * sDiscriminantValue, BxDataObject * pArmObject);
00087 
00088 protected:
00089     BxDataObject * getArmDataObject() const;
00090     void resize();
00091 
00092 private:
00093     BxDataObject * discriminant_;   //<common discriminant for data object type
00094     BxUnionCase * assigned_;    //<point to the found case
00095     BxUnionCases  cases_;   //<list of cases defined in BinX
00096 
00097 };
00098 
00099 #endif

Generated on Fri May 6 13:36:18 2005 for edikt::BinX by doxygen 1.3.3