[llvm-commits] CVS: llvm/include/llvm/DerivedTypes.h
Chris Lattner
lattner at cs.uiuc.edu
Sun Feb 8 22:46:32 PST 2004
Changes in directory llvm/include/llvm:
DerivedTypes.h updated: 1.51 -> 1.52
---
Log message:
Increase encapsulation of the StructType class, eliminating the getElementTypes() member
---
Diffs of the changes: (+15 -9)
Index: llvm/include/llvm/DerivedTypes.h
diff -u llvm/include/llvm/DerivedTypes.h:1.51 llvm/include/llvm/DerivedTypes.h:1.52
--- llvm/include/llvm/DerivedTypes.h:1.51 Sun Feb 8 22:12:57 2004
+++ llvm/include/llvm/DerivedTypes.h Sun Feb 8 22:36:50 2004
@@ -123,8 +123,7 @@
class FunctionType : public DerivedType {
friend class TypeMap<FunctionValType, FunctionType>;
PATypeHandle ResultType;
- typedef std::vector<PATypeHandle> ParamTypes;
- ParamTypes ParamTys;
+ std::vector<PATypeHandle> ParamTys;
bool isVarArgs;
FunctionType(const FunctionType &); // Do not implement
@@ -153,7 +152,7 @@
inline bool isVarArg() const { return isVarArgs; }
inline const Type *getReturnType() const { return ResultType; }
- typedef ParamTypes::const_iterator param_iterator;
+ typedef std::vector<PATypeHandle>::const_iterator param_iterator;
param_iterator param_begin() const { return ParamTys.begin(); }
param_iterator param_end() const { return ParamTys.end(); }
@@ -212,12 +211,9 @@
};
-struct StructType : public CompositeType {
+class StructType : public CompositeType {
friend class TypeMap<StructValType, StructType>;
- typedef std::vector<PATypeHandle> ElementTypes;
-
-private:
- ElementTypes ETypes; // Element types of struct
+ std::vector<PATypeHandle> ETypes; // Element types of struct
StructType(const StructType &); // Do not implement
const StructType &operator=(const StructType &); // Do not implement
@@ -240,7 +236,17 @@
/// StructType.
static StructType *get(const std::vector<const Type*> &Params);
- inline const ElementTypes &getElementTypes() const { return ETypes; }
+ // Iterator access to the elements
+ typedef std::vector<PATypeHandle>::const_iterator element_iterator;
+ element_iterator element_begin() const { return ETypes.begin(); }
+ element_iterator element_end() const { return ETypes.end(); }
+
+ // Random access to the elements
+ unsigned getNumElements() const { return ETypes.size(); }
+ const Type *getElementType(unsigned N) const {
+ assert(N < ETypes.size() && "Element number out of range!");
+ return ETypes[N];
+ }
virtual const Type *getContainedType(unsigned i) const {
return ETypes[i].get();
More information about the llvm-commits
mailing list