[llvm-commits] CVS: llvm/include/llvm/Bytecode/Archive.h

Reid Spencer reid at x10sys.com
Fri Nov 5 10:48:13 PST 2004



Changes in directory llvm/include/llvm/Bytecode:

Archive.h updated: 1.2 -> 1.3
---
Log message:

Go ahead and trust the client not to mess with the ModuleProvider* returned
by the findModuleContainingSymbol method.


---
Diffs of the changes:  (+11 -6)

Index: llvm/include/llvm/Bytecode/Archive.h
diff -u llvm/include/llvm/Bytecode/Archive.h:1.2 llvm/include/llvm/Bytecode/Archive.h:1.3
--- llvm/include/llvm/Bytecode/Archive.h:1.2	Fri Nov  5 11:44:26 2004
+++ llvm/include/llvm/Bytecode/Archive.h	Fri Nov  5 12:48:02 2004
@@ -135,16 +135,15 @@
     /// returns the associated module that defines that symbol. This method can
     /// be called as many times as necessary. This is handy for linking the 
     /// archive into another module based on unresolved symbols. Note that the
-    /// ModuleProvider returned by this accessor is constant and it may refer
-    /// to the same ModuleProvider object returned by this accessor in a 
-    /// previous call (because the associated module defines both symbols). To
-    /// use the returned ModuleProvider* you must make a copy and call the
-    /// materializeModule method on the copy.
+    /// ModuleProvider returned by this accessor should not be deleted by the
+    /// caller. It is managed internally by the Archive class. It is possible 
+    /// that multiple calls to this accessor will return the same ModuleProvider
+    /// instance because the associated module defines multiple symbols. 
     /// @throws std::string if an error occurs
     /// @returns The ModuleProvider* found or null if the archive does not 
     /// contain a module that defines the \p symbol.
     /// @brief Look up a module by symbol name.
-    const ModuleProvider* findModuleContainingSymbol(
+    ModuleProvider* findModuleContainingSymbol(
       const std::string& symbol        ///< Symbol to be sought
     ) const;
 
@@ -245,6 +244,12 @@
     );
 
   /// @}
+  /// @name Data
+  /// @{
+  private:
+    class ArchiveInternals;
+    ArchiveInternals* impl;   ///< Implementation class
+  /// @}
 };
 
 } // End llvm namespace






More information about the llvm-commits mailing list