From 037b8b70d04ce214464c89d2480811484f9ec13d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 9 Feb 2004 04:36:50 +0000 Subject: [PATCH] Increase encapsulation of the StructType class, eliminating the getElementTypes() member git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11227 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/DerivedTypes.h | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/include/llvm/DerivedTypes.h b/include/llvm/DerivedTypes.h index 1ed6ee41795..9fdff68b402 100644 --- a/include/llvm/DerivedTypes.h +++ b/include/llvm/DerivedTypes.h @@ -123,8 +123,7 @@ public: class FunctionType : public DerivedType { friend class TypeMap; PATypeHandle ResultType; - typedef std::vector ParamTypes; - ParamTypes ParamTys; + std::vector ParamTys; bool isVarArgs; FunctionType(const FunctionType &); // Do not implement @@ -153,7 +152,7 @@ public: inline bool isVarArg() const { return isVarArgs; } inline const Type *getReturnType() const { return ResultType; } - typedef ParamTypes::const_iterator param_iterator; + typedef std::vector::const_iterator param_iterator; param_iterator param_begin() const { return ParamTys.begin(); } param_iterator param_end() const { return ParamTys.end(); } @@ -212,12 +211,9 @@ public: }; -struct StructType : public CompositeType { +class StructType : public CompositeType { friend class TypeMap; - typedef std::vector ElementTypes; - -private: - ElementTypes ETypes; // Element types of struct + std::vector ETypes; // Element types of struct StructType(const StructType &); // Do not implement const StructType &operator=(const StructType &); // Do not implement @@ -240,7 +236,17 @@ public: /// StructType. static StructType *get(const std::vector &Params); - inline const ElementTypes &getElementTypes() const { return ETypes; } + // Iterator access to the elements + typedef std::vector::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(); -- 2.34.1