[llvm-commits] [llvm] r77010 - /llvm/trunk/docs/CodingStandards.html

Daniel Dunbar daniel at zuster.org
Fri Jul 24 16:04:51 PDT 2009


Author: ddunbar
Date: Fri Jul 24 18:04:51 2009
New Revision: 77010

URL: http://llvm.org/viewvc/llvm-project?rev=77010&view=rev
Log:
CodingStandards: Emphasize use of raw_ostream more.
 - Chris, please approve.

Modified:
    llvm/trunk/docs/CodingStandards.html

Modified: llvm/trunk/docs/CodingStandards.html
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/CodingStandards.html?rev=77010&r1=77009&r2=77010&view=diff

==============================================================================
--- llvm/trunk/docs/CodingStandards.html (original)
+++ llvm/trunk/docs/CodingStandards.html Fri Jul 24 18:04:51 2009
@@ -57,6 +57,7 @@
           <li><a href="#ll_iostream"><tt>#include <iostream></tt> is
               <em>forbidden</em></a></li>
           <li><a href="#ll_avoidendl">Avoid <tt>std::endl</tt></a></li>
+          <li><a href="#ll_raw_ostream">Use <tt>raw_ostream</tt></a</li>
         </ol></li>
         
       <li><a href="#nano">Microscopic Details</a>
@@ -907,9 +908,9 @@
 example) is allowed normally, it is just <tt><iostream></tt> that is
 causing problems.</p>
 
-<p>The preferred replacement for stream functionality is the
-<tt>llvm::raw_ostream</tt> class (for writing to output streams of various
-sorts) and the <tt>llvm::MemoryBuffer</tt> API (for reading in files).</p>
+<p>In addition, new code should always
+use <a href="#ll_raw_ostream"><tt>raw_ostream</tt></a> or
+the <tt>llvm::MemoryBuffer</tt> API (for reading in files).</p>
 
 </div>
 
@@ -938,6 +939,26 @@
 </div>
 
 
+<!-- _______________________________________________________________________ -->
+<div class="doc_subsubsection">
+  <a name="ll_raw_ostream">Use <tt>raw_ostream</tt></a>
+</div>
+
+<div class="doc_text">
+
+<p>LLVM includes a lightweight, simple, and efficient stream implementation
+in <tt>llvm/Support/raw_ostream.h</tt> which provides all of the common features
+of <tt>std::iostream</tt>.  All new code should use <tt>raw_ostream</tt> instead
+of <tt>iostream</tt>.</p>
+
+<p>Unlike <tt>std::iostream</tt>, <tt>raw_ostream</tt> is not a template and can
+be forward declared as <tt>class raw_ostream</tt>.  Public headers should
+generally not include the <tt>raw_ostream</tt> header, but use forward
+declarations and constant references to <tt>raw_ostream</tt> instances.</p>
+
+</div>
+
+
 <!-- ======================================================================= -->
 <div class="doc_subsection">
   <a name="nano">Microscopic Details</a>





More information about the llvm-commits mailing list