Remove dead field
[oota-llvm.git] / include / llvm / Module.h
index ab1c0dd7aa1f1c17a27b7551d485b2687ba2a81a..846b47f057606d337b461e6810dc25bd50ed1f40 100644 (file)
 
 #include "llvm/Function.h"
 #include "llvm/GlobalVariable.h"
+#include "llvm/ADT/SetVector.h"
 
 namespace llvm {
 
 class GlobalVariable;
 class GlobalValueRefMap;   // Used by ConstantVals.cpp
-class ConstantPointerRef;
 class FunctionType;
 class SymbolTable;
 
@@ -47,7 +47,7 @@ class Module {
 public:
   typedef iplist<GlobalVariable> GlobalListType;
   typedef iplist<Function> FunctionListType;
-  typedef std::vector<std::string> LibraryListType;
+  typedef SetVector<std::string> LibraryListType;
 
   // Global Variable iterators...
   typedef GlobalListType::iterator                             giterator;
@@ -62,8 +62,7 @@ public:
   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
 
   // Library list iterators
-  typedef LibraryListType::iterator literator;
-  typedef LibraryListType::const_iterator const_literator;
+  typedef LibraryListType::const_iterator lib_iterator;
 
   enum Endianness  { AnyEndianness, LittleEndian, BigEndian };
   enum PointerSize { AnyPointerSize, Pointer32, Pointer64 };
@@ -81,11 +80,7 @@ private:
   Endianness  Endian;     // True if target is little endian
   PointerSize PtrSize;    // True if target has 32-bit pointers (false = 64-bit)
 
-  // Accessor for the underlying GVRefMap... only through the Constant class...
   friend class Constant;
-  friend class ConstantPointerRef;
-  ConstantPointerRef *getConstantPointerRef(GlobalValue *GV);
-  void destroyConstantPointerRef(ConstantPointerRef *CPR);
 
 public:
   Module(const std::string &ModuleID);
@@ -93,7 +88,7 @@ public:
 
   const std::string& getModuleIdentifier() const { return ModuleID; }
   const std::string& getTargetTriple() const { return TargetTriple; }
-  void setTargetTriple(std::string& T) { TargetTriple = T; }
+  void setTargetTriple(const std::string& T) { TargetTriple = T; }
 
   /// Target endian information...
   Endianness getEndianness() const { return Endian; }
@@ -142,7 +137,7 @@ public:
   /// getGlobalVariable - Look up the specified global variable in the module
   /// symbol table.  If it does not exist, return null.  Note that this only
   /// returns a global variable if it does not have internal linkage.  The type
-  /// argument should be the underlying type of the global, ie, it should not
+  /// argument should be the underlying type of the global, i.e., it should not
   /// have the top-level PointerType, which represents the address of the
   /// global.
   ///
@@ -201,7 +196,7 @@ public:
   inline reverse_giterator       grend  ()       { return GlobalList.rend();   }
   inline const_reverse_giterator grend  () const { return GlobalList.rend();   }
 
-  inline unsigned                  gsize() const { return GlobalList.size(); }
+  inline size_t                    gsize() const { return GlobalList.size(); }
   inline bool                     gempty() const { return GlobalList.empty(); }
   inline const GlobalVariable    &gfront() const { return GlobalList.front(); }
   inline       GlobalVariable    &gfront()       { return GlobalList.front(); }
@@ -219,28 +214,36 @@ public:
   inline reverse_iterator       rend  ()       { return FunctionList.rend();   }
   inline const_reverse_iterator rend  () const { return FunctionList.rend();   }
 
-  inline unsigned                 size() const { return FunctionList.size(); }
+  inline size_t                   size() const { return FunctionList.size(); }
   inline bool                    empty() const { return FunctionList.empty(); }
   inline const Function         &front() const { return FunctionList.front(); }
   inline       Function         &front()       { return FunctionList.front(); }
   inline const Function          &back() const { return FunctionList.back(); }
   inline       Function          &back()       { return FunctionList.back(); }
 
-  // LibraryList interface
-  inline literator           lbegin()       { return LibraryList.begin(); }
-  inline const_literator     lbegin() const { return LibraryList.begin(); }
-  inline literator           lend  ()       { return LibraryList.end();   }
-  inline const_literator     lend  () const { return LibraryList.end();   }
-
-  inline unsigned             lsize() const { return LibraryList.size(); }
-  inline bool                lempty() const { return LibraryList.empty(); }
-  inline const std::string&  lfront() const { return LibraryList.front(); }
-  inline       std::string&  lfront()       { return LibraryList.front(); }
-  inline const std::string&   lback() const { return LibraryList.back(); }
-  inline       std::string&   lback()       { return LibraryList.back(); }
-
-  inline void linsert(std::string& Lib){ LibraryList.push_back(Lib); }
-  inline void lremove(std::string& Lib);
+  //===--------------------------------------------------------------------===//
+  // List of dependent library access functions
+
+  /// @brief Get a constant iterator to beginning of dependent library list.
+  inline lib_iterator lib_begin() const { return LibraryList.begin(); }
+
+  /// @brief Get a constant iterator to end of dependent library list.
+  inline lib_iterator lib_end() const { return LibraryList.end(); }
+
+  /// @brief Returns the number of items in the list of libraries.
+  inline size_t lib_size() const { return LibraryList.size(); }
+
+  /// @brief Add a library to the list of dependent libraries
+  inline void addLibrary(const std::string& Lib){ LibraryList.insert(Lib); }
+
+  /// @brief Remove a library from the list of dependent libraries
+  inline void removeLibrary(const std::string& Lib) { LibraryList.remove(Lib); }
+
+  /// @brief Get all the libraries 
+  inline const LibraryListType& getLibraries() const { return LibraryList; }
+
+  //===--------------------------------------------------------------------===//
+  // Utility functions for printing and dumping Module objects
 
   void print(std::ostream &OS) const { print(OS, 0); }
   void print(std::ostream &OS, AssemblyAnnotationWriter *AAW) const;