[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