|
// CPPTypeBitfield.h: definition of bitfield-type modifier class
#ifndef INCL_CPPTYPEBITFIELD_H
#define INCL_CPPTYPEBITFIELD_H
#include "CPPTypeModifier.h"
///////////////////////////////////////////////////////////////////////
// CPPTypeBitfield type class. This class holds declarations
// of bitfield types that are derived from other types
///////////////////////////////////////////////////////////////////////
class CPPTypeBitfield : public CPPTypeModifier
{
public:
// ctor/dtor
CPPTypeBitfield(
CPPTypeRefI baseType_,
int fieldlen_,
bool addToBase
);
virtual ~CPPTypeBitfield();
// access methods
int GetFieldlen() const { assertValid(); return fieldlen; }
// Format the name of the type
virtual JLStr FormatName(
const JLStr& declName,
const JLStr& suffixStr,
StrListRefI argList,
bool forSpecialization
) const;
// Comparison of two bitfield type nodes.
virtual bool LessThanNode(const CPPType& rhs) const
{
assertValid();
return
CPPTypeModifier::LessThanNode(rhs) ||
(
rhs.GetFlavor() == Bitfield &&
GetFieldlen() < STATIC_CAST(const CPPTypeBitfield*, &rhs)->GetFieldlen()
);
}
private:
// disallow copy or assignment
CPPTypeBitfield(const CPPTypeBitfield&);
void operator=(const CPPTypeBitfield&);
void assertValid() const {
CPPTypeModifier::assertValid();
assert(GetFlavor() == Bitfield);
}
int fieldlen;
};
#endif
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.
A list of licenses authors might use can be found here
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.