Go ahead and trust the client not to mess with the ModuleProvider* returned
authorReid Spencer <rspencer@reidspencer.com>
Fri, 5 Nov 2004 18:48:02 +0000 (18:48 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Fri, 5 Nov 2004 18:48:02 +0000 (18:48 +0000)
by the findModuleContainingSymbol method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17491 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Bytecode/Archive.h

index 4ceb951a9242dc0acbe59c9f09bf0603d415a2b4..7f1333e8bcbdfb5b0f6136b6780963be037f564c 100644 (file)
@@ -135,16 +135,15 @@ class Archive {
     /// 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 @@ class Archive {
     );
 
   /// @}
+  /// @name Data
+  /// @{
+  private:
+    class ArchiveInternals;
+    ArchiveInternals* impl;   ///< Implementation class
+  /// @}
 };
 
 } // End llvm namespace