|
// CPPTypeIndirection.h: definition of pointer/reference type modifier class
#ifndef INCL_CPPTYPEINDIRECTION_H
#define INCL_CPPTYPEINDIRECTION_H
#include "CPPTypeModifier.h"
///////////////////////////////////////////////////////////////////////
// CPPTypeIndirection type class. This class holds types
// that are indirections (pointer or reference) to other types.
///////////////////////////////////////////////////////////////////////
class CPPTypeIndirection : public CPPTypeModifier
{
public:
enum IndirectType {
IndirectPointer,
IndirectReference
};
// ctor/dtor
CPPTypeIndirection(
CPPTypeRefI baseType_,
IndirectType indirectType_,
bool addToBase
);
virtual ~CPPTypeIndirection();
// access methods
IndirectType GetIndirectType() const {
assertValid(); return indirectType;
}
// Remove reference
virtual CPPTypeRefI StripReference();
// Remove pointer
virtual CPPTypeRefI StripPointer();
// Format the name of the type
virtual JLStr FormatName(
const JLStr& declName,
const JLStr& suffixStr,
StrListRefI argList,
bool forSpecialization
) const;
// Comparison of two indirection type nodes.
virtual bool LessThanNode(const CPPType& rhs) const
{
assertValid();
return
CPPTypeModifier::LessThanNode(rhs) ||
(
rhs.GetFlavor() == Indirection &&
indirectType < STATIC_CAST(const CPPTypeIndirection*, &rhs)->GetIndirectType()
);
}
private:
// disallow copy or assignment
CPPTypeIndirection(const CPPTypeIndirection&);
void operator=(const CPPTypeIndirection&);
void assertValid() const {
CPPTypeModifier::assertValid();
assert(flavor == Indirection);
}
IndirectType indirectType;
};
#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.