OSDN Git Service

2009-09-26 Paolo Carlini <paolo.carlini@oracle.com>
[pf3gnuchains/gcc-fork.git] / libstdc++-v3 / doc / xml / manual / intro.xml
index fb23f3d..2fcdeb1 100644 (file)
   </keywordset>
 </partinfo>
 
-<title>Introduction</title>
-
+<title>
+  Introduction
+  <indexterm><primary>Introduction</primary></indexterm>
+</title>
 <!-- Chapter 01 : Status -->
 <chapter id="manual.intro.status" xreflabel="Status">
+  <?dbhtml filename="status.html"?>
   <title>Status</title>
 
-
-  <sect1 id="manual.intro.status.standard" xreflabel="Implementation Status">
+  <!-- Section 01 : Implementation Status -->
+  <sect1 id="manual.intro.status.iso" xreflabel="Status">
     <title>Implementation Status</title>
 
-    <!-- Section 01 : Status C++ 1998 -->
+    <!-- Section 01.1 : Status C++ 1998 -->
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
                parse="xml" href="status_cxx1998.xml">
     </xi:include>
 
-    <!-- Section 02 : Status C++ TR1 -->
+    <!-- Section 01.2 : Status C++ TR1 -->
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
                parse="xml" href="status_cxxtr1.xml">
     </xi:include>
 
-    <!-- Section 03 : Status C++ 200x -->
+    <!-- Section 01.3 : Status C++ 200x -->
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
                parse="xml" href="status_cxx200x.xml">
     </xi:include>    
@@ -45,6 +48,7 @@
 
   <!-- Section 02 : License -->
   <sect1 id="manual.intro.status.license" xreflabel="License">
+    <?dbhtml filename="license.html"?>
     <title>License</title>
     <para>
     There are two licenses affecting GNU libstdc++: one for the code,
     
     <para>
       The source code is distributed under the <link
-      linkend="appendix.gpl-2.0">GNU General Public License version 2</link>,
-      with the so-called <quote>Runtime Exception</quote>
-      as follows (or see any header or implementation file):
+      linkend="appendix.gpl-3.0">GNU General Public License version 3</link>,
+      with the addition under section 7 of an exception described in
+      the <quote>GCC Runtime Library Exception, version 3.1</quote>
+      as follows (or see the file COPYING.RUNTIME):
     </para>
     
     <literallayout>
-      As a special exception, you may use this file as part of a free software
-      library without restriction.  Specifically, if other files instantiate
-      templates or use macros or inline functions from this file, or you compile
-      this file and link it with other files to produce an executable, this
-      file does not by itself cause the resulting executable to be covered by
-      the GNU General Public License.  This exception does not however
-      invalidate any other reasons why the executable file might be covered by
-      the GNU General Public License.
+GCC RUNTIME LIBRARY EXCEPTION
+
+Version 3.1, 31 March 2009
+
+Copyright (C) 2009 <ulink url="http://www.fsf.org">Free Software Foundation, Inc.</ulink>
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+This GCC Runtime Library Exception ("Exception") is an additional
+permission under section 7 of the GNU General Public License, version
+3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
+bears a notice placed by the copyright holder of the file stating that
+the file is governed by GPLv3 along with this Exception.
+
+When you use GCC to compile a program, GCC may combine portions of
+certain GCC header files and runtime libraries with the compiled
+program. The purpose of this Exception is to allow compilation of
+non-GPL (including proprietary) programs to use, in this way, the
+header files and runtime libraries covered by this Exception.
+
+0. Definitions.
+
+A file is an "Independent Module" if it either requires the Runtime
+Library for execution after a Compilation Process, or makes use of an
+interface provided by the Runtime Library, but is not otherwise based
+on the Runtime Library.
+
+"GCC" means a version of the GNU Compiler Collection, with or without
+modifications, governed by version 3 (or a specified later version) of
+the GNU General Public License (GPL) with the option of using any
+subsequent versions published by the FSF.
+
+"GPL-compatible Software" is software whose conditions of propagation,
+modification and use would permit combination with GCC in accord with
+the license of GCC.
+
+"Target Code" refers to output from any compiler for a real or virtual
+target processor architecture, in executable form or suitable for
+input to an assembler, loader, linker and/or execution
+phase. Notwithstanding that, Target Code does not include data in any
+format that is used as a compiler intermediate representation, or used
+for producing a compiler intermediate representation.
+
+The "Compilation Process" transforms code entirely represented in
+non-intermediate languages designed for human-written code, and/or in
+Java Virtual Machine byte code, into Target Code. Thus, for example,
+use of source code generators and preprocessors need not be considered
+part of the Compilation Process, since the Compilation Process can be
+understood as starting with the output of the generators or
+preprocessors.
+
+A Compilation Process is "Eligible" if it is done using GCC, alone or
+with other GPL-compatible software, or if it is done without using any
+work based on GCC. For example, using non-GPL-compatible Software to
+optimize any GCC intermediate representations would not qualify as an
+Eligible Compilation Process.
+
+1. Grant of Additional Permission.
+
+You have permission to propagate a work of Target Code formed by
+combining the Runtime Library with Independent Modules, even if such
+propagation would otherwise violate the terms of GPLv3, provided that
+all Target Code was generated by Eligible Compilation Processes. You
+may then convey such a combination under terms of your choice,
+consistent with the licensing of the Independent Modules.
+
+2. No Weakening of GCC Copyleft.
+
+The availability of this Exception does not imply any general
+presumption that third-party software is unaffected by the copyleft
+requirements of the license of GCC.
     </literallayout>
     
     <para>
       For documentation generated by doxygen or other automated tools
       via processing source code comments and markup, the original source
       code license applies to the generated files. Thus, the doxygen
-      documents are licensed <link linkend="appendix.gpl-2.0">GPL</link>.
+      documents are licensed <link linkend="appendix.gpl-3.0">GPL</link>.
     </para>
     
     <para>
   
   <!-- Section 03 : Known Bugs -->
   <sect1 id="manual.intro.status.bugs" xreflabel="Bugs">
+    <?dbhtml filename="bugs.html"?>
     <title>Bugs</title>
 
     <sect2 id="manual.intro.status.bugs.impl" xreflabel="Bugs impl">
        and src directories for appearances of
        <constant>_GLIBCXX_RESOLVE_LIB_DEFECTS</constant> for examples
        of style.  Note that we usually do not make changes to the
-       code until an issue has reached <ulink url="lwg-active.html#DR">DR</ulink> status.
+       code until an issue has reached <ulink url="../ext/lwg-active.html#DR">DR</ulink> status.
       </para>
 
       <variablelist>
     <listitem><para>Re-opening a file stream does <emphasis>not</emphasis> clear the state flags.
     </para></listitem></varlistentry>
 
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#23">23</ulink>:
+        <emphasis>Num_get overflow result</emphasis>
+    </term>
+    <listitem><para>Implement the proposed resolution.
+    </para></listitem></varlistentry>
+
     <varlistentry><term><ulink url="../ext/lwg-defects.html#25">25</ulink>:
         <emphasis>String operator&lt;&lt; uses width() value wrong</emphasis>
     </term>
         the new effects paragraph.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="lwg-defects.html#83">83</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#83">83</ulink>:
         <emphasis>string::npos vs. string::max_size()</emphasis>
     </term>
     <listitem><para>Safety checks on the size of the string should test against
     <listitem><para>These functions set <code>failbit</code> on error now.
     </para></listitem></varlistentry>
 
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#130">130</ulink>:
+        <emphasis>Return type of container::erase(iterator) differs for associative containers</emphasis>
+    </term>
+    <listitem><para>Make member <code>erase</code> return iterator for <code>set</code>, <code>multiset</code>, <code>map</code>, <code>multimap</code>. 
+    </para></listitem></varlistentry>
+
     <varlistentry><term><ulink url="../ext/lwg-defects.html#136">136</ulink>:
         <emphasis>seekp, seekg setting wrong streams?</emphasis>
     </term>
         is specified in the conversion specification.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#233">233</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#233">233</ulink>:
         <emphasis>Insertion hints in associative containers</emphasis>
     </term>
     <listitem><para>Implement N1780, first check before then check after, insert as close
     <listitem><para>Add const overloads of <code>is_open</code>.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#387">387</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#387">387</ulink>:
         <emphasis>std::complex over-encapsulated</emphasis>
     </term>
     <listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code>
     <listitem><para>Change it to return a <code>const T&amp;</code>.
     </para></listitem></varlistentry>
 
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#396">396</ulink>:
+        <emphasis>what are characters zero and one</emphasis>
+    </term>
+    <listitem><para>Implement the proposed resolution.
+    </para></listitem></varlistentry>
+
     <varlistentry><term><ulink url="../ext/lwg-defects.html#402">402</ulink>:
         <emphasis>Wrong new expression in [some_]allocator::construct</emphasis>
     </term>
     <listitem><para>Replace &quot;new&quot; with &quot;::new&quot;.
     </para></listitem></varlistentry>
 
+    <varlistentry><term><ulink url="../ext/lwg-active.html#408">408</ulink>:
+        <emphasis>
+        Is vector&lt;reverse_iterator&lt;char*&gt; &gt; forbidden?
+        </emphasis>
+    </term>
+    <listitem><para>Tweak the debug-mode checks in _Safe_iterator.
+    </para></listitem></varlistentry>
+
     <varlistentry><term><ulink url="../ext/lwg-defects.html#409">409</ulink>:
         <emphasis>Closing an fstream should clear the error state</emphasis>
     </term>
     <listitem><para>Follow the straightforward proposed resolution.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#550">550</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#550">550</ulink>:
         <emphasis>What should the return type of pow(float,int) be?</emphasis>
     </term>
     <listitem><para>In C++0x mode, remove the pow(float,int), etc., signatures.
     <listitem><para>Change it to be a formatted output function (i.e. catch exceptions).
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#596">596</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#596">596</ulink>:
         <emphasis>27.8.1.3 Table 112 omits "a+" and "a+b" modes</emphasis>
     </term>
     <listitem><para>Add the missing modes to fopen_mode.
     </para></listitem></varlistentry>
 
+    <varlistentry><term><ulink url="../ext/lwg-active.html#630">630</ulink>:
+        <emphasis>arrays of valarray</emphasis>
+    </term>
+    <listitem><para>Implement the simple resolution.
+    </para></listitem></varlistentry>
+
     <varlistentry><term><ulink url="../ext/lwg-defects.html#660">660</ulink>:
         <emphasis>Missing bitwise operations</emphasis>
     </term>
     <listitem><para>Add the missing operations.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#691">691</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#691">691</ulink>:
         <emphasis>const_local_iterator cbegin, cend missing from TR1</emphasis>
     </term>
     <listitem><para>In C++0x mode add cbegin(size_type) and cend(size_type)
     <listitem><para>Make the member functions table and classic_table public.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#761">761</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-active.html#696">696</ulink>:
+        <emphasis>istream::operator&gt;&gt;(int&amp;) broken</emphasis>
+    </term>
+    <listitem><para>Implement the straightforward resolution.
+    </para></listitem></varlistentry>
+
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#761">761</ulink>:
         <emphasis>unordered_map needs an at() member function</emphasis>
     </term>
     <listitem><para>In C++0x mode, add at() and at() const.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#775">775</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#775">775</ulink>:
         <emphasis>Tuple indexing should be unsigned?</emphasis>
     </term>
     <listitem><para>Implement the int -> size_t replacements.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#776">776</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#776">776</ulink>:
         <emphasis>Undescribed assign function of std::array</emphasis>
     </term>
     <listitem><para>In C++0x mode, remove assign, add fill.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#778">778</ulink>:
-        <emphasis>std::bitset does not have any constructor taking a string 
-                 literal</emphasis>
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#781">781</ulink>:
+        <emphasis>std::complex should add missing C99 functions</emphasis>
     </term>
-    <listitem><para>Add it.
+    <listitem><para>In C++0x mode, add std::proj.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#781">781</ulink>:
-        <emphasis>std::complex should add missing C99 functions</emphasis>
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#809">809</ulink>:
+        <emphasis>std::swap should be overloaded for array types</emphasis>
     </term>
-    <listitem><para>In C++0x mode, add std::proj.
+    <listitem><para>Add the overload.
     </para></listitem></varlistentry>
 
-    <varlistentry><term><ulink url="../ext/lwg-active.html#844">844</ulink>:
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#844">844</ulink>:
         <emphasis>complex pow return type is ambiguous</emphasis>
     </term>
     <listitem><para>In C++0x mode, remove the pow(complex&lt;T&gt;, int) signature.
     </para></listitem></varlistentry>
+
+    <varlistentry><term><ulink url="../ext/lwg-defects.html#853">853</ulink>:
+        <emphasis>to_string needs updating with zero and one</emphasis>
+    </term>
+    <listitem><para>Update / add the signatures.
+    </para></listitem></varlistentry>
   </variablelist>
 
  </sect2>
 
 <!-- Chapter 02 : Setup -->
 <chapter id="manual.intro.setup" xreflabel="Setup">
+  <?dbhtml filename="setup.html"?>
   <title>Setup</title>
 
-  <!-- Section 01 : Configure -->
+   <para>To transform libstdc++ sources into installed include files
+   and properly built binaries useful for linking to other software is
+   a multi-step process. Steps include getting the sources,
+   configuring and building the sources, testing, and installation.
+   </para>
+
+   <para>The general outline of commands is something like:
+   </para>
+
+   <programlisting>
+   <emphasis>get gcc sources</emphasis>
+   <emphasis>extract into gccsrcdir</emphasis>
+   mkdir <emphasis>gccbuilddir</emphasis>
+   cd <emphasis>gccbuilddir</emphasis>
+   <emphasis>gccsrcdir</emphasis>/configure --prefix=<emphasis>destdir</emphasis> --other-opts...
+   make
+   make check
+   make install
+   </programlisting>
+
+   <para>
+     Each step is described in more detail in the following sections.
+   </para>
+
+  <!-- Section 01 : Prerequisites -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
-             parse="xml" href="configure.xml">
+             parse="xml" href="prerequisites.xml">
   </xi:include>
 
-  <!-- Section 02 : Build -->
+  <!-- Section 02 : Configure -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
-             parse="xml" href="build.xml">
+             parse="xml" href="configure.xml">
   </xi:include>
 
-  <!-- Section 03 : Test -->
+  <!-- Section 03 : Make -->
+<sect1 id="manual.intro.setup.make" xreflabel="Make">
+  <?dbhtml filename="make.html"?>
+<title>Make</title>
+   <para>If you have never done this before, you should read the basic
+      <ulink url="http://gcc.gnu.org/install/">GCC Installation
+      Instructions</ulink> first.  Read <emphasis>all of them</emphasis>.
+      <emphasis>Twice.</emphasis>
+   </para>
+
+<para>Then type:<command>make</command>, and congratulations, you're
+started to build.
+</para>
+
+</sect1>
+
+  <!-- Section 04 : Test -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
              parse="xml" href="test.xml">
   </xi:include>