diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-19 18:19:39 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-19 18:19:39 +0000 |
commit | e56043cd2c207982e812ce6fcecb7353dea58363 (patch) | |
tree | 01a6f37ad5a9ae6b18bdc20f052b04e19b4255c0 /libstdc++-v3/doc | |
parent | 2e02a1a4548f2ee1ea519c88e68b20621ad16fcc (diff) | |
download | gcc-e56043cd2c207982e812ce6fcecb7353dea58363.tar.gz |
2010-09-19 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 164348, with some improvements
in gcc/melt-runtime.[ch]
2010-09-19 Basile Starynkevitch <basile@starynkevitch.net>
[[merged with trunk rev.164348, so improved MELT runtime!]]
* gcc/melt-runtime.h: improved comments.
(melt_debug_garbcoll, melt_debuggc_eprintf): Moved from melt-runtime.c.
(melt_obmag_string): New declaration.
(struct meltobject_st, struct meltclosure_st, struct
meltroutine_st, struct meltmixbigint_st, struct meltstring_st):
using GTY variable_size and @@MELTGTY@@ comment.
(melt_mark_special): added debug print.
* gcc/melt-runtime.c: Improved comments.
Include bversion.h, realmpfr.h, gimple-pretty-print.h.
(ggc_force_collect) Declared external.
(melt_forward_counter): Added.
(melt_obmag_string): New function.
(melt_alptr_1, melt_alptr_2, melt_break_alptr_1_at)
(melt_break_alptr_2_at, melt_break_alptr_1,melt_break_alptr_1)
(melt_allocate_young_gc_zone, melt_free_young_gc_zone): New.
(delete_special, meltgc_make_special): Improved debug printf and
use melt_break_alptr_1...
(ggc_alloc_*) macros defined for backport to GCC 4.5
(melt_forwarded_copy): Don't clear the new destination zone in old
GGC heap.
(meltgc_add_out_raw_len): Use ggc_alloc_atomic.
(meltgc_raw_new_mappointers, meltgc_raw_put_mappointers)
(meltgc_raw_remove_mappointers): Corrected length argument to
ggc_alloc_cleared_vec_entrypointermelt_st.
(melt_really_initialize): Call melt_allocate_young_gc_zone.
(melt_initialize): Set flag_plugin_added.
(melt_val2passflag): TODO_verify_loops only in GCC 4.5
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@164424 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/doc')
191 files changed, 10683 insertions, 10062 deletions
diff --git a/libstdc++-v3/doc/Makefile.am b/libstdc++-v3/doc/Makefile.am index 4f79f9b187f..06ce75a3095 100644 --- a/libstdc++-v3/doc/Makefile.am +++ b/libstdc++-v3/doc/Makefile.am @@ -25,26 +25,46 @@ include $(top_srcdir)/fragment.am # Documentation Overview # # There are two main source materials for libstdc++ documentation. -# The first is the doxygen markup in libstdc++ sources. And the second -# is the docbook markup in doc/xml/. A third and more obscure option -# deals with charting performance tests. +# The first is the doxygen markup in libstdc++ sources, which is a +# reference to the API. And the second is the docbook markup in +# doc/xml/. +# +# A third and more obscure option deals with charting +# performance tests, and should be considered experimental. + +# Default rules. +# +# Point to best sub-rule for the requested documentation target, +# create, and then copy into toplevel directory with standardized names +# and layouts. + +# HTML +doc-html: doc-html-docbook doc-html-doxygen + cp -R ${docbook_outdir}/html ./libstdc++-manual.html + cp -R ${doxygen_outdir}/html ./libstdc++-api.html -# Default, points to current best sub-rule that is the best conversion. # MAN doc-man: doc-man-doxygen + cp -R ${doxygen_outdir}/man ./libstdc++-api.man # PDF -doc-pdf: doc-pdf-docbook +doc-pdf: doc-pdf-docbook doc-pdf-doxygen + cp ${docbook_outdir}/pdf/libstdc++-manual.pdf . + cp ${doxygen_outdir}/pdf/libstdc++-api.pdf . -# HTML -doc-html: doc-html-docbook +# TEXINFO +doc-texinfo: doc-texinfo-docbook + +# XML +doc-xml: doc-xml-single-docbook doc-xml-single-doxygen + cp ${manual_xml} . + cp ${api_xml} . # Doxygen configuration # Assumes doxygen, graphviz (with dot), pdflatex installed doxygen_script=${top_srcdir}/scripts/run_doxygen doxygen_outdir = ${glibcxx_builddir}/doc/doxygen -doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf doc-html-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -64,10 +84,11 @@ doc-xml-doxygen: ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=xml $${srcdir} $${builddir} NO) -doc-xml-single-doxygen: +api_xml = ${doxygen_outdir}/xml/libstdc++-api-single.xml +doc-xml-single-doxygen: doc-xml-doxygen @echo "Generating doxygen xml single file..." $(XSLTPROC) ${doxygen_outdir}/xml/combine.xslt \ - ${doxygen_outdir}/xml/index.xml > ${doxygen_outdir}/xml/api-spine.xml; + ${doxygen_outdir}/xml/index.xml > ${api_xml}; doc-latex-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -75,12 +96,23 @@ doc-latex-doxygen: ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=latex $${srcdir} $${builddir} NO) -# Chance of loooooonnggg creation time on this rule. -doc-pdf-doxygen: stamp-latex-doxygen +# Chance of loooooonnggg creation time on this rule. Iff this fails, +# look at refman.log and see if TeX's memory is exhausted. Symptoms +# include asking a wizard to enlarge capacity. If this is the case, +# find texmf.cnf and add a zero for pool_size, string_vacancies, +# max_strings, and pool_free values. +doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf +api_pdf = ${doxygen_outdir}/pdf/libstdc++-api.pdf + +${doxygen_outdir}/pdf: + mkdir -p ${doxygen_outdir}/pdf + +doc-pdf-doxygen: stamp-latex-doxygen ${doxygen_outdir}/pdf -(cd ${doxygen_outdir}/latex && $(MAKE) -i pdf;) echo "Generating doxygen pdf file..."; if [ -f ${doxygen_pdf} ]; then \ - echo "... ${doxygen_pdf}"; \ + mv ${doxygen_pdf} ${api_pdf} ; \ + echo ":: PDF file is ${api_pdf}"; \ else \ echo "... error"; \ exit 12; \ @@ -172,6 +204,7 @@ xml_sources_manual = \ xml_sources_extra = \ ${xml_dir}/gnu/fdl-1.2.xml \ + ${xml_dir}/gnu/fdl-1.3.xml \ ${xml_dir}/gnu/gpl-2.0.xml \ ${xml_dir}/gnu/gpl-3.0.xml @@ -187,20 +220,23 @@ xml_noinst = \ XSLTPROC = xsltproc XSLTPROC_FLAGS = --nonet --xinclude -XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-stylesheets +XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl #XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/docbook.xsl +${docbook_outdir}/fo: + mkdir -p ${docbook_outdir}/fo + ${docbook_outdir}/html: mkdir -p ${docbook_outdir}/html ${docbook_outdir}/pdf: mkdir -p ${docbook_outdir}/pdf -${docbook_outdir}/fo: - mkdir -p ${docbook_outdir}/fo +${docbook_outdir}/texinfo: + mkdir -p ${docbook_outdir}/texinfo ${docbook_outdir}/xml: mkdir -p ${docbook_outdir}/xml @@ -209,18 +245,22 @@ ${docbook_outdir}/xml: XMLLINT = xmllint #LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning #LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent -LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout -DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd -XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS) +LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout +#SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng +SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd +XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS) doc-xml-validate-docbook: $(xml_sources) @echo "Generating XML validation log..." $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml +# XML, all one page +# Some info on canonicalization +# http://www.mail-archive.com/help-texinfo@gnu.org/msg00864.html +manual_xml = ${docbook_outdir}/xml/libstdc++-manual-single.xml doc-xml-single-docbook: $(xml_sources) ${docbook_outdir}/xml @echo "Generating XML single..." - $(XMLLINT) --xinclude --noent --noblanks \ - -o ${docbook_outdir}/xml/spine-single.xml \ - ${top_srcdir}/doc/xml/spine.xml + $(XMLLINT) --xinclude --noent --noblanks --nocdata --nsclean --c14n \ + ${top_srcdir}/doc/xml/manual/spine.xml > ${manual_xml} # HTML, index plus chapters doc-html-docbook: $(xml_sources) ${docbook_outdir}/html @@ -229,9 +269,10 @@ doc-html-docbook: $(xml_sources) ${docbook_outdir}/html $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml # HTML, all one page +manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html doc-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ + $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \ $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml # FO @@ -240,52 +281,24 @@ doc-fo-docbook: $(xml_sources) ${docbook_outdir}/fo $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml -# PDF 1 -# fop -FOP = fop -FOP_FLAGS = -d -r -doc-pdf-fop-xml-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf - @echo "Generating pdf fop files from xml..." - $(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \ - -xsl $(XSL_FO_STYLE) -pdf ${docbook_outdir}/pdf/spine.pdf - -doc-pdf-fop-fo-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf doc-fo - @echo "Generating pdf fop files from fo..." - $(FOP) $(FOP_FLAGS) -fo ${docbook_outdir}/fo/spine.fo \ - -pdf ${docbook_outdir}/pdf/spine.pdf - -# PDF 2 -# xmlto -XML2PDF = xmlto -XML2PDF_FLAGS = -v pdf --skip-validation -o pdf -doc-pdf-xmlto-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf xmlto files..." - $(XML2PDF) $(XML2PDF_FLAGS) ${top_srcdir}/doc/xml/spine.xml - -# PDF 3 -# xmlroff -XMLROFF = xmlroff -XMLROFF_FLAGS = --format=pdf --backend=cairo --warn=1 --debug=1 --continue -doc-pdf-xmlroff-docbook: $(xml_sources) doc-fo - @echo "Generating pdf xmlroff files..." - $(XMLROFF) $(XMLROFF_FLAGS) ${docbook_outdir}/fo/spine.fo - -# PDF 4 -# prince -PRINCE = prince -PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf -doc-pdf-prince-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf prince files..." - $(PRINCE) $(PRINCE_FLAGS) ${top_srcdir}/xml/spine.xml - -# PDF 5 -# dblatex -DBLATEX_FLAGS = --dump --verbose --pdf -o ${docbook_outdir}/pdf/manual.pdf +# PDF, via dblatex +manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf +DBLATEX_FLAGS = --dump --verbose --pdf -o ${manual_pdf} +doc-pdf-docbook: doc-pdf-dblatex-docbook + doc-pdf-dblatex-docbook: $(xml_sources) ${docbook_outdir}/pdf @echo "Generating pdf dblatex files..." dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml -doc-pdf-docbook: doc-pdf-dblatex-docbook +# Texinfo, via docbook2X +DB2TEXI_FLAGS = \ + --encoding=utf-8//TRANSLIT \ + --string-param output-file="libstdc++-manual" \ + --string-param directory-category="GNU C++ Library" \ + --string-param explicit-node-names=true +doc-texinfo-docbook: doc-xml-single-docbook ${docbook_outdir}/texinfo + @echo "Generating texinfo files..." + db2x_docbook2texi $(DB2TEXI_FLAGS) ${manual_xml} # Performance doc and graph configuration. @@ -307,4 +320,4 @@ CLEANFILES = *.log # To remove directories. clean-local: - rm -rf man html pdf fo xml doxygen docbook stamp* + rm -rf man html pdf fo xml doxygen docbook stamp* ./libstdc++-* db2t* diff --git a/libstdc++-v3/doc/Makefile.in b/libstdc++-v3/doc/Makefile.in index 408961e3f21..005e1b8927b 100644 --- a/libstdc++-v3/doc/Makefile.in +++ b/libstdc++-v3/doc/Makefile.in @@ -34,8 +34,8 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(top_srcdir)/fragment.am +DIST_COMMON = $(top_srcdir)/fragment.am $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \ @@ -54,6 +54,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../config/enable.m4 \ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/crossconfig.m4 \ $(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \ + $(top_srcdir)/../config/gc++filt.m4 \ $(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) @@ -63,8 +64,6 @@ CONFIG_CLEAN_VPATH_FILES = depcomp = am__depfiles_maybe = SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ABI_TWEAKS_SRCDIR = @ABI_TWEAKS_SRCDIR@ ACLOCAL = @ACLOCAL@ ALLOCATOR_H = @ALLOCATOR_H@ @@ -101,6 +100,7 @@ CTIME_CC = @CTIME_CC@ CTIME_H = @CTIME_H@ CXX = @CXX@ CXXCPP = @CXXCPP@ +CXXFILT = @CXXFILT@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ C_INCLUDE_DIR = @C_INCLUDE_DIR@ @@ -267,7 +267,15 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES) # Assumes doxygen, graphviz (with dot), pdflatex installed doxygen_script = ${top_srcdir}/scripts/run_doxygen doxygen_outdir = ${glibcxx_builddir}/doc/doxygen +api_xml = ${doxygen_outdir}/xml/libstdc++-api-single.xml + +# Chance of loooooonnggg creation time on this rule. Iff this fails, +# look at refman.log and see if TeX's memory is exhausted. Symptoms +# include asking a wizard to enlarge capacity. If this is the case, +# find texmf.cnf and add a zero for pool_size, string_vacancies, +# max_strings, and pool_free values. doxygen_pdf = ${doxygen_outdir}/latex/refman.pdf +api_pdf = ${doxygen_outdir}/pdf/libstdc++-api.pdf # Docbook configuration. # Assumes @@ -335,6 +343,7 @@ xml_sources_manual = \ xml_sources_extra = \ ${xml_dir}/gnu/fdl-1.2.xml \ + ${xml_dir}/gnu/fdl-1.3.xml \ ${xml_dir}/gnu/gpl-2.0.xml \ ${xml_dir}/gnu/gpl-3.0.xml @@ -350,7 +359,7 @@ xml_noinst = \ XSLTPROC = xsltproc XSLTPROC_FLAGS = --nonet --xinclude -XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-stylesheets +XSL_STYLE_DIR = /usr/share/sgml/docbook/xsl-ns-stylesheets XSL_FO_STYLE = $(XSL_STYLE_DIR)/fo/docbook.xsl XSL_HTML_STYLE = $(XSL_STYLE_DIR)/xhtml/chunk.xsl #XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/onechunk.xsl @@ -360,33 +369,30 @@ XSL_HTML_SINGLE_STYLE = $(XSL_STYLE_DIR)/xhtml/docbook.xsl XMLLINT = xmllint #LINT_FLAGS = --debug --nonet --xinclude --nsclean --postvalid --nowarning #LINT_FLAGS = --noblanks --noout --xinclude --postvalid --noent -LINT_FLAGS = --postvalid --debug --xinclude --noent --noblanks --nonet --noout -DTD_FLAGS = --dtdvalid http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd -XMLLINT_FLAGS = $(LINT_FLAGS) $(DTD_FLAGS) - -# PDF 1 -# fop -FOP = fop -FOP_FLAGS = -d -r - -# PDF 2 -# xmlto -XML2PDF = xmlto -XML2PDF_FLAGS = -v pdf --skip-validation -o pdf - -# PDF 3 -# xmlroff -XMLROFF = xmlroff -XMLROFF_FLAGS = --format=pdf --backend=cairo --warn=1 --debug=1 --continue - -# PDF 4 -# prince -PRINCE = prince -PRINCE_FLAGS = --log prince.log -o pdf/spine.pdf - -# PDF 5 -# dblatex -DBLATEX_FLAGS = --dump --verbose --pdf -o ${docbook_outdir}/pdf/manual.pdf +LINT_FLAGS = --debug --xinclude --noent --noblanks --nonet --noout +#SCHEMA_FLAGS = --relaxng /usr/share/xml/docbook5/schema/rng/5.0/docbookxi.rng +SCHEMA_FLAGS = --dtdvalid /usr/share/xml/docbook5/schema/dtd/5.0/docbook.dtd +XMLLINT_FLAGS = $(LINT_FLAGS) $(SCHEMA_FLAGS) + +# XML, all one page +# Some info on canonicalization +# http://www.mail-archive.com/help-texinfo@gnu.org/msg00864.html +manual_xml = ${docbook_outdir}/xml/libstdc++-manual-single.xml + +# HTML, all one page +manual_html = ${docbook_outdir}/html/libstdc++-manual-single.html + +# PDF, via dblatex +manual_pdf = ${docbook_outdir}/pdf/libstdc++-manual.pdf +DBLATEX_FLAGS = --dump --verbose --pdf -o ${manual_pdf} + +# Texinfo, via docbook2X +DB2TEXI_FLAGS = \ + --encoding=utf-8//TRANSLIT \ + --string-param output-file="libstdc++-manual" \ + --string-param directory-category="GNU C++ Library" \ + --string-param explicit-node-names=true + # Performance doc and graph configuration. # Assumes pychart, beautiful soup installed. @@ -440,37 +446,6 @@ TAGS: ctags: CTAGS CTAGS: - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done check-am: all-am check: check-am all-am: Makefile @@ -570,34 +545,54 @@ uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ - clean-local distclean distclean-generic distclean-libtool \ - distdir dvi dvi-am html html-am info info-am install \ - install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - uninstall uninstall-am + clean-local distclean distclean-generic distclean-libtool dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am # Documentation Overview # # There are two main source materials for libstdc++ documentation. -# The first is the doxygen markup in libstdc++ sources. And the second -# is the docbook markup in doc/xml/. A third and more obscure option -# deals with charting performance tests. +# The first is the doxygen markup in libstdc++ sources, which is a +# reference to the API. And the second is the docbook markup in +# doc/xml/. +# +# A third and more obscure option deals with charting +# performance tests, and should be considered experimental. + +# Default rules. +# +# Point to best sub-rule for the requested documentation target, +# create, and then copy into toplevel directory with standardized names +# and layouts. + +# HTML +doc-html: doc-html-docbook doc-html-doxygen + cp -R ${docbook_outdir}/html ./libstdc++-manual.html + cp -R ${doxygen_outdir}/html ./libstdc++-api.html -# Default, points to current best sub-rule that is the best conversion. # MAN doc-man: doc-man-doxygen + cp -R ${doxygen_outdir}/man ./libstdc++-api.man # PDF -doc-pdf: doc-pdf-docbook +doc-pdf: doc-pdf-docbook doc-pdf-doxygen + cp ${docbook_outdir}/pdf/libstdc++-manual.pdf . + cp ${doxygen_outdir}/pdf/libstdc++-api.pdf . -# HTML -doc-html: doc-html-docbook +# TEXINFO +doc-texinfo: doc-texinfo-docbook + +# XML +doc-xml: doc-xml-single-docbook doc-xml-single-doxygen + cp ${manual_xml} . + cp ${api_xml} . doc-html-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -616,11 +611,10 @@ doc-xml-doxygen: builddir=`cd ..; ${PWD_COMMAND}`; \ ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=xml $${srcdir} $${builddir} NO) - -doc-xml-single-doxygen: +doc-xml-single-doxygen: doc-xml-doxygen @echo "Generating doxygen xml single file..." $(XSLTPROC) ${doxygen_outdir}/xml/combine.xslt \ - ${doxygen_outdir}/xml/index.xml > ${doxygen_outdir}/xml/api-spine.xml; + ${doxygen_outdir}/xml/index.xml > ${api_xml}; doc-latex-doxygen: -(srcdir=`cd ${top_srcdir}; ${PWD_COMMAND}`; \ @@ -628,12 +622,15 @@ doc-latex-doxygen: ${SHELL} ${doxygen_script} \ --host_alias=${host_alias} --mode=latex $${srcdir} $${builddir} NO) -# Chance of loooooonnggg creation time on this rule. -doc-pdf-doxygen: stamp-latex-doxygen +${doxygen_outdir}/pdf: + mkdir -p ${doxygen_outdir}/pdf + +doc-pdf-doxygen: stamp-latex-doxygen ${doxygen_outdir}/pdf -(cd ${doxygen_outdir}/latex && $(MAKE) -i pdf;) echo "Generating doxygen pdf file..."; if [ -f ${doxygen_pdf} ]; then \ - echo "... ${doxygen_pdf}"; \ + mv ${doxygen_pdf} ${api_pdf} ; \ + echo ":: PDF file is ${api_pdf}"; \ else \ echo "... error"; \ exit 12; \ @@ -658,37 +655,36 @@ stamp-latex-doxygen: fi $(STAMP) stamp-latex-doxygen +${docbook_outdir}/fo: + mkdir -p ${docbook_outdir}/fo + ${docbook_outdir}/html: mkdir -p ${docbook_outdir}/html ${docbook_outdir}/pdf: mkdir -p ${docbook_outdir}/pdf -${docbook_outdir}/fo: - mkdir -p ${docbook_outdir}/fo +${docbook_outdir}/texinfo: + mkdir -p ${docbook_outdir}/texinfo ${docbook_outdir}/xml: mkdir -p ${docbook_outdir}/xml doc-xml-validate-docbook: $(xml_sources) @echo "Generating XML validation log..." $(XMLLINT) $(XMLLINT_FLAGS) ${top_srcdir}/doc/xml/spine.xml - doc-xml-single-docbook: $(xml_sources) ${docbook_outdir}/xml @echo "Generating XML single..." - $(XMLLINT) --xinclude --noent --noblanks \ - -o ${docbook_outdir}/xml/spine-single.xml \ - ${top_srcdir}/doc/xml/spine.xml + $(XMLLINT) --xinclude --noent --noblanks --nocdata --nsclean --c14n \ + ${top_srcdir}/doc/xml/manual/spine.xml > ${manual_xml} # HTML, index plus chapters doc-html-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html files..." $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ $(XSL_HTML_STYLE) ${top_srcdir}/doc/xml/spine.xml - -# HTML, all one page doc-html-single-docbook: $(xml_sources) ${docbook_outdir}/html @echo "Generating html single file..." - $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/html/ \ + $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${manual_html} \ $(XSL_HTML_SINGLE_STYLE) ${top_srcdir}/doc/xml/spine.xml # FO @@ -696,29 +692,14 @@ doc-fo-docbook: $(xml_sources) ${docbook_outdir}/fo @echo "Generating FO files..." $(XSLTPROC) $(XSLTPROC_FLAGS) -o ${docbook_outdir}/fo/spine.fo \ $(XSL_FO_STYLE) ${top_srcdir}/doc/xml/spine.xml -doc-pdf-fop-xml-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf - @echo "Generating pdf fop files from xml..." - $(FOP) $(FOP_FLAGS) -xml ${top_srcdir}/doc/xml/spine.xml \ - -xsl $(XSL_FO_STYLE) -pdf ${docbook_outdir}/pdf/spine.pdf - -doc-pdf-fop-fo-docbook: $(xml_sources) ${glibcxx_builddir}/doc/pdf doc-fo - @echo "Generating pdf fop files from fo..." - $(FOP) $(FOP_FLAGS) -fo ${docbook_outdir}/fo/spine.fo \ - -pdf ${docbook_outdir}/pdf/spine.pdf -doc-pdf-xmlto-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf xmlto files..." - $(XML2PDF) $(XML2PDF_FLAGS) ${top_srcdir}/doc/xml/spine.xml -doc-pdf-xmlroff-docbook: $(xml_sources) doc-fo - @echo "Generating pdf xmlroff files..." - $(XMLROFF) $(XMLROFF_FLAGS) ${docbook_outdir}/fo/spine.fo -doc-pdf-prince-docbook: $(xml_sources) ${docbook_outdir}/pdf - @echo "Generating pdf prince files..." - $(PRINCE) $(PRINCE_FLAGS) ${top_srcdir}/xml/spine.xml +doc-pdf-docbook: doc-pdf-dblatex-docbook + doc-pdf-dblatex-docbook: $(xml_sources) ${docbook_outdir}/pdf @echo "Generating pdf dblatex files..." dblatex $(DBLATEX_FLAGS) ${top_srcdir}/doc/xml/spine.xml - -doc-pdf-docbook: doc-pdf-dblatex-docbook +doc-texinfo-docbook: doc-xml-single-docbook ${docbook_outdir}/texinfo + @echo "Generating texinfo files..." + db2x_docbook2texi $(DB2TEXI_FLAGS) ${manual_xml} doc-html-performance: -@(chmod + ${doc_performance_script}; \ ${doc_performance_script} ${top_srcdir} \ @@ -730,7 +711,7 @@ doc-html-performance: # To remove directories. clean-local: - rm -rf man html pdf fo xml doxygen docbook stamp* + rm -rf man html pdf fo xml doxygen docbook stamp* ./libstdc++-* db2t* # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/libstdc++-v3/doc/doxygen/doxygroups.cc b/libstdc++-v3/doc/doxygen/doxygroups.cc index e7c664a92fb..00175388301 100644 --- a/libstdc++-v3/doc/doxygen/doxygroups.cc +++ b/libstdc++-v3/doc/doxygen/doxygroups.cc @@ -1,5 +1,6 @@ /* - Copyright (C) 2001, 2002, 2005, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2005, 2008, 2009, 2010 + Free Software Foundation, Inc. See license.html for license. This just provides documentation for stuff that doesn't need to be in the @@ -47,7 +48,7 @@ * Components generally useful that are not part of any standard. */ -/** @defgroup SGIextensions SGI STL extensions +/** @defgroup SGIextensions SGI * @ingroup extensions Because libstdc++ based its implementation of the STL subsections of the library on the SGI 3.3 implementation, we inherited their extensions @@ -115,7 +116,7 @@ All sequences must meet certain requirements, summarized in <a href="tables.html">tables</a>. */ -/** @defgroup associative_containers Associative Containers +/** @defgroup associative_containers Associative * @ingroup containers Associative containers allow fast retrieval of data based on keys. @@ -126,7 +127,7 @@ All associative containers must meet certain requirements, summarized in <a href="tables.html">tables</a>. */ -/** @defgroup unordered_associative_containers Unordered Associative Containers +/** @defgroup unordered_associative_containers Unordered Associative * @ingroup containers Unordered associative containers allow fast retrieval of data based on keys. diff --git a/libstdc++-v3/doc/doxygen/user.cfg.in b/libstdc++-v3/doc/doxygen/user.cfg.in index 40e75087be6..c9e86a51884 100644 --- a/libstdc++-v3/doc/doxygen/user.cfg.in +++ b/libstdc++-v3/doc/doxygen/user.cfg.in @@ -1,4 +1,4 @@ -# Doxyfile 1.6.1 +# Doxyfile 1.7.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project @@ -180,7 +180,7 @@ TAB_SIZE = 4 # You can put \n's in the value part of an alias to insert newlines. ALIASES = "doctodo=@todo\nDoc me! See doc/doxygen/TODO and http://gcc.gnu.org/ml/libstdc++/2002-02/msg00003.html for more. " \ - "isiosfwd=One of the @link ios I/O @endlink " + "isiosfwd=One of the @link io I/O @endlink typedefs" # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. @@ -208,17 +208,15 @@ OPTIMIZE_FOR_FORTRAN = NO OPTIMIZE_OUTPUT_VHDL = NO -# Doxygen selects the parser to use depending on the extension of the -# files it parses. With this tag you can assign which parser to use -# for a given extension. Doxygen has a built-in mapping, but you can -# override or extend it using this tag. The format is ext=language, -# where ext is a file extension, and language is one of the parsers -# supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP, -# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f -# files as C (default is Fortran), use: inc=Fortran f=C. Note that for -# custom extensions you also need to set FILE_PATTERNS otherwise the -# files are not read by doxygen. +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. EXTENSION_MAPPING = @@ -236,63 +234,57 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO -# Set the SIP_SUPPORT tag to YES if your project consists of sip -# sources only. Doxygen will parse them like normal C++ but will -# assume all classes use public instead of private inheritance when no -# explicit protection keyword is present. +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO -# For Microsoft's IDL there are propget and propput attributes to -# indicate getter and setter methods for a property. Setting this -# option to YES (the default) will make doxygen to replace the get and -# set methods by a property in the documentation. This will only work -# if the methods are indeed getting or setting a simple type. If this -# is not the case, or you want to show the methods anyway, you should -# set this option to NO. +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen to replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. -IDL_PROPERTY_SUPPORT = YES +IDL_PROPERTY_SUPPORT = NO -# If member grouping is used in the documentation and the -# DISTRIBUTE_GROUP_DOC tag is set to YES, then doxygen will reuse the -# documentation of the first member in the group (if any) for the -# other members of the group. By default all members of a group must -# be documented explicitly. +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = YES -# Set the SUBGROUPING tag to YES (the default) to allow class member -# groups of the same type (for instance a group of public functions) -# to be put as a subgroup of that type (e.g. under the Public -# Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. SUBGROUPING = YES -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, -# or enum is documented as struct, union, or enum with the name of the -# typedef. So typedef struct TypeS {} TypeT, will appear in the -# documentation as a struct with name TypeT. When disabled the typedef -# will appear as a member of a file, namespace, or class. And the -# struct will be named TypeS. This can typically be useful for C code -# in case the coding convention dictates that all compound types are -# typedef'ed and only the typedef is referenced, never the tag name. +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use -# to determine which symbols to keep in memory and which to flush to -# disk. When the cache is full, less often used symbols will be -# written to disk. For small to medium size projects (<1000 input -# files) the default value is probably good enough. For larger -# projects a too small cache size can cause doxygen to be busy -# swapping symbols to and from disk most of the time causing a -# significant performance penality. If the system has enough physical -# memory increasing the cache will improve the performance by keeping -# more symbols in memory. Note that the value works on a logarithmic -# scale so increasing the size by one will rougly double the memory -# usage. The cache size is given by this formula: +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penality. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will rougly double the +# memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols @@ -396,6 +388,12 @@ HIDE_SCOPE_NAMES = NO SHOW_INCLUDE_FILES = NO +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. @@ -415,13 +413,13 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = YES -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will -# sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the -# default) the constructors will appear in the respective orders -# defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be -# ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored -# for detailed docs if SORT_MEMBER_DOCS is set to NO. +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = YES @@ -505,24 +503,22 @@ SHOW_FILES = YES SHOW_NAMESPACES = YES -# The FILE_VERSION_FILTER tag can be used to specify a program or -# script that doxygen should invoke to get the current version for -# each file (typically from the version control system). Doxygen will -# invoke the program by executing (via popen()) the command <command> -# <input-file>, where <command> is the value of the -# FILE_VERSION_FILTER tag, and <input-file> is the name of an input -# file provided by doxygen. Whatever the program writes to standard -# output is used as the file version. See the manual for examples. +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command <command> <input-file>, where <command> is the value of +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. FILE_VERSION_FILTER = -# The LAYOUT_FILE tag can be used to specify a layout file which will -# be parsed by doxygen. The layout file controls the global structure -# of the generated output files in an output format independent -# way. The create the layout file that represents doxygen's defaults, -# run doxygen with the -l option. You can optionally specify a file -# name after the option, if omitted DoxygenLayout.xml will be used as -# the name of the layout file. +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = @@ -581,162 +577,161 @@ WARN_LOGFILE = # configuration options related to the input files #--------------------------------------------------------------------------- -# The INPUT tag can be used to specify the files and/or directories -# that contain documented source files. You may enter file names like -# "myfile.cpp" or directories like "/usr/src/myproject". Separate the -# files or directories with spaces. +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. INPUT = @srcdir@/doc/doxygen/doxygroups.cc \ - @srcdir@/libsupc++/cxxabi.h \ - @srcdir@/libsupc++/cxxabi-forced.h \ - @srcdir@/libsupc++/exception \ - @srcdir@/libsupc++/exception_ptr.h \ - @srcdir@/libsupc++/initializer_list \ - @srcdir@/libsupc++/nested_exception.h \ - @srcdir@/libsupc++/new \ - @srcdir@/libsupc++/typeinfo \ - include/algorithm \ - include/array \ - include/atomic \ - include/bitset \ - include/chrono \ - include/complex \ - include/condition_variable \ - include/deque \ - include/fstream \ - include/functional \ - include/future \ - include/iomanip \ - include/ios \ - include/iosfwd \ - include/iostream \ - include/istream \ - include/iterator \ - include/limits \ - include/list \ - include/locale \ - include/map \ - include/memory \ - include/mutex \ - include/numeric \ - include/ostream \ - include/queue \ - include/random \ - include/ratio \ - include/regex \ - include/set \ - include/sstream \ - include/stack \ - include/stdexcept \ - include/streambuf \ - include/string \ - include/system_error \ - include/thread \ - include/tuple \ - include/type_traits \ - include/unordered_map \ - include/unordered_set \ - include/utility \ - include/valarray \ - include/vector \ - include/cassert \ - include/ccomplex \ - include/cctype \ - include/cerrno \ - include/cfenv \ - include/cfloat \ - include/cinttypes \ - include/ciso646 \ - include/climits \ - include/clocale \ - include/cmath \ - include/csetjmp \ - include/csignal \ - include/cstdarg \ - include/cstdbool \ - include/cstddef \ - include/cstdint \ - include/cstdio \ - include/cstdlib \ - include/cstring \ - include/ctgmath \ - include/ctime \ - include/cwchar \ - include/cwctype \ - include/backward/hash_map \ - include/backward/hash_set \ - include/backward/strstream \ - include/debug/bitset \ - include/debug/deque \ - include/debug/list \ - include/debug/map \ - include/debug/set \ - include/debug/string \ - include/debug/unordered_map \ - include/debug/unordered_set \ - include/debug/vector \ - include/profile/bitset \ - include/profile/deque \ - include/profile/list \ - include/profile/map \ - include/profile/set \ - include/profile/unordered_map \ - include/profile/unordered_set \ - include/profile/vector \ - include/ext/algorithm \ - include/ext/functional \ - include/ext/iterator \ - include/ext/memory \ - include/ext/numeric \ - include/ext/rb_tree \ - include/ext/rope \ - include/ext/slist \ - include/parallel/algorithm \ - include/parallel/numeric \ - include/tr1/ccomplex \ - include/tr1/cctype \ - include/tr1/cfenv \ - include/tr1/cfloat \ - include/tr1/cinttypes \ - include/tr1/climits \ - include/tr1/cmath \ - include/tr1/complex \ - include/tr1/cstdarg \ - include/tr1/cstdbool \ - include/tr1/cstdint \ - include/tr1/cstdio \ - include/tr1/cstdlib \ - include/tr1/ctgmath \ - include/tr1/ctime \ - include/tr1/cwchar \ - include/tr1/cwctype \ - include/tr1_impl/array \ - include/tr1_impl/cctype \ - include/tr1_impl/cfenv \ - include/tr1_impl/cinttypes \ - include/tr1_impl/cmath \ - include/tr1_impl/complex \ - include/tr1_impl/cstdint \ - include/tr1_impl/cstdio \ - include/tr1_impl/cstdlib \ - include/tr1_impl/cwchar \ - include/tr1_impl/cwctype \ - include/tr1_impl/regex \ - include/tr1_impl/type_traits \ - include/tr1_impl/utility \ - include/tr1_impl \ - include/decimal/decimal \ - include/ \ - include/@host_alias@/bits \ - include/backward \ - include/bits \ - include/debug \ - include/parallel \ - include/profile \ - include/profile/impl \ - include/ext \ - include/ext/pb_ds \ - include/ext/pb_ds/detail + @srcdir@/libsupc++/cxxabi.h \ + @srcdir@/libsupc++/cxxabi-forced.h \ + @srcdir@/libsupc++/exception \ + @srcdir@/libsupc++/exception_ptr.h \ + @srcdir@/libsupc++/initializer_list \ + @srcdir@/libsupc++/nested_exception.h \ + @srcdir@/libsupc++/new \ + @srcdir@/libsupc++/typeinfo \ + include/algorithm \ + include/array \ + include/atomic \ + include/bitset \ + include/chrono \ + include/complex \ + include/condition_variable \ + include/deque \ + include/fstream \ + include/functional \ + include/future \ + include/iomanip \ + include/ios \ + include/iosfwd \ + include/iostream \ + include/istream \ + include/iterator \ + include/limits \ + include/list \ + include/locale \ + include/map \ + include/memory \ + include/mutex \ + include/numeric \ + include/ostream \ + include/queue \ + include/random \ + include/ratio \ + include/regex \ + include/set \ + include/sstream \ + include/stack \ + include/stdexcept \ + include/streambuf \ + include/string \ + include/system_error \ + include/thread \ + include/tuple \ + include/type_traits \ + include/unordered_map \ + include/unordered_set \ + include/utility \ + include/valarray \ + include/vector \ + include/cassert \ + include/ccomplex \ + include/cctype \ + include/cerrno \ + include/cfenv \ + include/cfloat \ + include/cinttypes \ + include/ciso646 \ + include/climits \ + include/clocale \ + include/cmath \ + include/csetjmp \ + include/csignal \ + include/cstdarg \ + include/cstdbool \ + include/cstddef \ + include/cstdint \ + include/cstdio \ + include/cstdlib \ + include/cstring \ + include/ctgmath \ + include/ctime \ + include/cwchar \ + include/cwctype \ + include/backward/hash_map \ + include/backward/hash_set \ + include/backward/strstream \ + include/debug/bitset \ + include/debug/deque \ + include/debug/list \ + include/debug/map \ + include/debug/set \ + include/debug/string \ + include/debug/unordered_map \ + include/debug/unordered_set \ + include/debug/vector \ + include/profile/bitset \ + include/profile/deque \ + include/profile/list \ + include/profile/map \ + include/profile/set \ + include/profile/unordered_map \ + include/profile/unordered_set \ + include/profile/vector \ + include/ext/algorithm \ + include/ext/functional \ + include/ext/iterator \ + include/ext/memory \ + include/ext/numeric \ + include/ext/rb_tree \ + include/ext/rope \ + include/ext/slist \ + include/parallel/algorithm \ + include/parallel/numeric \ + include/tr1/ccomplex \ + include/tr1/cctype \ + include/tr1/cfenv \ + include/tr1/cfloat \ + include/tr1/cinttypes \ + include/tr1/climits \ + include/tr1/cmath \ + include/tr1/complex \ + include/tr1/cstdarg \ + include/tr1/cstdbool \ + include/tr1/cstdint \ + include/tr1/cstdio \ + include/tr1/cstdlib \ + include/tr1/ctgmath \ + include/tr1/ctime \ + include/tr1/cwchar \ + include/tr1/cwctype \ + include/tr1_impl/array \ + include/tr1_impl/cctype \ + include/tr1_impl/cfenv \ + include/tr1_impl/cinttypes \ + include/tr1_impl/cmath \ + include/tr1_impl/complex \ + include/tr1_impl/cstdint \ + include/tr1_impl/cstdio \ + include/tr1_impl/cstdlib \ + include/tr1_impl/cwchar \ + include/tr1_impl/cwctype \ + include/tr1_impl/type_traits \ + include/tr1_impl/utility \ + include/tr1_impl \ + include/decimal/decimal \ + include/ \ + include/@host_alias@/bits \ + include/backward \ + include/bits \ + include/debug \ + include/parallel \ + include/profile \ + include/profile/impl \ + include/ext \ + include/ext/pb_ds \ + include/ext/pb_ds/detail # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is @@ -754,8 +749,8 @@ INPUT_ENCODING = UTF-8 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.h \ - *.hpp \ - *.tcc + *.hpp \ + *.tcc # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. @@ -782,10 +777,10 @@ EXCLUDE_SYMLINKS = NO # for example use the pattern */test/* EXCLUDE_PATTERNS = stamp-* \ - *stdc++.h* \ - *stdtr1c++.h* \ - *extc++.h* \ - */.svn/* + *stdc++.h* \ + *stdtr1c++.h* \ + *extc++.h* \ + */.svn/* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the @@ -961,11 +956,6 @@ HTML_HEADER = HTML_FOOTER = -# If the HTML_TIMESTAMP tag is set to YES then the generated HTML -# documentation will contain the timesstamp. - -HTML_TIMESTAMP = NO - # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen @@ -975,6 +965,37 @@ HTML_TIMESTAMP = NO HTML_STYLESHEET = +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = NO + # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. @@ -991,14 +1012,14 @@ HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 -# (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the -# docset in that directory and running "make install" will install the -# docset in ~/Library/Developer/Shared/Documentation/DocSets so that -# Xcode will find it at startup. See -# http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for -# more information. +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. GENERATE_DOCSET = NO @@ -1014,7 +1035,18 @@ DOCSET_FEEDNAME = "Doxygen generated docs" # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. -DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_BUNDLE_ID = org.gnu.libstdc++ + +# When GENERATE_PUBLISHER_ID tag specifies a string that should +# uniquely identify the documentation publisher. This should be a +# reverse domain-name style string, +# e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.fsf + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = libstdc++ # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the @@ -1061,10 +1093,9 @@ BINARY_TOC = NO TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be -# generated that can be used as input for Qt's qhelpgenerator to -# generate a Qt Compressed Help (.qch) of the generated HTML -# documentation. +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO @@ -1086,23 +1117,24 @@ QHP_NAMESPACE = org.doxygen.Project QHP_VIRTUAL_FOLDER = doc -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom -# filter to add. For more information please see +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of -# the custom filter to add.For more information please see <a -# href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt -# Help Project / Custom Filters</a>. +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> +# Qt Help Project / Custom Filters</a>. QHP_CUST_FILTER_ATTRS = -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes -# this project's filter section matches. <a -# href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt -# Help Project / Filter Attributes</a>. +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> +# Qt Help Project / Filter Attributes</a>. QHP_SECT_FILTER_ATTRS = @@ -1113,6 +1145,23 @@ QHP_SECT_FILTER_ATTRS = QHG_LOCATION = +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. @@ -1145,6 +1194,11 @@ USE_INLINE_TREES = NO TREEVIEW_WIDTH = 250 +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need @@ -1153,15 +1207,34 @@ TREEVIEW_WIDTH = 250 FORMULA_FONTSIZE = 10 -# When the SEARCHENGINE tag is enable doxygen will generate a search -# box for the HTML output. The underlying search engine uses -# javascript and DHTML and should work on any modern browser. Note -# that when using HTML help (GENERATE_HTMLHELP) or Qt help -# (GENERATE_QHP) there is already a search function so this one should -# typically be disabled. +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = NO +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvances is that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- @@ -1179,6 +1252,9 @@ LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. LATEX_CMD_NAME = latex @@ -1225,11 +1301,10 @@ PDF_HYPERLINKS = YES USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the -# \\batchmode. command to the generated LaTeX files. This will -# instruct LaTeX to keep running if errors occur, instead of asking -# the user for help. This option is also used when generating -# formulas in HTML. +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. LATEX_BATCHMODE = YES @@ -1239,10 +1314,10 @@ LATEX_BATCHMODE = YES LATEX_HIDE_INDICES = YES -# If LATEX_SOURCE_CODE is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. Note that which -# sources are shown also depends on other settings such as -# SOURCE_BROWSER. +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO @@ -1448,37 +1523,37 @@ INCLUDE_FILE_PATTERNS = # instead of the = operator. PREDEFINED = __cplusplus \ - __GTHREADS \ - _GLIBCXX_HAS_GTHREADS \ - __GXX_EXPERIMENTAL_CXX0X__ \ - _GLIBCXX_INCLUDE_AS_CXX0X \ - "_GLIBCXX_STD_P= " \ - "_GLIBCXX_STD_D= " \ - _GLIBCXX_STD=std \ - "_GLIBCXX_TR1= " \ - "_GLIBCXX_BEGIN_NAMESPACE_TR1= " \ - "_GLIBCXX_END_NAMESPACE_TR1= " \ - "_GLIBCXX_BEGIN_NAMESPACE(name)=namespace name { " \ - "_GLIBCXX_BEGIN_NESTED_NAMESPACE(name, unused)=namespace name { " \ - _GLIBCXX_END_NAMESPACE=} \ - _GLIBCXX_END_NESTED_NAMESPACE=} \ - "_GLIBCXX_TEMPLATE_ARGS=... " \ - _GLIBCXX_DEPRECATED \ - _GLIBCXX_USE_WCHAR_T \ - _GLIBCXX_USE_LONG_LONG \ - _GLIBCXX_USE_C99_STDINT_TR1 \ - _GLIBCXX_ATOMIC_BUILTINS_1 \ - _GLIBCXX_ATOMIC_BUILTINS_2 \ - _GLIBCXX_ATOMIC_BUILTINS_4 \ - _GLIBCXX_ATOMIC_BUILTINS_8 \ - _GLIBCXX_USE_SCHED_YIELD \ - _GLIBCXX_USE_NANOSLEEP \ - __GXX_RTTI \ - __glibcxx_function_requires=// \ - __glibcxx_class_requires=// \ - __glibcxx_class_requires2=// \ - __glibcxx_class_requires3=// \ - __glibcxx_class_requires4=// + __GTHREADS \ + _GLIBCXX_HAS_GTHREADS \ + __GXX_EXPERIMENTAL_CXX0X__ \ + _GLIBCXX_INCLUDE_AS_CXX0X \ + "_GLIBCXX_STD_P= " \ + "_GLIBCXX_STD_D= " \ + _GLIBCXX_STD=std \ + "_GLIBCXX_TR1= " \ + "_GLIBCXX_BEGIN_NAMESPACE_TR1= " \ + "_GLIBCXX_END_NAMESPACE_TR1= " \ + "_GLIBCXX_BEGIN_NAMESPACE(name)=namespace name { " \ + "_GLIBCXX_BEGIN_NESTED_NAMESPACE(name, unused)=namespace name { " \ + _GLIBCXX_END_NAMESPACE=} \ + _GLIBCXX_END_NESTED_NAMESPACE=} \ + "_GLIBCXX_TEMPLATE_ARGS=... " \ + _GLIBCXX_DEPRECATED \ + _GLIBCXX_USE_WCHAR_T \ + _GLIBCXX_USE_LONG_LONG \ + _GLIBCXX_USE_C99_STDINT_TR1 \ + _GLIBCXX_ATOMIC_BUILTINS_1 \ + _GLIBCXX_ATOMIC_BUILTINS_2 \ + _GLIBCXX_ATOMIC_BUILTINS_4 \ + _GLIBCXX_ATOMIC_BUILTINS_8 \ + _GLIBCXX_USE_SCHED_YIELD \ + _GLIBCXX_USE_NANOSLEEP \ + __GXX_RTTI \ + __glibcxx_function_requires=// \ + __glibcxx_class_requires=// \ + __glibcxx_class_requires2=// \ + __glibcxx_class_requires3=// \ + __glibcxx_class_requires4=// # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. @@ -1575,6 +1650,14 @@ HIDE_UNDOC_RELATIONS = NO HAVE_DOT = YES +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + # By default doxygen will write a font called FreeSans.ttf to the # output directory and reference it in all dot files that doxygen # generates. This font does not include all possible unicode @@ -1590,7 +1673,7 @@ DOT_FONTNAME = FreeSans # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. -DOT_FONTSIZE = 10 +DOT_FONTSIZE = 9 # By default doxygen will tell dot to use the output directory to look for the # FreeSans.ttf font (which doxygen will put there itself). If you specify a diff --git a/libstdc++-v3/doc/html/api.html b/libstdc++-v3/doc/html/api.html index 61ddda971a2..c9aab0adbfa 100644 --- a/libstdc++-v3/doc/html/api.html +++ b/libstdc++-v3/doc/html/api.html @@ -1,24 +1,25 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API and Source Level Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk02.html" title="" /><link rel="prev" href="bk02.html" title="" /><link rel="next" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API and Source Level Documentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr /></div><div class="article" title="API and Source Level Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="api"></a>API and Source Level Documentation</h2></div><div><p class="copyright">Copyright © +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>API Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk02.html" title="" /><link rel="prev" href="bk02.html" title="" /><link rel="next" href="bk03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">API Documentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><th width="60%" align="center"></th><td width="20%" align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr></table><hr /></div><div class="article" title="API Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="api"></a>API Documentation</h2></div><div><p class="copyright">Copyright © 2008 + , + 2010 <a class="ulink" href="http://www.fsf.org/" target="_top">FSF </a> - </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id561368"></a><p> + </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id343928"></a><p> <a class="link" href="manual/license.html" title="License">License </a> </p></div></div></div><hr /></div><p> -The GNU C++ library sources have been specially formatted so that with the -proper invocation of another tool (Doxygen), a set of HTML pages -are generated from the sources files themselves. The resultant -documentation is referred to as Source Level Documentation, and is -useful for examining the signatures of public member functions for -the library classes, finding out what is in a particular include -file, looking at inheritance diagrams, etc. + The GNU C++ library sources have been specially formatted so that + with the proper invocation of another tool (Doxygen), a set of + indexed reference material can generated from the sources files + themselves. The resultant documentation is referred to as the API + documentation, and is useful for examining the signatures of public + member functions for the library classes, finding out what is in a + particular include file, looking at inheritance diagrams, etc. </p><p> -The source-level documentation for the most recent releases can be -viewed online: + The API documentation, rendered into HTML, can be viewed online: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release </a> @@ -39,16 +40,14 @@ viewed online: </a> (For the main development tree; see the date on the first page.) </p></li></ul></div><p> -This generated HTML collection, as above, is also available for download in the libstdc++ snapshots directory at + The rendered HTML, as above, is also available for download on the + gcc.org site in a directory located at <code class="literal"><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></code>. You will almost certainly need to use one of the <a class="ulink" href="http://gcc.gnu.org/mirrors.html" target="_top">mirror sites</a> to download - the tarball. After unpacking, simply load libstdc++-html-*/index.html + the tarball. After unpacking, simply load libstdc++-html-*/index.html into a browser. </p><p> -Documentation for older releases is available for download only, not -online viewing. -</p><p> -In addition, an initial set of man pages are also available in the -same place as the HTML collections. Start with C++Intro(3). + In addition, a rendered set of man pages are available in the same + location specified above. Start with C++Intro(3). </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/bk02.html b/libstdc++-v3/doc/html/bk02.html index f0dbebb2ac4..16ac5f094f6 100644 --- a/libstdc++-v3/doc/html/bk02.html +++ b/libstdc++-v3/doc/html/bk02.html @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility" /><link rel="next" href="api.html" title="API and Source Level Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="api.html">API and Source Level Documentation</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="spine.html">Home</a></td><td width="40%" align="right" valign="top"> API and Source Level Documentation</td></tr></table></div></body></html> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="manual/backwards.html" title="Backwards Compatibility" /><link rel="next" href="api.html" title="API Documentation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="api.html">API Documentation</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="manual/backwards.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="spine.html">Home</a></td><td width="40%" align="right" valign="top"> API Documentation</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/bk03.html b/libstdc++-v3/doc/html/bk03.html index bc43c8d07bb..89beabfeb26 100644 --- a/libstdc++-v3/doc/html/bk03.html +++ b/libstdc++-v3/doc/html/bk03.html @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="api.html" title="API and Source Level Documentation" /><link rel="next" href="faq.html" title="Frequently Asked Questions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API and Source Level Documentation </td><td width="20%" align="center"><a accesskey="h" href="spine.html">Home</a></td><td width="40%" align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="api.html" title="API Documentation" /><link rel="next" href="faq.html" title="Frequently Asked Questions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="faq.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Documentation </td><td width="20%" align="center"><a accesskey="h" href="spine.html">Home</a></td><td width="40%" align="right" valign="top"> Frequently Asked Questions</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/faq.html b/libstdc++-v3/doc/html/faq.html index 31ba54106aa..db71bd0e065 100644 --- a/libstdc++-v3/doc/html/faq.html +++ b/libstdc++-v3/doc/html/faq.html @@ -4,7 +4,7 @@ 2008 <a class="ulink" href="http://www.fsf.org" target="_top">FSF</a> - </p></div></div><hr /></div><div class="qandaset" title="Frequently Asked Questions"><a id="id571249"></a><dl><dt>1. <a href="faq.html#faq.info">General Information</a></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what"> + </p></div></div><hr /></div><div class="qandaset" title="Frequently Asked Questions"><a id="id460433"></a><dl><dt>1. <a href="faq.html#faq.info">General Information</a></dt><dd><dl><dt>1.1. <a href="faq.html#faq.what"> What is libstdc++? </a></dt><dt>1.2. <a href="faq.html#faq.why"> Why should I use libstdc++? @@ -315,12 +315,15 @@ and <span class="command"><strong>ldconfig</strong></span> for more information. The dynamic linker has different names on different platforms but the man page is usually called something such as <code class="filename">ld.so/rtld/dld.so</code>. + </p><p> + Using LD_LIBRARY_PATH is not always the best solution, <a class="link" href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic" title="Finding Dynamic or Shared Libraries">Finding Dynamic or Shared + Libraries</a> in the manual gives some alternatives. </p></td></tr><tr class="question" title="3.5."><td align="left" valign="top"><a id="faq.what_is_libsupcxx"></a><a id="q-what_is_libsupcxx"></a><p><b>3.5.</b></p></td><td align="left" valign="top"><p> What's libsupc++? </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-what_is_libsupcxx"></a></td><td align="left" valign="top"><p> If the only functions from <code class="filename">libstdc++.a</code> which you need are language support functions (those listed in - <a class="link" href="manual/support.html" title="Part II. Support">clause 18</a> of the + <a class="link" href="manual/support.html" title="Chapter 4. Support">clause 18</a> of the standard, e.g., <code class="function">new</code> and <code class="function">delete</code>), then try linking against <code class="filename">libsupc++.a</code>, which is a subset of @@ -393,7 +396,7 @@ non-standard features of g++ that are not present in older versions of proprietary compilers. It may take as much as a year or two after an official release of GCC that contains these features for - proprietary tools support these constructs. + proprietary tools to support these constructs. </p><p> In the near past, specific released versions of libstdc++ have been known to work with versions of the EDG C++ compiler, and @@ -470,9 +473,10 @@ Recent GNU/Linux glibc required? </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-linux_glibc"></a></td><td align="left" valign="top"><p>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version 5.0.1) and later uses localization and formatting code from the system - C library (glibc) version 2.2.5. That version of glibc is over a - year old and contains necessary bugfixes. Many GNU/Linux distros make - glibc version 2.3.x available now. + C library (glibc) version 2.2.5 which contains necessary bugfixes. + Most GNU/Linux distros make more recent versions available now. + libstdc++ 4.6.0 and later require glibc 2.3 or later for this + localization and formatting code. </p><p>The guideline is simple: the more recent the C++ library, the more recent the C library. (This is also documented in the main GCC installation instructions.) @@ -517,7 +521,7 @@ For those people who are not part of the ISO Library Group (i.e., nearly all of us needing to read this page in the first place), a public list of the library defects is occasionally - published <a class="ulink" href="http://anubis.dkuug.dk/jtc1/sc22/wg21/" target="_top">here</a>. + published <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/" target="_top">here</a>. Some of these issues have resulted in code changes in libstdc++. </p><p> If you think you've discovered a new bug that is not listed, @@ -647,8 +651,9 @@ typo, or wrong visibility, or you just plain forgot, etc). </p><p> More information, including how to optionally enable/disable the - checks, is available - <a class="link" href="manual/bk01pt03ch08.html" title="Chapter 8. Concept Checking">here</a>. + checks, is available in the + <a class="link" href="manual/bk01pt02ch05s02.html" title="Concept Checking">Diagnostics</a>. + chapter of the manual. </p></td></tr><tr class="question" title="6.6."><td align="left" valign="top"><a id="faq.dlopen_crash"></a><a id="q-dlopen_crash"></a><p><b>6.6.</b></p></td><td align="left" valign="top"><p> Program crashes when using library code in a dynamically-loaded library @@ -685,7 +690,7 @@ list::size() is O(n)! </p></td></tr><tr class="answer"><td align="left" valign="top"><a id="a-list_size_on"></a></td><td align="left" valign="top"><p> See - the <a class="link" href="manual/containers.html" title="Part VII. Containers">Containers</a> + the <a class="link" href="manual/containers.html" title="Chapter 9. Containers">Containers</a> chapter. </p></td></tr><tr class="question" title="6.9."><td align="left" valign="top"><a id="faq.easy_to_fix"></a><a id="q-easy_to_fix"></a><p><b>6.9.</b></p></td><td align="left" valign="top"><p> Aw, that's easy to fix! @@ -869,6 +874,6 @@ </p></div><p> The copy will take O(n) time and the swap is constant time. </p><p> - See <a class="link" href="manual/bk01pt05ch13s05.html" title="Shrink to Fit">Shrink-to-fit + See <a class="link" href="manual/strings.html#strings.string.shrink" title="Shrink to Fit">Shrink-to-fit strings</a> for a similar solution for strings. </p></td></tr></tbody></table></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk03.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/abi.html b/libstdc++-v3/doc/html/manual/abi.html index 25d0a568ee6..6aaacb98ccf 100644 --- a/libstdc++-v3/doc/html/manual/abi.html +++ b/libstdc++-v3/doc/html/manual/abi.html @@ -5,15 +5,15 @@ </th><td width="20%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="ABI Policy and Guidelines"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.abi"></a>ABI Policy and Guidelines</h2></div></div></div><p> </p><div class="sect2" title="The C++ Interface"><div class="titlepage"><div><div><h3 class="title"><a id="abi.cxx_interface"></a>The C++ Interface</h3></div></div></div><p> - C++ applications often dependent on specific language support + C++ applications often depend on specific language support routines, say for throwing exceptions, or catching exceptions, and - perhaps also dependent on features in the C++ Standard Library. -</p><p> + perhaps also depend on features in the C++ Standard Library. +</p><p> The C++ Standard Library has many include files, types defined in those include files, specific named functions, and other behavior. The text of these behaviors, as written in source include files, is called the Application Programing Interface, or API. -</p><p> +</p><p> Furthermore, C++ source that is compiled into object files is transformed by the compiler: it arranges objects with specific alignment and in a particular layout, mangling names according to a @@ -32,7 +32,7 @@ <code class="code">-fno-exceptions</code>, but include others: see the complete list in the GCC manual under the heading <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options" target="_top">Options for Code Generation Conventions</a>. -</p><p> +</p><p> The configure options used when building a specific libstdc++ version may also impact the resulting library ABI. The available configure options, and their impact on the library ABI, are @@ -65,7 +65,7 @@ as to give distinct versions to the C++ interface. releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial -release of a library binary will still link correctly if the library +release of a library binary will still run correctly if the library binary is replaced by carefully-managed subsequent library binaries. This is called forward compatibility. </p><p> @@ -87,16 +87,19 @@ compatible. </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Release versioning on the libgcc_s.so binary. </p><p>This is implemented via file names and the ELF <code class="constant">DT_SONAME</code> mechanism (at least on ELF systems). It is versioned as follows: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gcc-3.0.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.2: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.3: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.4: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.1.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.1.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.2: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.3: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.2: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.3: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.4.x, gcc-4.[0-5].x: on m68k-linux and - hppa-linux this is either libgcc_s.so.1 (when configuring - <code class="code">--with-sjlj-exceptions</code>) or libgcc_s.so.2. For all - others, this is libgcc_s.so.1. </p></li></ul></div></li><li class="listitem"><p>Symbol versioning on the libgcc_s.so binary.</p><p>It is versioned with the following labels and version + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gcc-3.0.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.2: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.3: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.0.4: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.1.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.1.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.2: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.2.3: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.0: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.1: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.2: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.3.3: libgcc_s.so.1</p></li><li class="listitem"><p>gcc-3.4.x, gcc-4.[0-5].x: libgcc_s.so.1</p></li></ul></div><p>For m68k-linux the versions differ as follows: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gcc-3.4.x, gcc-4.[0-5].x: libgcc_s.so.1 + when configuring <code class="code">--with-sjlj-exceptions</code>, or + libgcc_s.so.2 </p></li></ul></div><p>For hppa-linux the versions differ as follows: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gcc-3.4.x, gcc-4.[0-1].x: either libgcc_s.so.1 + when configuring <code class="code">--with-sjlj-exceptions</code>, or + libgcc_s.so.2 </p></li><li class="listitem"><p>gcc-4.[2-5].x: either libgcc_s.so.3 when configuring + <code class="code">--with-sjlj-exceptions</code>) or libgcc_s.so.4 + </p></li></ul></div></li><li class="listitem"><p>Symbol versioning on the libgcc_s.so binary.</p><p>It is versioned with the following labels and version definitions, where the version definition is the maximum for a particular release. Labels are cumulative. If a particular release is not listed, it has the same version labels as the preceding release.</p><p>This corresponds to the mapfile: gcc/libgcc-std.ver</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gcc-3.0.0: GCC_3.0</p></li><li class="listitem"><p>gcc-3.3.0: GCC_3.3</p></li><li class="listitem"><p>gcc-3.3.1: GCC_3.3.1</p></li><li class="listitem"><p>gcc-3.3.2: GCC_3.3.2</p></li><li class="listitem"><p>gcc-3.3.4: GCC_3.3.4</p></li><li class="listitem"><p>gcc-3.4.0: GCC_3.4</p></li><li class="listitem"><p>gcc-3.4.2: GCC_3.4.2</p></li><li class="listitem"><p>gcc-3.4.4: GCC_3.4.4</p></li><li class="listitem"><p>gcc-4.0.0: GCC_4.0.0</p></li><li class="listitem"><p>gcc-4.1.0: GCC_4.1.0</p></li><li class="listitem"><p>gcc-4.2.0: GCC_4.2.0</p></li><li class="listitem"><p>gcc-4.3.0: GCC_4.3.0</p></li><li class="listitem"><p>gcc-4.4.0: GCC_4.4.0</p></li></ul></div></li><li class="listitem"><p> Release versioning on the libstdc++.so binary, implemented in - the same was as the libgcc_s.so binary above. Listed is the + the same way as the libgcc_s.so binary above. Listed is the filename: <code class="constant">DT_SONAME</code> can be deduced from the filename by removing the last two period-delimited numbers. For example, filename <code class="filename">libstdc++.so.5.0.4</code> @@ -114,9 +117,9 @@ compatible. Note 3: This release (but not previous or subsequent) has one known incompatibility, see <a class="ulink" href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678" target="_top">33678</a> in the GCC bug database. - </p></li><li class="listitem"><p>Symbol versioning on the libstdc++.so binary.</p><p>mapfile: libstdc++/config/linker-map.gnu</p><p>It is versioned with the following labels and version + </p></li><li class="listitem"><p>Symbol versioning on the libstdc++.so binary.</p><p>mapfile: libstdc++-v3/config/abi/pre/gnu.ver</p><p>It is versioned with the following labels and version definitions, where the version definition is the maximum for a - particular release. Note, only symbol which are newly introduced + particular release. Note, only symbols which are newly introduced will use the maximum version definition. Thus, for release series with the same label, but incremented version definitions, the later release has both versions. (An example of this would be the @@ -148,7 +151,7 @@ compatible. was released, in compressed ISO date format, as an unsigned long. </p><p> This macro is defined in the file "c++config" in the - "libstdc++/include/bits" directory. (Up to gcc-4.1.0, it was + "libstdc++-v3/include/bits" directory. (Up to gcc-4.1.0, it was changed every night by an automated script. Since gcc-4.1.0, it is the same value as gcc/DATESTAMP.) </p><p> @@ -161,7 +164,7 @@ compatible. is called _GLIBCXX_VERSION). </p><p> This macro is defined in the file "c++config" in the - "libstdc++/include/bits" directory and is generated + "libstdc++-v3/include/bits" directory and is generated automatically by autoconf as part of the configure-time generation of config.h. </p><p> @@ -174,7 +177,7 @@ compatible. All C++ includes are installed in include/c++, then nest in a directory hierarchy corresponding to the C++ compiler's released version. This version corresponds to the variable "gcc_version" in - "libstdc++/acinclude.m4," and more details can be found in that + "libstdc++-v3/acinclude.m4," and more details can be found in that file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before gcc-3.4.0). </p><p> C++ includes are versioned as follows: @@ -187,7 +190,8 @@ compatible. </p></div><div class="sect3" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="abi.versioning.prereq"></a>Prerequisites</h4></div></div></div><p> Minimum environment that supports a versioned ABI: A supported dynamic linker, a GNU linker of sufficient vintage to understand - demangled C++ name globbing (ld), a shared executable compiled + demangled C++ name globbing (ld) or the Sun linker, a shared + executable compiled with g++, and shared libraries (libgcc_s, libstdc++) compiled by a compiler (g++) with a compatible ABI. Phew. </p><p> @@ -197,7 +201,7 @@ compatible. </p><p> Most modern Linux and BSD versions, particularly ones using gcc-3.1.x tools and more recent vintages, will meet the - requirements above. + requirements above, as does Solaris 2.5 and up. </p></div><div class="sect3" title="Configuring"><div class="titlepage"><div><div><h4 class="title"><a id="abi.versioning.config"></a>Configuring</h4></div></div></div><p> It turns out that most of the configure options that change default behavior will impact the mangled names of exported @@ -205,12 +209,12 @@ compatible. </p><p> For more information on configure options, including ABI impacts, see: - http://gcc.gnu.org/onlinedocs/libstdc++/configopts.html + <a class="link" href="configure.html" title="Configure">here</a> </p><p> There is one flag that explicitly deals with symbol versioning: --enable-symvers. </p><p> - In particular, libstdc++/acinclude.m4 has a macro called + In particular, libstdc++-v3/acinclude.m4 has a macro called GLIBCXX_ENABLE_SYMVERS that defaults to yes (or the argument passed in via --enable-symvers=foo). At that point, the macro attempts to make sure that all the requirement for symbol @@ -225,6 +229,7 @@ compatible. checking versioning on shared library symbols... gnu </code> </pre><p> + or another of the supported styles. If you don't see this line in the configure output, or if this line appears but the last word is 'no', then you are out of luck. </p><p> @@ -240,11 +245,11 @@ int main() %g++ hello.cc -o hello.out %ldd hello.out - libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000) - libm.so.6 => /lib/tls/libm.so.6 (0x004a8000) - libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40016000) - libc.so.6 => /lib/tls/libc.so.6 (0x0036d000) - /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) + libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000) + libm.so.6 => /lib/tls/libm.so.6 (0x004a8000) + libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40016000) + libc.so.6 => /lib/tls/libc.so.6 (0x0036d000) + /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) %nm hello.out </pre><p> @@ -252,6 +257,17 @@ If you see symbols in the resulting output with "GLIBCXX_3" as part of the name, then the executable is versioned. Here's an example: </p><p> <code class="code">U _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4</code> +</p><p> +On Solaris 2, you can use <code class="code">pvs -r</code> instead: +</p><pre class="programlisting"> +%g++ hello.cc -o hello.out + +%pvs -r hello.out + libstdc++.so.6 (GLIBCXX_3.4, GLIBCXX_3.4.12); + libgcc_s.so.1 (GCC_3.0); + libc.so.1 (SUNWprivate_1.1, SYSVABI_1.3); +</pre><p> +<code class="code">ldd -v</code> works too, but is very verbose. </p></div></div><div class="sect2" title="Allowed Changes"><div class="titlepage"><div><div><h3 class="title"><a id="abi.changes_allowed"></a>Allowed Changes</h3></div></div></div><p> The following will cause the library minor version number to increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5". @@ -271,9 +287,9 @@ number to increase, say from "libstdc++.so.3.0.4" to </p></li><li class="listitem"><p> Adding an explicit copy constructor or destructor to a class that would otherwise have implicit versions. This will change the way the compiler deals with this class in by-value return -statements or parameters: instead of being passing instances of this +statements or parameters: instead of passing instances of this class in registers, the compiler will be forced to use memory. See <a class="ulink" href="http://www.codesourcery.com/cxx-abi/abi.html#calls" target="_top"> this part</a> - of the C++ ABI documentation for further details. + of the C++ ABI documentation for further details. </p></li></ol></div></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="abi.impl"></a>Implementation</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> Separation of interface and implementation </p><p> @@ -298,7 +314,7 @@ class in registers, the compiler will be forced to use memory. See <a class="uli char</code> and <code class="code"> wchar_t</code> instantiations, and includes <code class="code"> basic_string</code>, the locale facets, and the types in <code class="code"> iostreams</code>. - </p></dd></dl></div><p> + </p></dd></dl></div><p> In addition, these techniques have the additional benefit that they reduce binary size, which can increase runtime performance. </p></li><li class="listitem"><p> @@ -329,7 +345,7 @@ standard includes.</p></li></ol></div></div><div class="sect2" title="Testing">< </p><p> Testing the C++ compiler ABI can be done various ways. </p><p> - One. Intel ABI checker. + One. Intel ABI checker. </p><p> Two. The second is yet unreleased, but has been announced on the gcc @@ -344,18 +360,18 @@ discussed on the gcc mailing lists. </p><p> Testing the C++ library ABI can also be done various ways. </p><p> -One. -(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways, +One. +(Brendan Kehoe, Jeff Law suggestion to run 'make check-c++' two ways, one with a new compiler and an old library, and the other with an old compiler and a new library, and look for testsuite regressions) </p><p> Details on how to set this kind of test up can be found here: http://gcc.gnu.org/ml/gcc/2002-08/msg00142.html </p><p> -Two. -Use the 'make check-abi' rule in the libstdc++ Makefile. +Two. +Use the 'make check-abi' rule in the libstdc++ Makefile. </p><p> -This is a proactive check the library ABI. Currently, exported symbol +This is a proactive check of the library ABI. Currently, exported symbol names that are either weak or defined are checked against a last known good baseline. Currently, this baseline is keyed off of 3.4.0 binaries, as this was the last time the .so number was incremented. In @@ -372,7 +388,7 @@ machinery. </p><p> This dataset is insufficient, yet a start. Also needed is a comprehensive check for all user-visible types part of the standard -library for sizeof() and alignof() changes. +library for sizeof() and alignof() changes. </p><p> Verifying compatible layouts of objects is not even attempted. It should be possible to use sizeof, alignof, and offsetof to compute @@ -384,13 +400,13 @@ Another approach might be to use the -fdump-class-hierarchy flag to get information. However, currently this approach gives insufficient data for use in library testing, as class data members, their offsets, and other detailed data is not displayed with this flag. -(See g++/7470 on how this was used to find bugs.) +(See PR g++/7470 on how this was used to find bugs.) </p><p> Perhaps there are other C++ ABI checkers. If so, please notify us. We'd like to know about them! </p></div><div class="sect3" title="Multiple ABI Testing"><div class="titlepage"><div><div><h4 class="title"><a id="abi.testing.multi"></a>Multiple ABI Testing</h4></div></div></div><p> A "C" application, dynamically linked to two shared libraries, liba, -libb. The dependent library liba is C++ shared library compiled with +libb. The dependent library liba is a C++ shared library compiled with gcc-3.3.x, and uses io, exceptions, locale, etc. The dependent library libb is a C++ shared library compiled with gcc-3.4.x, and also uses io, exceptions, locale, etc. @@ -403,7 +419,7 @@ exceptions, locale, etc. %$bld/H-x86-gcc-3.4.0/bin/g++ -c a.cc -%ar cru libone.a a.o +%ar cru libone.a a.o </pre><p> And, libtwo is constructed as follows: </p><pre class="programlisting"> %$bld/H-x86-gcc-3.3.3/bin/g++ -fPIC -DPIC -c b.cc @@ -413,24 +429,24 @@ exceptions, locale, etc. %$bld/H-x86-gcc-3.3.3/bin/g++ -c b.cc -%ar cru libtwo.a b.o +%ar cru libtwo.a b.o </pre><p> ...with the resulting libraries looking like </p><pre class="screen"> <code class="computeroutput"> %ldd libone.so.1.0.0 - libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40016000) - libm.so.6 => /lib/tls/libm.so.6 (0x400fa000) - libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x4011c000) - libc.so.6 => /lib/tls/libc.so.6 (0x40125000) - /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) + libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40016000) + libm.so.6 => /lib/tls/libm.so.6 (0x400fa000) + libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x4011c000) + libc.so.6 => /lib/tls/libc.so.6 (0x40125000) + /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) %ldd libtwo.so.1.0.0 - libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40027000) - libm.so.6 => /lib/tls/libm.so.6 (0x400e1000) - libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40103000) - libc.so.6 => /lib/tls/libc.so.6 (0x4010c000) - /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) + libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x40027000) + libm.so.6 => /lib/tls/libm.so.6 (0x400e1000) + libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x40103000) + libc.so.6 => /lib/tls/libc.so.6 (0x4010c000) + /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) </code> -</pre><p> +</pre><p> Then, the "C" compiler is used to compile a source file that uses functions from each library. </p><pre class="programlisting"> @@ -440,18 +456,18 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. </p><pre class="screen"> <code class="computeroutput"> %ldd a.out - libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000) - libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40015000) - libc.so.6 => /lib/tls/libc.so.6 (0x0036d000) - libm.so.6 => /lib/tls/libm.so.6 (0x004a8000) - libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x400e5000) - /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) + libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x00764000) + libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40015000) + libc.so.6 => /lib/tls/libc.so.6 (0x0036d000) + libm.so.6 => /lib/tls/libm.so.6 (0x004a8000) + libgcc_s.so.1 => /mnt/hd/bld/gcc/gcc/libgcc_s.so.1 (0x400e5000) + /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00355000) </code> </pre><p> This resulting binary, when executed, will be able to safely use code from both liba, and the dependent libstdc++.so.6, and libb, with the dependent libstdc++.so.5. -</p></div></div><div class="sect2" title="Outstanding Issues"><div class="titlepage"><div><div><h3 class="title"><a id="abi.issues"></a>Outstanding Issues</h3></div></div></div><p> +</p></div></div><div class="sect2" title="Outstanding Issues"><div class="titlepage"><div><div><h3 class="title"><a id="abi.issues"></a>Outstanding Issues</h3></div></div></div><p> Some features in the C++ language make versioning especially difficult. In particular, compiler generated constructs such as implicit instantiations for templates, typeinfo information, and @@ -464,60 +480,71 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. <a class="ulink" href="http://gcc.gnu.org/PR24660" target="_top">24660: versioning weak symbols in libstdc++</a> </p><p> <a class="ulink" href="http://gcc.gnu.org/PR19664" target="_top">19664: libstdc++ headers should have pop/push of the visibility around the declarations</a> -</p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="ABIcheck, a vague idea of checking ABI compatibility"><a id="id725008"></a><p><span class="title"><i> - ABIcheck, a vague idea of checking ABI compatibility - </i>. </span><span class="biblioid"> +</p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="abi.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id396917"></a><p><span class="biblioid"> <a class="ulink" href="http://abicheck.sourceforge.net/" target="_top"> + <em class="citetitle"> + ABIcheck, a vague idea of checking ABI compatibility + </em> </a> - . </span></p></div><div class="biblioentry" title="C++ ABI Reference"><a id="id725026"></a><p><span class="title"><i> - C++ ABI Reference - </i>. </span><span class="biblioid"> + . </span></p></div><div class="biblioentry"><a id="id396937"></a><p><span class="biblioid"> <a class="ulink" href="http://www.codesourcery.com/public/cxx-abi/" target="_top"> + <em class="citetitle"> + C++ ABI Reference + </em> </a> - . </span></p></div><div class="biblioentry" title="Intel® Compilers for Linux* -Compatibility with the GNU Compilers"><a id="id725043"></a><p><span class="title"><i> - Intel® Compilers for Linux* -Compatibility with the GNU Compilers - </i>. </span><span class="biblioid"> + . </span></p></div><div class="biblioentry"><a id="id396956"></a><p><span class="biblioid"> <a class="ulink" href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" target="_top"> + <em class="citetitle"> + Intel Compilers for Linux Compatibility with the GNU Compilers + </em> </a> - . </span></p></div><div class="biblioentry" title="Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386)"><a id="id725060"></a><p><span class="title"><i> - Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386) - </i>. </span><span class="biblioid"> - <a class="ulink" href="http://docs.sun.com/app/docs/doc/817-1984" target="_top"> + . </span></p></div><div class="biblioentry"><a id="id396976"></a><p><span class="biblioid"> + <a class="ulink" href="http://docs.sun.com/app/docs/doc/819-0690" target="_top"> + <em class="citetitle"> + Linker and Libraries Guide (document 819-0690) + </em> </a> - . </span></p></div><div class="biblioentry" title="Sun Solaris 2.9 : C++ Migration Guide (document 816-2459)"><a id="id725077"></a><p><span class="title"><i> - Sun Solaris 2.9 : C++ Migration Guide (document 816-2459) - </i>. </span><span class="biblioid"> - <a class="ulink" href="http://docs.sun.com/app/docs/doc/819-5266" target="_top"> + . </span></p></div><div class="biblioentry"><a id="id396995"></a><p><span class="biblioid"> + <a class="ulink" href="http://docs.sun.com/app/docs/doc/819-3689" target="_top"> + <em class="citetitle"> + Sun Studio 11: C++ Migration Guide (document 819-3689) + </em> </a> - . </span></p></div><div class="biblioentry" title="How to Write Shared Libraries"><a id="id725094"></a><p><span class="title"><i> - How to Write Shared Libraries - </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="biblioid"> + . </span></p></div><div class="biblioentry"><a id="id397015"></a><p><span class="biblioid"> <a class="ulink" href="http://people.redhat.com/drepper/dsohowto.pdf" target="_top"> + <em class="citetitle"> + How to Write Shared Libraries + </em> </a> - . </span></p></div><div class="biblioentry" title="C++ ABI for the ARM Architecture"><a id="id725122"></a><p><span class="title"><i> - C++ ABI for the ARM Architecture - </i>. </span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span></p></div><div class="biblioentry"><a id="id397046"></a><p><span class="biblioid"> <a class="ulink" href="http://www.arm.com/miscPDFs/8033.pdf" target="_top"> + <em class="citetitle"> + C++ ABI for the ARM Architecture + </em> </a> - . </span></p></div><div class="biblioentry" title="Dynamic Shared Objects: Survey and Issues"><a id="id651420"></a><p><span class="title"><i> - Dynamic Shared Objects: Survey and Issues - </i>. </span><span class="subtitle"> - ISO C++ J16/06-0046 - . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span><span class="biblioid"> + . </span></p></div><div class="biblioentry"><a id="id397065"></a><p><span class="biblioid"> <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" target="_top"> + <em class="citetitle"> + Dynamic Shared Objects: Survey and Issues + </em> </a> - . </span></p></div><div class="biblioentry" title="Versioning With Namespaces"><a id="id651453"></a><p><span class="title"><i> - Versioning With Namespaces - </i>. </span><span class="subtitle"> - ISO C++ J16/06-0083 - . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span><span class="biblioid"> + . </span><span class="subtitle"> + ISO C++ J16/06-0046 + . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id397100"></a><p><span class="biblioid"> <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" target="_top"> + <em class="citetitle"> + Versioning With Namespaces + </em> </a> - . </span></p></div><div class="biblioentry" title="Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems"><a id="id651486"></a><p><span class="title"><i> - Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems - </i>. </span><span class="subtitle"> -SYRCoSE 2009 - . </span><span class="author"><span class="firstname">Pavel</span> <span class="surname">Shved</span>. </span><span class="author"><span class="firstname">Denis</span> <span class="surname">Silakov</span>. </span><span class="biblioid"> + . </span><span class="subtitle"> + ISO C++ J16/06-0083 + . </span><span class="author"><span class="firstname">Benjamin</span> <span class="surname">Kosnik</span>. </span></p></div><div class="biblioentry"><a id="id397135"></a><p><span class="biblioid"> <a class="ulink" href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" target="_top"> + <em class="citetitle"> + Binary Compatibility of Shared Libraries Implemented in C++ + on GNU/Linux Systems + </em> </a> - . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Test </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> API Evolution and Deprecation History</td></tr></table></div></body></html> + . </span><span class="subtitle"> + SYRCoSE 2009 + . </span><span class="author"><span class="firstname">Pavel</span> <span class="surname">Shved</span>. </span><span class="author"><span class="firstname">Denis</span> <span class="surname">Silakov</span>. </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="test.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="api.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Test </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> API Evolution and Deprecation History</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/algorithms.html b/libstdc++-v3/doc/html/manual/algorithms.html index 6049cd8ec0e..d72518a6d70 100644 --- a/libstdc++-v3/doc/html/manual/algorithms.html +++ b/libstdc++-v3/doc/html/manual/algorithms.html @@ -1,9 +1,61 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IX. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library , algorithm " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt08ch19s02.html" title="One Past the End" /><link rel="next" href="bk01pt09pr02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IX. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library , algorithm " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="iterators.html" title="Chapter 10. Iterators" /><link rel="next" href="numerics.html" title="Chapter 12. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Algorithms -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part IX. Algorithms"><div class="titlepage"><div><div><h1 class="title"><a id="manual.algorithms"></a>Part IX. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 11. Algorithms"><div class="titlepage"><div><div><h2 class="title"><a id="std.algorithms"></a>Chapter 11. Algorithms - <a id="id638163" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09pr02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">One Past the End </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> + <a id="id511298" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="sect2"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt></dl></dd></dl></div><p> + The neatest accomplishment of the algorithms sect1 is that all the + work is done via iterators, not containers directly. This means two + important things: +</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> + Anything that behaves like an iterator can be used in one of + these algorithms. Raw pointers make great candidates, thus + built-in arrays are fine containers, as well as your own + iterators. + </p></li><li class="listitem"><p> + The algorithms do not (and cannot) affect the container as a + whole; only the things between the two iterator endpoints. If + you pass a range of iterators only enclosing the middle third of + a container, then anything outside that range is inviolate. + </p></li></ol></div><p> + Even strings can be fed through the algorithms here, although the + string class has specialized versions of many of these functions + (for example, <code class="code">string::find()</code>). Most of the examples + on this page will use simple arrays of integers as a playground + for algorithms, just to keep things simple. The use of + <span class="emphasis"><em>N</em></span> as a size in the examples is to keep things + easy to read but probably won't be valid code. You can use wrappers + such as those described in + the <a class="link" href="containers.html" title="Chapter 9. Containers">containers sect1</a> to keep + real code readable. +</p><p> + The single thing that trips people up the most is the definition + of <span class="emphasis"><em>range</em></span> used with iterators; the famous + "past-the-end" rule that everybody loves to hate. The + <a class="link" href="iterators.html" title="Chapter 10. Iterators">iterators sect1</a> of this + document has a complete explanation of this simple rule that seems + to cause so much confusion. Once you + get <span class="emphasis"><em>range</em></span> into your head (it's not that hard, + honest!), then the algorithms are a cakewalk. +</p><div class="sect1" title="Mutating"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.algorithms.mutating"></a>Mutating</h2></div></div></div><div class="sect2" title="swap"><div class="titlepage"><div><div><h3 class="title"><a id="algorithms.mutating.swap"></a><code class="function">swap</code></h3></div></div></div><div class="sect3" title="Specializations"><div class="titlepage"><div><div><h4 class="title"><a id="algorithms.swap.specializations"></a>Specializations</h4></div></div></div><p>If you call <code class="code"> std::swap(x,y); </code> where x and y are standard + containers, then the call will automatically be replaced by a call to + <code class="code"> x.swap(y); </code> instead. + </p><p>This allows member functions of each container class to take over, and + containers' swap functions should have O(1) complexity according to + the standard. (And while "should" allows implementations to + behave otherwise and remain compliant, this implementation does in + fact use constant-time swaps.) This should not be surprising, since + for two containers of the same type to swap contents, only some + internal pointers to storage need to be exchanged. + </p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 10. + Iterators + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 12. + Numerics + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/api.html b/libstdc++-v3/doc/html/manual/api.html index 0b70a4cb1bc..d53fa3ebb65 100644 --- a/libstdc++-v3/doc/html/manual/api.html +++ b/libstdc++-v3/doc/html/manual/api.html @@ -30,8 +30,8 @@ Removal of <code class="filename">ext/tree</code>, moved to <code class="filenam </p><p>Symbol versioning introduced for shared library.</p><p>Removal of include <code class="filename">backward/strstream.h</code>.</p><p>Allocator changes. Change <code class="code">__malloc_alloc</code> to <code class="code">malloc_allocator</code> and <code class="code">__new_alloc</code> to <code class="code">new_allocator</code>. </p><p> For GCC releases from 2.95 through the 3.1 series, defining <code class="literal">__USE_MALLOC</code> on the gcc command line would change the default allocation strategy to instead use <code class="code"> malloc</code> and - <code class="function">free</code>. (This same functionality is now spelled <code class="literal">_GLIBCXX_FORCE_NEW</code>, see - <a class="link" href="using_macros.html" title="Macros">this page</a> + <code class="function">free</code>. (This same functionality is now spelled <code class="literal">_GLIBCXX_FORCE_NEW</code>, see + <a class="link" href="using_macros.html" title="Macros">this page</a> for details. </p><p>Error handling in iostreams cleaned up, made consistent. </p></div><div class="sect2" title="3.3"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_330"></a><code class="constant">3.3</code></h3></div></div></div><p> </p></div><div class="sect2" title="3.4"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_340"></a><code class="constant">3.4</code></h3></div></div></div><p> @@ -75,11 +75,11 @@ _Alloc_traits</code> have been removed. <span class="type">__alloc</span> to select an underlying allocator that satisfied memory allocation requests. The selection of this underlying allocator was not user-configurable. - </p><div class="table"><a id="id653273"></a><p class="title"><b>Table B.1. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template<int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc<T></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection + </p><div class="table"><a id="id510444"></a><p class="title"><b>Table B.1. Extension Allocators</b></p><div class="table-contents"><table summary="Extension Allocators" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator (3.4)</th><th align="left">Header (3.4)</th><th align="left">Allocator (3.[0-3])</th><th align="left">Header (3.[0-3])</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::new_allocator<T></code></td><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="classname">std::__new_alloc</code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::malloc_allocator<T></code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="classname">std::__malloc_alloc_template<int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::debug_allocator<T></code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="classname">std::debug_alloc<T></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__pool_alloc<T></code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="classname">std::__default_alloc_template<bool,int></code></td><td align="left"><code class="filename">memory</code></td></tr><tr><td align="left"><code class="classname">__gnu_cxx::__mt_alloc<T></code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left"><code class="classname">__gnu_cxx::bitmap_allocator<T></code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /><p> Releases after gcc-3.4 have continued to add to the collection of available allocators. All of these new allocators are standard-style. The following table includes details, along with the first released version of GCC that included the extension allocator. - </p><div class="table"><a id="id594438"></a><p class="title"><b>Table B.2. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p> + </p><div class="table"><a id="id396448"></a><p class="title"><b>Table B.2. Extension Allocators Continued</b></p><div class="table-contents"><table summary="Extension Allocators Continued" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Allocator</th><th align="left">Include</th><th align="left">Version</th></tr></thead><tbody><tr><td align="left"><code class="classname">__gnu_cxx::array_allocator<T></code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left">4.0.0</td></tr><tr><td align="left"><code class="classname">__gnu_cxx::throw_allocator<T></code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left">4.2.0</td></tr></tbody></table></div></div><br class="table-break" /><p> Debug mode first appears. </p><p> Precompiled header support <acronym class="acronym">PCH</acronym> support. @@ -143,13 +143,13 @@ Debug mode for <code class="filename">unordered_map</code> and <code class="file </p><p> Parallel mode first appears. </p><p>Variadic template implementations of items in <code class="filename">tuple</code> and - <code class="filename">functional</code>. + <code class="filename">functional</code>. </p><p>Default <code class="code">what</code> implementations give more elaborate exception strings for <code class="code">bad_cast</code>, <code class="code">bad_typeid</code>, <code class="code">bad_exception</code>, and <code class="code">bad_alloc</code>. </p><p> -PCH binary files no longer installed. Instead, the source files are installed. +PCH binary files no longer installed. Instead, the source files are installed. </p><p> Namespace pb_ds moved to __gnu_pb_ds. </p></div><div class="sect2" title="4.4"><div class="titlepage"><div><div><h3 class="title"><a id="api.rel_440"></a><code class="constant">4.4</code></h3></div></div></div><p> @@ -227,7 +227,7 @@ C++0X features. </p></li></ul></div><p> Profile mode first appears. </p><p> -Support for decimal floating-point arithmetic, including <code class="classname">decimal32</code>, <code class="classname">decimal64</code>, and <code class="classname">decimal128</code>. +Support for decimal floating-point arithmetic, including <code class="classname">decimal32</code>, <code class="classname">decimal64</code>, and <code class="classname">decimal128</code>. </p><p> Python pretty-printers are added for use with appropriately-advanced versions of <span class="command"><strong>gdb</strong></span>. </p><p> diff --git a/libstdc++-v3/doc/html/manual/appendix_contributing.html b/libstdc++-v3/doc/html/manual/appendix_contributing.html index 422b57a813e..fff5258f25a 100644 --- a/libstdc++-v3/doc/html/manual/appendix_contributing.html +++ b/libstdc++-v3/doc/html/manual/appendix_contributing.html @@ -1,17 +1,19 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt12ch41s03.html" title="Use" /><link rel="next" href="source_organization.html" title="Directory Layout and Source Conventions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix A. Contributing</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04.html" title="Part IV. Appendices" /><link rel="prev" href="bk01pt04.html" title="Part IV. Appendices" /><link rel="next" href="source_organization.html" title="Directory Layout and Source Conventions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. Contributing -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch41s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix A. Contributing"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.contrib"></a>Appendix A. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt04.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices +</th><td width="20%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix A. Contributing"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.contrib"></a>Appendix A. Contributing - <a id="id598653" class="indexterm"></a> -</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p> + <a id="id431932" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.combines">Combines</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></div><p> The GNU C++ Library follows an open development model. Active contributors are assigned maintainer-ship responsibility, and given write access to the source repository. First time contributors should follow this procedure: -</p><div class="sect1" title="Contributor Checklist"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.list"></a>Contributor Checklist</h2></div></div></div><div class="sect2" title="Reading"><div class="titlepage"><div><div><h3 class="title"><a id="list.reading"></a>Reading</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> +</p><div class="sect1" title="Contributor Checklist"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.list"></a>Contributor Checklist</h2></div></div></div><div class="sect2" title="Reading"><div class="titlepage"><div><div><h3 class="title"><a id="list.reading"></a>Reading</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> Get and read the relevant sections of the C++ language specification. Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee @@ -21,29 +23,29 @@ the standard from their respective national standards organization. In the USA, this national standards organization is ANSI and their web-site is right - <a class="ulink" href="http://www.ansi.org" target="_top">here.</a> - (And if you've already registered with them, clicking this link will take you to directly to the place where you can - <a class="ulink" href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003" target="_top">buy the standard on-line.)</a> - </p></li><li class="listitem"><p> + <a class="ulink" href="http://www.ansi.org" target="_top">here.</a> + (And if you've already registered with them, clicking this link will take you to directly to the place where you can + <a class="ulink" href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003" target="_top">buy the standard on-line</a>.) + </p></li><li class="listitem"><p> The library working group bugs, and known defects, can be obtained here: <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/" target="_top">http://www.open-std.org/jtc1/sc22/wg21 </a> - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> The newsgroup dedicated to standardization issues is comp.std.c++: this FAQ for this group is quite useful and can be found <a class="ulink" href="http://www.comeaucomputing.com/csc/faq.html" target="_top"> here </a>. - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> Peruse the <a class="ulink" href="http://www.gnu.org/prep/standards" target="_top">GNU Coding Standards</a>, and chuckle when you hit the part about <span class="quote">“<span class="quote">Using Languages Other Than C</span>”</span>. - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> Be familiar with the extensions that preceded these general GNU rules. These style issues for libstdc++ can be found <a class="link" href="source_code_style.html" title="Coding Style">here</a>. - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> And last but certainly not least, read the library-specific information found <a class="link" href="appendix_porting.html" title="Appendix B. Porting and Maintenance"> here</a>. @@ -51,8 +53,8 @@ Small changes can be accepted without a copyright assignment form on file. New code and additions to the library need completed copyright assignment form on file at the FSF. Note: your employer may be required - to fill out appropriate disclaimer forms as well. - </p><p> + to fill out appropriate disclaimer forms as well. + </p><p> Historically, the libstdc++ assignment form added the following question: </p><p> @@ -64,7 +66,7 @@ While not strictly necessary, humoring the maintainers and answering this question would be appreciated. </p><p> - For more information about getting a copyright assignment, please see + For more information about getting a copyright assignment, please see <a class="ulink" href="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html" target="_top">Legal Matters</a>. </p><p> @@ -81,22 +83,22 @@ Every patch must have several pieces of information before it can be properly evaluated. Ideally (and to ensure the fastest possible response from the maintainers) it would have all of these pieces: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> A description of the bug and how your patch fixes this bug. For new features a description of the feature and your - implementation. - </p></li><li class="listitem"><p> + implementation. + </p></li><li class="listitem"><p> A ChangeLog entry as plain text; see the various ChangeLog files for format and content. If you are using emacs as your editor, simply position the insertion point at the beginning of your change and hit CX-4a to bring up the appropriate ChangeLog entry. See--magic! Similar - functionality also exists for vi. - </p></li><li class="listitem"><p> + functionality also exists for vi. + </p></li><li class="listitem"><p> A testsuite submission or sample program that will easily and simply show the existing error or test new - functionality. - </p></li><li class="listitem"><p> + functionality. + </p></li><li class="listitem"><p> The patch itself. If you are accessing the SVN repository use <span class="command"><strong>svn update; svn diff NEW</strong></span>; else, use <span class="command"><strong>diff -cp OLD NEW</strong></span> ... If your @@ -105,9 +107,11 @@ diff. The <a class="ulink" href="http://gcc.gnu.org/wiki/SvnTricks" target="_top">SVN Tricks</a> wiki page has information on customising the output of <code class="code">svn diff</code>. - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> When you have all these pieces, bundle them up in a mail message and send it to libstdc++@gcc.gnu.org. All patches and related discussion should be sent to the - libstdc++ mailing list. - </p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch41s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Use </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Directory Layout and Source Conventions</td></tr></table></div></body></html> + libstdc++ mailing list. + </p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_organization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IV. + Appendices + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Directory Layout and Source Conventions</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/appendix_free.html b/libstdc++-v3/doc/html/manual/appendix_free.html index dd77c972f07..847d386aacb 100644 --- a/libstdc++-v3/doc/html/manual/appendix_free.html +++ b/libstdc++-v3/doc/html/manual/appendix_free.html @@ -1,11 +1,13 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="backwards.html" title="Backwards Compatibility" /><link rel="next" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix C. Free Software Needs Free Documentation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04.html" title="Part IV. Appendices" /><link rel="prev" href="backwards.html" title="Backwards Compatibility" /><link rel="next" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C. Free Software Needs Free Documentation -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix C. Free Software Needs Free Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.free"></a>Appendix C. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices +</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix C. Free Software Needs Free Documentation"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.free"></a>Appendix C. Free Software Needs Free Documentation - <a id="id702684" class="indexterm"></a> + <a id="id381354" class="indexterm"></a> </h2></div></div></div><p> The biggest deficiency in free operating systems is not in the software--it is the lack of good free manuals that we can include in @@ -35,7 +37,7 @@ restrict it so that we cannot use it. </p><p> Given that writing good English is a rare skill among programmers, we can ill afford to lose manuals this way. -</p><p> +</p><p> Free documentation, like free software, is a matter of freedom, not price. The problem with these manuals was not that O'Reilly Associates charged a price for printed copies--that in itself is fine. @@ -119,6 +121,6 @@ prefer copylefted manuals to non-copylefted ones. that lists free books available from other publishers</a>]. </p><p>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</p><p>Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this -notice is preserved.</p><p>Report any problems or suggestions to <code class="email"><<a class="email" href="mailto:webmaster@fsf.org">webmaster@fsf.org</a>></code>.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix D. +notice is preserved.</p><p>Report any problems or suggestions to <code class="email"><<a class="email" href="mailto:webmaster@fsf.org">webmaster@fsf.org</a>></code>.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="backwards.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_gpl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Backwards Compatibility </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix D. <acronym class="acronym">GNU</acronym> General Public License version 3 </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/appendix_gfdl.html b/libstdc++-v3/doc/html/manual/appendix_gfdl.html index 6b6e69ea86d..ab34a73c02a 100644 --- a/libstdc++-v3/doc/html/manual/appendix_gfdl.html +++ b/libstdc++-v3/doc/html/manual/appendix_gfdl.html @@ -1,148 +1,154 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /><link rel="next" href="bk01ix01.html" title="Index" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01ix01.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix E. GNU Free Documentation License"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gfdl-1.2"></a>Appendix E. GNU Free Documentation License</h2></div></div></div><p> - Copyright (C) 2000, 2001, 2002 Free Software Foundation, - <abbr class="abbrev">Inc.</abbr> 51 Franklin <abbr class="abbrev">St</abbr>, Fifth Floor, - Boston, <abbr class="abbrev">MA</abbr> 02110-1301 <abbr class="abbrev">USA</abbr>. Everyone is permitted to copy and - distribute verbatim copies of this license document, but changing it is - not allowed. - </p><h2><a id="fdl-1-preamble"></a> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix E. GNU Free Documentation License</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04.html" title="Part IV. Appendices" /><link rel="prev" href="appendix_gpl.html" title="Appendix D. GNU General Public License version 3" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. GNU Free Documentation License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices +</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix E. GNU Free Documentation License"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gfdl-1.3"></a>Appendix E. GNU Free Documentation License</h2></div></div></div><p>Version 1.3, 3 November 2008</p><p> + Copyright © 2000, 2001, 2002, 2007, 2008 + <a class="ulink" href="http://www.fsf.org/" target="_top">Free Software Foundation, Inc.</a> + </p><p> + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + </p><h3><a id="fdl-1-section0"></a> 0. PREAMBLE - </h2><p> + </h3><p> The purpose of this License is to make a manual, textbook, or other - functional and useful document "free" in the sense of freedom: to assure - everyone the effective freedom to copy and redistribute it, with or - without modifying it, either commercially or noncommercially. - Secondarily, this License preserves for the author and publisher a way to - get credit for their work, while not being considered responsible for - modifications made by others. - </p><p> - This License is a kind of "copyleft", which means that derivative works of - the document must themselves be free in the same sense. It complements - the GNU General Public License, which is a copyleft license designed for - free software. + functional and useful document “free” in the sense of freedom: + to assure everyone the effective freedom to copy and redistribute it, with + or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the author and + publisher a way to get credit for their work, while not being considered + responsible for modifications made by others. + </p><p> + This License is a kind of “copyleft”, which means that + derivative works of the document must themselves be free in the same + sense. It complements the GNU General Public License, which is a copyleft + license designed for free software. </p><p> We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software - does. But this License is not limited to software manuals; it can be used + does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is - published as a printed book. We recommend this License principally for - works whose purpose is instruction or reference.</p><h2><a id="fdl-1-definitions"></a> + published as a printed book. We recommend this License principally for + works whose purpose is instruction or reference. + </p><h3><a id="fdl-1-section1"></a> 1. APPLICABILITY AND DEFINITIONS - </h2><p> + </h3><p> This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be - distributed under the terms of this License. Such a notice grants a + distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work - under the conditions stated herein. The "Document", below, refers to any - such manual or work. Any member of the public is a licensee, and is - addressed as "you". You accept the license if you copy, modify or - distribute the work in a way requiring permission under copyright - law. - </p><p> - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with modifications - and/or translated into another language. - </p><p> - A "Secondary Section" is a named appendix or a front-matter section of the - Document that deals exclusively with the relationship of the publishers or - authors of the Document to the Document's overall subject (or to related - matters) and contains nothing that could fall directly within that overall - subject. (Thus, if the Document is in part a textbook of mathematics, a - Secondary Section may not explain any mathematics.) The relationship - could be a matter of historical connection with the subject or with - related matters, or of legal, commercial, philosophical, ethical or - political position regarding them. - </p><p> - The "Invariant Sections" are certain Secondary Sections whose titles are - designated, as being those of Invariant Sections, in the notice that says - that the Document is released under this License. If a section does not - fit the above definition of Secondary then it is not allowed to be - designated as Invariant. The Document may contain zero Invariant - Sections. If the Document does not identify any Invariant Sections then + under the conditions stated herein. The “Document”, below, + refers to any such manual or work. Any member of the public is a licensee, + and is addressed as “you”. You accept the license if you copy, + modify or distribute the work in a way requiring permission under + copyright law. + </p><p> + A “Modified Version” of the Document means any work containing + the Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + </p><p> + A “Secondary Section” is a named appendix or a front-matter + section of the Document that deals exclusively with the relationship of + the publishers or authors of the Document to the Document’s overall + subject (or to related matters) and contains nothing that could fall + directly within that overall subject. (Thus, if the Document is in part a + textbook of mathematics, a Secondary Section may not explain any + mathematics.) The relationship could be a matter of historical connection + with the subject or with related matters, or of legal, commercial, + philosophical, ethical or political position regarding them. + </p><p> + The “Invariant Sections” are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the notice + that says that the Document is released under this License. If a section + does not fit the above definition of Secondary then it is not allowed to + be designated as Invariant. The Document may contain zero Invariant + Sections. If the Document does not identify any Invariant Sections then there are none. </p><p> - The "Cover Texts" are certain short passages of text that are listed, as - Front-Cover Texts or Back-Cover Texts, in the notice that says that the - Document is released under this License. A Front-Cover Text may be at - most 5 words, and a Back-Cover Text may be at most 25 words. - </p><p> - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the general - public, that is suitable for revising the document straightforwardly with - generic text editors or (for images composed of pixels) generic paint - programs or (for drawings) some widely available drawing editor, and that - is suitable for input to text formatters or for automatic translation to a - variety of formats suitable for input to text formatters. A copy made in - an otherwise Transparent file format whose markup, or absence of markup, - has been arranged to thwart or discourage subsequent modification by - readers is not Transparent. An image format is not Transparent if used - for any substantial amount of text. A copy that is not "Transparent" is - called "Opaque". + The “Cover Texts” are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says + that the Document is released under this License. A Front-Cover Text may + be at most 5 words, and a Back-Cover Text may be at most 25 words. + </p><p> + A “Transparent” copy of the Document means a machine-readable + copy, represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed of + pixels) generic paint programs or (for drawings) some widely available + drawing editor, and that is suitable for input to text formatters or for + automatic translation to a variety of formats suitable for input to text + formatters. A copy made in an otherwise Transparent file format whose + markup, or absence of markup, has been arranged to thwart or discourage + subsequent modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A copy that is + not “Transparent” is called “Opaque”. </p><p> Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, - PostScript or PDF designed for human modification. Examples of - transparent image formats include PNG, XCF and JPG. Opaque formats - include proprietary formats that can be read and edited only by - proprietary word processors, SGML or XML for which the DTD and/or - processing tools are not generally available, and the machine-generated - HTML, PostScript or PDF produced by some word processors for output - purposes only. - </p><p> - The "Title Page" means, for a printed book, the title page itself, plus - such following pages as are needed to hold, legibly, the material this - License requires to appear in the title page. For works in formats which - do not have any title page as such, "Title Page" means the text near the - most prominent appearance of the work's title, preceding the beginning of - the body of the text. - </p><p> - A section "Entitled XYZ" means a named subunit of the Document whose title - either is precisely XYZ or contains XYZ in parentheses following text that - translates XYZ in another language. (Here XYZ stands for a specific - section name mentioned below, such as "Acknowledgements", "Dedications", - "Endorsements", or "History".) To "Preserve the Title" of such a section - when you modify the Document means that it remains a section "Entitled - XYZ" according to this definition. + PostScript or PDF designed for human modification. Examples of transparent + image formats include PNG, XCF and JPG. Opaque formats include proprietary + formats that can be read and edited only by proprietary word processors, + SGML or XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF produced by + some word processors for output purposes only. + </p><p> + The “Title Page” means, for a printed book, the title page + itself, plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For works in + formats which do not have any title page as such, “Title Page” + means the text near the most prominent appearance of the work’s + title, preceding the beginning of the body of the text. + </p><p> + The “publisher” means any person or entity that distributes + copies of the Document to the public. + </p><p> + A section “Entitled XYZ” means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ stands + for a specific section name mentioned below, such as + “Acknowledgements”, “Dedications”, + “Endorsements”, or “History”.) To “Preserve + the Title” of such a section when you modify the Document means that + it remains a section “Entitled XYZ” according to this + definition. </p><p> The Document may include Warranty Disclaimers next to the notice which - states that this License applies to the Document. These Warranty + states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. - </p><h2><a id="VerbatimCopying"></a> + </p><h3><a id="fdl-1-section2"></a> 2. VERBATIM COPYING - </h2><p> + </h3><p> You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other - conditions whatsoever to those of this License. You may not use technical + conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the - copies you make or distribute. However, you may accept compensation in - exchange for copies. If you distribute a large enough number of copies - you must also follow the conditions in section 3. + copies you make or distribute. However, you may accept compensation in + exchange for copies. If you distribute a large enough number of copies you + must also follow the conditions in section 3. </p><p> You may also lend copies, under the same conditions stated above, and you may publicly display copies. - </p><h2><a id="QuantityCopying"></a> + </p><h3><a id="fdl-1-section3"></a> 3. COPYING IN QUANTITY - </h2><p> + </h3><p> If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the - Document's license notice requires Cover Texts, you must enclose the - copies in covers that carry, clearly and legibly, all these Cover Texts: - Front-Cover Texts on the front cover, and Back-Cover Texts on the back - cover. Both covers must also clearly and legibly identify you as the - publisher of these copies. The front cover must present the full title - with all words of the title equally prominent and visible. You may add - other material on the covers in addition. Copying with changes limited to + Document’s license notice requires Cover Texts, you must enclose + the copies in covers that carry, clearly and legibly, all these Cover + Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the + back cover. Both covers must also clearly and legibly identify you as the + publisher of these copies. The front cover must present the full title + with all words of the title equally prominent and visible. You may add + other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy - these conditions, can be treated as verbatim copying in other - respects. + these conditions, can be treated as verbatim copying in other respects. </p><p> If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the @@ -153,7 +159,7 @@ along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete - Transparent copy of the Document, free of added material. If you use the + Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one @@ -162,24 +168,23 @@ </p><p> It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give - them a chance to provide you with an updated version of the - Document. - </p><h2><a id="Modifications"></a> + them a chance to provide you with an updated version of the Document. + </p><h3><a id="fdl-1-section4"></a> 4. MODIFICATIONS - </h2><p> + </h3><p> You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and - modification of the Modified Version to whoever possesses a copy of it. - In addition, you must do these things in the Modified Version: + modification of the Modified Version to whoever possesses a copy of it. In + addition, you must do these things in the Modified Version: </p><div class="orderedlist"><ol class="orderedlist" type="A"><li class="listitem"> Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the - Document). You may use the same title as a previous version if the + Document). You may use the same title as a previous version if the original publisher of that version gives permission. - </li><li class="listitem"> + </li><li class="listitem"> List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the @@ -199,60 +204,63 @@ terms of this License, in the form shown in the Addendum below. </li><li class="listitem"> Preserve in that license notice the full lists of Invariant Sections - and required Cover Texts given in the Document's license notice. + and required Cover Texts given in the Document’s license + notice. </li><li class="listitem"> Include an unaltered copy of this License. </li><li class="listitem"> - Preserve the section Entitled "History", Preserve its Title, and add - to it an item stating at least the title, year, new authors, and - publisher of the Modified Version as given on the Title Page. If - there is no section Entitled "History" in the Document, create one - stating the title, year, authors, and publisher of the Document as - given on its Title Page, then add an item describing the Modified - Version as stated in the previous sentence. + Preserve the section Entitled “History”, Preserve its + Title, and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the Title + Page. If there is no section Entitled “History” in the + Document, create one stating the title, year, authors, and publisher + of the Document as given on its Title Page, then add an item + describing the Modified Version as stated in the previous sentence. </li><li class="listitem"> Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was - based on. These may be placed in the "History" section. You may omit - a network location for a work that was published at least four years - before the Document itself, or if the original publisher of the - version it refers to gives permission. + based on. These may be placed in the “History” + section. You may omit a network location for a work that was published + at least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. </li><li class="listitem"> - For any section Entitled "Acknowledgements" or "Dedications", Preserve - the Title of the section, and preserve in the section all the - substance and tone of each of the contributor acknowledgements and/or - dedications given therein. + For any section Entitled “Acknowledgements” or + “Dedications”, Preserve the Title of the section, and + preserve in the section all the substance and tone of each of the + contributor acknowledgements and/or dedications given therein. </li><li class="listitem"> Preserve all the Invariant Sections of the Document, unaltered in - their text and in their titles. Section numbers or the equivalent are + their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. </li><li class="listitem"> - Delete any section Entitled "Endorsements". Such a section may not be - included in the Modified Version. + Delete any section Entitled “Endorsements”. Such a section + may not be included in the Modified Version. </li><li class="listitem"> - Do not retitle any existing section to be Entitled "Endorsements" or - to conflict in title with any Invariant Section. + Do not retitle any existing section to be Entitled + “Endorsements” or to conflict in title with any Invariant + Section. </li><li class="listitem"> Preserve any Warranty Disclaimers. </li></ol></div><p> If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections - as invariant. To do this, add their titles to the list of Invariant - Sections in the Modified Version's license notice. These titles must be - distinct from any other section titles. + as invariant. To do this, add their titles to the list of Invariant + Sections in the Modified Version’s license notice. These titles + must be distinct from any other section titles. </p><p> - You may add a section Entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various parties--for - example, statements of peer review or that the text has been approved by - an organization as the authoritative definition of a standard. + You may add a section Entitled “Endorsements”, provided it + contains nothing but endorsements of your Modified Version by various + parties — for example, statements of peer review or that the text + has been approved by an organization as the authoritative definition of a + standard. </p><p> You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of - Cover Texts in the Modified Version. Only one passage of Front-Cover Text + Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made - by) any one entity. If the Document already includes a cover text for the + by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher @@ -261,9 +269,9 @@ The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. - </p><h2><a id="Combining"></a> + </p><h3><a id="fdl-1-section5"></a> 5. COMBINING DOCUMENTS - </h2><p> + </h3><p> You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections @@ -272,22 +280,23 @@ you preserve all their Warranty Disclaimers. </p><p> The combined work need only contain one copy of this License, and multiple - identical Invariant Sections may be replaced with a single copy. If there + identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section - if known, or else a unique number. Make the same adjustment to the - section titles in the list of Invariant Sections in the license notice of - the combined work. - </p><p> - In the combination, you must combine any sections Entitled "History" in - the various original documents, forming one section Entitled "History"; - likewise combine any sections Entitled "Acknowledgements", and any - sections Entitled "Dedications". You must delete all sections Entitled - "Endorsements". - </p><h2><a id="Collections"></a> + if known, or else a unique number. Make the same adjustment to the section + titles in the list of Invariant Sections in the license notice of the + combined work. + </p><p> + In the combination, you must combine any sections Entitled + “History” in the various original documents, forming one + section Entitled “History”; likewise combine any sections + Entitled “Acknowledgements”, and any sections Entitled + “Dedications”. You must delete all sections Entitled + “Endorsements”. + </p><h3><a id="fdl-1-section6"></a> 6. COLLECTIONS OF DOCUMENTS - </h2><p> + </h3><p> You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in @@ -298,90 +307,135 @@ it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. - </p><h2><a id="Aggregation"></a> + </p><h3><a id="fdl-1-section7"></a> 7. AGGREGATION WITH INDEPENDENT WORKS - </h2><p> + </h3><p> A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or - distribution medium, is called an "aggregate" if the copyright resulting - from the compilation is not used to limit the legal rights of the - compilation's users beyond what the individual works permit. When the - Document is included in an aggregate, this License does not apply to the - other works in the aggregate which are not themselves derivative works of - the Document. + distribution medium, is called an “aggregate” if the copyright + resulting from the compilation is not used to limit the legal rights of + the compilation’s users beyond what the individual works + permit. When the Document is included in an aggregate, this License does + not apply to the other works in the aggregate which are not themselves + derivative works of the Document. </p><p> If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire - aggregate, the Document's Cover Texts may be placed on covers that bracket - the Document within the aggregate, or the electronic equivalent of covers - if the Document is in electronic form. Otherwise they must appear on - printed covers that bracket the whole aggregate. - </p><h2><a id="Translation"></a> + aggregate, the Document’s Cover Texts may be placed on covers that + bracket the Document within the aggregate, or the electronic equivalent of + covers if the Document is in electronic form. Otherwise they must appear + on printed covers that bracket the whole aggregate. + </p><h3><a id="fdl-1-section8"></a> 8. TRANSLATION - </h2><p> + </h3><p> Translation is considered a kind of modification, so you may distribute - translations of the Document under the terms of section 4. Replacing + translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant - Sections. You may include a translation of this License, and all the + Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the - original versions of those notices and disclaimers. In case of a + original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. </p><p> - If a section in the Document is Entitled "Acknowledgements", - "Dedications", or "History", the requirement (section 4) to Preserve its - Title (section 1) will typically require changing the actual title. - </p><h2><a id="fdl-1-termination"></a> + If a section in the Document is Entitled “Acknowledgements”, + “Dedications”, or “History”, the requirement + (section 4) to Preserve its Title (section 1) will typically require + changing the actual title. + </p><h3><a id="fdl-1-section9"></a> 9. TERMINATION - </h2><p> + </h3><p> You may not copy, modify, sublicense, or distribute the Document except as - expressly provided for under this License. Any other attempt to copy, - modify, sublicense or distribute the Document is void, and will - automatically terminate your rights under this License. However, parties - who have received copies, or rights, from you under this License will not - have their licenses terminated so long as such parties remain in full - compliance. - </p><h2><a id="FutureRevisions"></a> + expressly provided under this License. Any attempt otherwise to copy, + modify, sublicense, or distribute it is void, and will automatically + terminate your rights under this License. + </p><p> + However, if you cease all violation of this License, then your license + from a particular copyright holder is reinstated (a) provisionally, unless + and until the copyright holder explicitly and finally terminates your + license, and (b) permanently, if the copyright holder fails to notify you + of the violation by some reasonable means prior to 60 days after the + cessation. + </p><p> + Moreover, your license from a particular copyright holder is reinstated + permanently if the copyright holder notifies you of the violation by some + reasonable means, this is the first time you have received notice of + violation of this License (for any work) from that copyright holder, and + you cure the violation prior to 30 days after your receipt of the notice. + </p><p> + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under this + License. If your rights have been terminated and not permanently + reinstated, receipt of a copy of some or all of the same material does not + give you any rights to use it. + </p><h3><a id="fdl-1-section10"></a> 10. FUTURE REVISIONS OF THIS LICENSE - </h2><p> + </h3><p> The Free Software Foundation may publish new, revised versions of the GNU - Free Documentation License from time to time. Such new versions will be + Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. See <a class="ulink" href="http://www.gnu.org/copyleft/" target="_top">http://www.gnu.org/copyleft/</a>. + address new problems or concerns. See + <a class="ulink" href="http://www.gnu.org/copyleft/" target="_top">Copyleft</a>. </p><p> - Each version of the License is given a distinguishing version number. If + Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License - "or any later version" applies to it, you have the option of following the - terms and conditions either of that specified version or of any later - version that has been published (not as a draft) by the Free Software - Foundation. If the Document does not specify a version number of this - License, you may choose any version ever published (not as a draft) by the - Free Software Foundation. - </p><h2><a id="HowToUse"></a> + “or any later version” applies to it, you have the option of + following the terms and conditions either of that specified version or of + any later version that has been published (not as a draft) by the Free + Software Foundation. If the Document does not specify a version number of + this License, you may choose any version ever published (not as a draft) + by the Free Software Foundation. If the Document specifies that a proxy + can decide which future versions of this License can be used, that + proxy’s public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + </p><h3><a id="fdl-1-section11"></a> + 11. RELICENSING + </h3><p> + “Massive Multiauthor Collaboration Site” (or “MMC + Site”) means any World Wide Web server that publishes copyrightable + works and also provides prominent facilities for anybody to edit those + works. A public wiki that anybody can edit is an example of such a + server. A “Massive Multiauthor Collaboration” (or + “MMC”) contained in the site means any set of copyrightable + works thus published on the MMC site. + </p><p> + “CC-BY-SA” means the Creative Commons Attribution-Share Alike + 3.0 license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license published + by that same organization. + </p><p> + “Incorporate” means to publish or republish a Document, in + whole or in part, as part of another Document. + </p><p> + An MMC is “eligible for relicensing” if it is licensed under + this License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently incorporated in + whole or in part into the MMC, (1) had no cover texts or invariant + sections, and (2) were thus incorporated prior to November 1, 2008. + </p><p> + The operator of an MMC Site may republish an MMC contained in the site + under CC-BY-SA on the same site at any time before August 1, 2009, + provided the MMC is eligible for relicensing. + </p><h3><a id="fdl-1-addendum"></a> ADDENDUM: How to use this License for your documents - </h2><p> + </h3><p> To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: - </p><div class="blockquote"><blockquote class="blockquote"><p> - Copyright (C) YEAR YOUR NAME. - </p><p> - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.2 or - any later version published by the Free Software Foundation; with no - Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A - copy of the license is included in the section entitled "GNU Free - Documentation License". - </p></blockquote></div><p> + </p><pre class="screen">Copyright © YEAR YOUR NAME + +Permission is granted to copy, distribute and/or modify this document under the +terms of the GNU Free Documentation License, Version 1.3 or any later version +published by the Free Software Foundation; with no Invariant Sections, no +Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in +the section entitled “GNU Free Documentation License”.</pre><p> If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, - replace the "with...Texts." line with this: - </p><div class="blockquote"><blockquote class="blockquote"><p> - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - </p></blockquote></div><p> + replace the “with… Texts.” line with this: + </p><pre class="screen">with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts +being LIST, and with the Back-Cover Texts being LIST.</pre><p> If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. @@ -390,6 +444,6 @@ recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01ix01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix D. + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_gpl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix D. <acronym class="acronym">GNU</acronym> General Public License version 3 - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Index</td></tr></table></div></body></html> + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/appendix_gpl.html b/libstdc++-v3/doc/html/manual/appendix_gpl.html index 5dd0a7da6d1..9e5814957d8 100644 --- a/libstdc++-v3/doc/html/manual/appendix_gpl.html +++ b/libstdc++-v3/doc/html/manual/appendix_gpl.html @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix D. GNU General Public License version 3</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /><link rel="next" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix D. GNU General Public License version 3</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04.html" title="Part IV. Appendices" /><link rel="prev" href="appendix_free.html" title="Appendix C. Free Software Needs Free Documentation" /><link rel="next" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. <acronym class="acronym">GNU</acronym> General Public License version 3 - </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix D. GNU General Public License version 3"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gpl-3.0"></a>Appendix D. + </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices +</th><td width="20%" align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix D. GNU General Public License version 3"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.gpl-3.0"></a>Appendix D. <acronym class="acronym">GNU</acronym> General Public License version 3 </h2></div></div></div><p> Version 3, 29 June 2007 @@ -76,7 +78,7 @@ </p><p> The precise terms and conditions for copying, distribution and modification follow. - </p><h2><a id="id703002"></a> + </p><h2><a id="id487484"></a> TERMS AND CONDITIONS </h2><h2><a id="gpl-3-definitions"></a> 0. Definitions. @@ -617,7 +619,7 @@ waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - </p><h2><a id="id635999"></a> + </p><h2><a id="id378663"></a> END OF TERMS AND CONDITIONS </h2><h2><a id="HowToApply"></a> How to Apply These Terms to Your New Programs @@ -675,7 +677,7 @@ under certain conditions; type ‘<code class="literal">show c</code>’ for det proprietary applications with the library. If this is what you want to do, use the <acronym class="acronym">GNU</acronym> Lesser General Public License instead of this License. But first, please read <a class="ulink" href="http://www.gnu.org/philosophy/why-not-lgpl.html" target="_top">http://www.gnu.org/philosophy/why-not-lgpl.html</a>. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix C. + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_free.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_gfdl.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix C. Free Software Needs Free Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix E. GNU Free Documentation License</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/appendix_porting.html b/libstdc++-v3/doc/html/manual/appendix_porting.html index ef6924f2892..d53ccecf751 100644 --- a/libstdc++-v3/doc/html/manual/appendix_porting.html +++ b/libstdc++-v3/doc/html/manual/appendix_porting.html @@ -1,12 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="source_design_notes.html" title="Design Notes" /><link rel="next" href="internals.html" title="Porting to New Hardware or Operating Systems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Appendix B. Porting and Maintenance</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt04.html" title="Part IV. Appendices" /><link rel="prev" href="source_design_notes.html" title="Design Notes" /><link rel="next" href="internals.html" title="Porting to New Hardware or Operating Systems" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. Porting and Maintenance -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix B. Porting and Maintenance"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting"></a>Appendix B. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><th width="60%" align="center">Part IV. + Appendices +</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr /></div><div class="appendix" title="Appendix B. Porting and Maintenance"><div class="titlepage"><div><div><h2 class="title"><a id="appendix.porting"></a>Appendix B. Porting and Maintenance - <a id="id631944" class="indexterm"></a> -</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="sect2"><a href="test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="sect1" title="Configure and Build Hacking"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.build_hacking"></a>Configure and Build Hacking</h2></div></div></div><div class="sect2" title="Prerequisites"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"></a>Prerequisites</h3></div></div></div><p> + <a id="id487054" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="sect2"><a href="test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></div><div class="sect1" title="Configure and Build Hacking"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="appendix.porting.build_hacking"></a>Configure and Build Hacking</h2></div></div></div><div class="sect2" title="Prerequisites"><div class="titlepage"><div><div><h3 class="title"><a id="build_hacking.prereq"></a>Prerequisites</h3></div></div></div><p> As noted <a class="ulink" href="http://gcc.gnu.org/install/prerequisites.html" target="_top">previously</a>, certain other tools are necessary for hacking on files that control configure (<code class="code">configure.ac</code>, @@ -227,4 +229,4 @@ argument checking at all is done in this signature. See GLIBCXX_ENABLE_CXX_FLAGS for an example of handling, and an error message. -</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design Notes </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Porting to New Hardware or Operating Systems</td></tr></table></div></body></html> +</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_design_notes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design Notes </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Porting to New Hardware or Operating Systems</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/associative.html b/libstdc++-v3/doc/html/manual/associative.html index bf0731243c9..2173413e41c 100644 --- a/libstdc++-v3/doc/html/manual/associative.html +++ b/libstdc++-v3/doc/html/manual/associative.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Associative</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="vector.html" title="vector" /><link rel="next" href="bitset.html" title="bitset" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="vector.html">Prev</a> </td><th width="60%" align="center">Part VII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Associative</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="containers.html" title="Chapter 9. Containers" /><link rel="next" href="containers_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Associative</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Containers -</th><td width="20%" align="right"> <a accesskey="n" href="bitset.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 17. Associative"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.associative"></a>Chapter 17. Associative</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></div><div class="sect1" title="Insertion Hints"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.insert_hints"></a>Insertion Hints</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Associative"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.associative"></a>Associative</h2></div></div></div><div class="sect2" title="Insertion Hints"><div class="titlepage"><div><div><h3 class="title"><a id="containers.associative.insert_hints"></a>Insertion Hints</h3></div></div></div><p> Section [23.1.2], Table 69, of the C++ standard lists this function for all of the associative containers (map, set, etc): </p><pre class="programlisting"> @@ -48,7 +48,7 @@ <code class="code">end()</code>, then the item being inserted should have a key greater than all the other keys in the container. The item will be inserted at the end of the container, becoming - the new entry before <code class="code">end()</code>. + the new entry before <code class="code">end()</code>. </p></li><li class="listitem"><p> neither <code class="code">begin()</code> nor <code class="code">end()</code>, then: Let <code class="code">h</code> be the entry in the container pointed to @@ -84,4 +84,109 @@ the new item would in fact belong there. If the hint does not point to the correct place, then no further local searching is done; the search begins from scratch in logarithmic time. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="vector.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bitset.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">vector </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitset</td></tr></table></div></body></html> + </p></div><div class="sect2" title="bitset"><div class="titlepage"><div><div><h3 class="title"><a id="containers.associative.bitset"></a>bitset</h3></div></div></div><div class="sect3" title="Size Variable"><div class="titlepage"><div><div><h4 class="title"><a id="associative.bitset.size_variable"></a>Size Variable</h4></div></div></div><p> + No, you cannot write code of the form + </p><pre class="programlisting"> + #include <bitset> + + void foo (size_t n) + { + std::bitset<n> bits; + .... + } + </pre><p> + because <code class="code">n</code> must be known at compile time. Your + compiler is correct; it is not a bug. That's the way templates + work. (Yes, it <span class="emphasis"><em>is</em></span> a feature.) + </p><p> + There are a couple of ways to handle this kind of thing. Please + consider all of them before passing judgement. They include, in + no chaptericular order: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>A very large N in <code class="code">bitset<N></code>.</p></li><li class="listitem"><p>A container<bool>.</p></li><li class="listitem"><p>Extremely weird solutions.</p></li></ul></div><p> + <span class="emphasis"><em>A very large N in + <code class="code">bitset<N></code>. </em></span> It has been + pointed out a few times in newsgroups that N bits only takes up + (N/8) bytes on most systems, and division by a factor of eight is + pretty impressive when speaking of memory. Half a megabyte given + over to a bitset (recall that there is zero space overhead for + housekeeping info; it is known at compile time exactly how large + the set is) will hold over four million bits. If you're using + those bits as status flags (e.g., + <span class="quote">“<span class="quote">changed</span>”</span>/<span class="quote">“<span class="quote">unchanged</span>”</span> flags), that's a + <span class="emphasis"><em>lot</em></span> of state. + </p><p> + You can then keep track of the <span class="quote">“<span class="quote">maximum bit used</span>”</span> + during some testing runs on representative data, make note of how + many of those bits really need to be there, and then reduce N to + a smaller number. Leave some extra space, of course. (If you + plan to write code like the incorrect example above, where the + bitset is a local variable, then you may have to talk your + compiler into allowing that much stack space; there may be zero + space overhead, but it's all allocated inside the object.) + </p><p> + <span class="emphasis"><em>A container<bool>. </em></span> The + Committee made provision for the space savings possible with that + (N/8) usage previously mentioned, so that you don't have to do + wasteful things like <code class="code">Container<char></code> or + <code class="code">Container<short int></code>. Specifically, + <code class="code">vector<bool></code> is required to be specialized for + that space savings. + </p><p> + The problem is that <code class="code">vector<bool></code> doesn't + behave like a normal vector anymore. There have been + journal articles which discuss the problems (the ones by Herb + Sutter in the May and July/August 1999 issues of C++ Report cover + it well). Future revisions of the ISO C++ Standard will change + the requirement for <code class="code">vector<bool></code> + specialization. In the meantime, <code class="code">deque<bool></code> + is recommended (although its behavior is sane, you probably will + not get the space savings, but the allocation scheme is different + than that of vector). + </p><p> + <span class="emphasis"><em>Extremely weird solutions. </em></span> If + you have access to the compiler and linker at runtime, you can do + something insane, like figuring out just how many bits you need, + then writing a temporary source code file. That file contains an + instantiation of <code class="code">bitset</code> for the required number of + bits, inside some wrapper functions with unchanging signatures. + Have your program then call the compiler on that file using + Position Independent Code, then open the newly-created object + file and load those wrapper functions. You'll have an + instantiation of <code class="code">bitset<N></code> for the exact + <code class="code">N</code> that you need at the time. Don't forget to delete + the temporary files. (Yes, this <span class="emphasis"><em>can</em></span> be, and + <span class="emphasis"><em>has been</em></span>, done.) + </p><p> + This would be the approach of either a visionary genius or a + raving lunatic, depending on your programming and management + style. Probably the latter. + </p><p> + Which of the above techniques you use, if any, are up to you and + your intended application. Some time/space profiling is + indicated if it really matters (don't just guess). And, if you + manage to do anything along the lines of the third category, the + author would love to hear from you... + </p><p> + Also note that the implementation of bitset used in libstdc++ has + <a class="link" href="bk01pt03ch21s02.html" title="HP/SGI">some extensions</a>. + </p></div><div class="sect3" title="Type String"><div class="titlepage"><div><div><h4 class="title"><a id="associative.bitset.type_string"></a>Type String</h4></div></div></div><p> + </p><p> + Bitmasks do not take char* nor const char* arguments in their + constructors. This is something of an accident, but you can read + about the problem: follow the library's <span class="quote">“<span class="quote">Links</span>”</span> from + the homepage, and from the C++ information <span class="quote">“<span class="quote">defect + reflector</span>”</span> link, select the library issues list. Issue + number 116 describes the problem. + </p><p> + For now you can simply make a temporary string object using the + constructor expression: + </p><pre class="programlisting"> + std::bitset<5> b ( std::string(<span class="quote">“<span class="quote">10110</span>”</span>) ); + </pre><p> + instead of + </p><pre class="programlisting"> + std::bitset<5> b ( <span class="quote">“<span class="quote">10110</span>”</span> ); // invalid + </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. + Containers + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Interacting with C</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/atomics.html b/libstdc++-v3/doc/html/manual/atomics.html new file mode 100644 index 00000000000..31158a46c57 --- /dev/null +++ b/libstdc++-v3/doc/html/manual/atomics.html @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Atomics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library , atomic " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="io_and_c.html" title="Interacting with C" /><link rel="next" href="concurrency.html" title="Chapter 15. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. + Atomics + +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 14. Atomics"><div class="titlepage"><div><div><h2 class="title"><a id="std.atomics"></a>Chapter 14. + Atomics + <a id="id379773" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></div><p> + Facilities for atomic operations. +</p><div class="sect1" title="API Reference"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.atomics.api"></a>API Reference</h2></div></div></div><p> + All items are declared in the standard header + file <code class="filename">atomic</code>. + </p><p> + Set of typedefs that map <span class="type">int</span> to + <code class="classname">atomic_int</code>, and so on for all builtin + integral types. Global enumeration <span class="type">memory_order</span> to + control memory ordering. Also includes + <code class="classname">atomic</code>, a class template with member + functions such as <code class="function">load</code> and + <code class="function">store</code> that is instantiable such that + <code class="classname">atomic_int</code> is the base class of + <code class="classname">atomic<int></code>. + </p><p> + Full API details. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 15. + Concurrency + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/auto_ptr.html b/libstdc++-v3/doc/html/manual/auto_ptr.html deleted file mode 100644 index 777264504bf..00000000000 --- a/libstdc++-v3/doc/html/manual/auto_ptr.html +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>auto_ptr</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , auto_ptr " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="memory.html" title="Chapter 11. Memory" /><link rel="prev" href="memory.html" title="Chapter 11. Memory" /><link rel="next" href="shared_ptr.html" title="shared_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">auto_ptr</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Memory</th><td width="20%" align="right"> <a accesskey="n" href="shared_ptr.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="auto_ptr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.auto_ptr"></a>auto_ptr</h2></div></div></div><div class="sect2" title="Limitations"><div class="titlepage"><div><div><h3 class="title"><a id="auto_ptr.limitations"></a>Limitations</h3></div></div></div><p>Explaining all of the fun and delicious things that can - happen with misuse of the <code class="classname">auto_ptr</code> class - template (called <acronym class="acronym">AP</acronym> here) would take some - time. Suffice it to say that the use of <acronym class="acronym">AP</acronym> - safely in the presence of copying has some subtleties. - </p><p> - The AP class is a really - nifty idea for a smart pointer, but it is one of the dumbest of - all the smart pointers -- and that's fine. - </p><p> - AP is not meant to be a supersmart solution to all resource - leaks everywhere. Neither is it meant to be an effective form - of garbage collection (although it can help, a little bit). - And it can <span class="emphasis"><em>not</em></span>be used for arrays! - </p><p> - <acronym class="acronym">AP</acronym> is meant to prevent nasty leaks in the - presence of exceptions. That's <span class="emphasis"><em>all</em></span>. This - code is AP-friendly: - </p><pre class="programlisting"> - // Not a recommend naming scheme, but good for web-based FAQs. - typedef std::auto_ptr<MyClass> APMC; - - extern function_taking_MyClass_pointer (MyClass*); - extern some_throwable_function (); - - void func (int data) - { - APMC ap (new MyClass(data)); - - some_throwable_function(); // this will throw an exception - - function_taking_MyClass_pointer (ap.get()); - } - </pre><p>When an exception gets thrown, the instance of MyClass that's - been created on the heap will be <code class="function">delete</code>'d as the stack is - unwound past <code class="function">func()</code>. - </p><p>Changing that code as follows is not <acronym class="acronym">AP</acronym>-friendly: - </p><pre class="programlisting"> - APMC ap (new MyClass[22]); - </pre><p>You will get the same problems as you would without the use - of <acronym class="acronym">AP</acronym>: - </p><pre class="programlisting"> - char* array = new char[10]; // array new... - ... - delete array; // ...but single-object delete - </pre><p> - AP cannot tell whether the pointer you've passed at creation points - to one or many things. If it points to many things, you are about - to die. AP is trivial to write, however, so you could write your - own <code class="code">auto_array_ptr</code> for that situation (in fact, this has - been done many times; check the mailing lists, Usenet, Boost, etc). - </p></div><div class="sect2" title="Use in Containers"><div class="titlepage"><div><div><h3 class="title"><a id="auto_ptr.using"></a>Use in Containers</h3></div></div></div><p> - </p><p>All of the <a class="link" href="containers.html" title="Part VII. Containers">containers</a> - described in the standard library require their contained types - to have, among other things, a copy constructor like this: - </p><pre class="programlisting"> - struct My_Type - { - My_Type (My_Type const&); - }; - </pre><p> - Note the const keyword; the object being copied shouldn't change. - The template class <code class="code">auto_ptr</code> (called AP here) does not - meet this requirement. Creating a new AP by copying an existing - one transfers ownership of the pointed-to object, which means that - the AP being copied must change, which in turn means that the - copy ctors of AP do not take const objects. - </p><p> - The resulting rule is simple: <span class="emphasis"><em>Never ever use a - container of auto_ptr objects</em></span>. The standard says that - <span class="quote">“<span class="quote">undefined</span>”</span> behavior is the result, but it is - guaranteed to be messy. - </p><p> - To prevent you from doing this to yourself, the - <a class="link" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks">concept checks</a> built - in to this implementation will issue an error if you try to - compile code like this: - </p><pre class="programlisting"> - #include <vector> - #include <memory> - - void f() - { - std::vector< std::auto_ptr<int> > vec_ap_int; - } - </pre><p> -Should you try this with the checks enabled, you will see an error. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="memory.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="shared_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 11. Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> shared_ptr</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/backwards.html b/libstdc++-v3/doc/html/manual/backwards.html index 2844247f184..27f3ccb783d 100644 --- a/libstdc++-v3/doc/html/manual/backwards.html +++ b/libstdc++-v3/doc/html/manual/backwards.html @@ -17,8 +17,8 @@ ISO Standard (e.g., statistical analysis). While there are a lot of really useful things that are used by a lot of people, the Standards Committee couldn't include everything, and so a lot of those <span class="quote">“<span class="quote">obvious</span>”</span> classes didn't get included. -</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" title="No ios_base"><div class="titlepage"><div><div><h4 class="title"><a id="id646429"></a>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>. -</p></div><div class="sect3" title="No cout in ostream.h, no cin in istream.h"><div class="titlepage"><div><div><h4 class="title"><a id="id646461"></a>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p> +</p><p>Known Issues include many of the limitations of its immediate ancestor.</p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" title="No ios_base"><div class="titlepage"><div><div><h4 class="title"><a id="id509028"></a>No <code class="code">ios_base</code></h4></div></div></div><p> At least some older implementations don't have <code class="code">std::ios_base</code>, so you should use <code class="code">std::ios::badbit</code>, <code class="code">std::ios::failbit</code> and <code class="code">std::ios::eofbit</code> and <code class="code">std::ios::goodbit</code>. +</p></div><div class="sect3" title="No cout in ostream.h, no cin in istream.h"><div class="titlepage"><div><div><h4 class="title"><a id="id509060"></a>No <code class="code">cout</code> in <code class="code">ostream.h</code>, no <code class="code">cin</code> in <code class="code">istream.h</code></h4></div></div></div><p> In earlier versions of the standard, <code class="filename">fstream.h</code>, <code class="filename">ostream.h</code> @@ -32,26 +32,26 @@ archived. For the desperate, the <a class="ulink" href="http://gcc.gnu.org/extensions.html" target="_top">GCC extensions page</a> describes where to find the last libg++ source. The code is considered replaced and rewritten. -</p></div></div><div class="sect2" title="Second"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.second"></a>Second</h3></div></div></div><p> +</p></div></div><div class="sect2" title="Second"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.second"></a>Second</h3></div></div></div><p> The second generation GNU C++ library was called libstdc++, or libstdc++-v2. It spans the time between libg++ and pre-ISO C++ standardization and is usually associated with the following GCC releases: egcs 1.x, gcc 2.95, and gcc 2.96. -</p><p> +</p><p> The STL portions of this library are based on SGI/HP STL release 3.11. </p><p> This project is no longer maintained or supported, and the sources archived. The code is considered replaced and rewritten. </p><p> Portability notes and known implementation limitations are as follows. -</p><div class="sect3" title="Namespace std:: not supported"><div class="titlepage"><div><div><h4 class="title"><a id="id646559"></a>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p> +</p><div class="sect3" title="Namespace std:: not supported"><div class="titlepage"><div><div><h4 class="title"><a id="id509158"></a>Namespace <code class="code">std::</code> not supported</h4></div></div></div><p> Some care is required to support C++ compiler and or library implementation that do not have the standard library in <code class="code">namespace std</code>. </p><p> The following sections list some possible solutions to support compilers that cannot ignore <code class="code">std::</code>-qualified names. - </p><p> + </p><p> First, see if the compiler has a flag for this. Namespace back-portability-issues are generally not a problem for g++ compilers that do not have libstdc++ in <code class="code">std::</code>, as the @@ -62,7 +62,7 @@ considered replaced and rewritten. probably applies to some other compilers as well. </p><p> Second, experiment with a variety of pre-processor tricks. - </p><p> + </p><p> By defining <code class="code">std</code> as a macro, fully-qualified namespace calls become global. Volia. </p><pre class="programlisting"> @@ -99,8 +99,8 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ ac_cv_cxx_have_std_namespace, [AC_LANG_SAVE AC_LANG_CPLUSPLUS - AC_TRY_COMPILE([#include <iostream> - std::istream& is = std::cin;],, + AC_TRY_COMPILE([#include <iostream> + std::istream& is = std::cin;],, ac_cv_cxx_have_std_namespace=yes, ac_cv_cxx_have_std_namespace=no) AC_LANG_RESTORE ]) @@ -108,7 +108,7 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ AC_DEFINE(HAVE_NAMESPACE_STD,,[Define if g++ supports namespace std. ]) fi ]) -</pre></div><div class="sect3" title="Illegal iterator usage"><div class="titlepage"><div><div><h4 class="title"><a id="id699742"></a>Illegal iterator usage</h4></div></div></div><p> +</pre></div><div class="sect3" title="Illegal iterator usage"><div class="titlepage"><div><div><h4 class="title"><a id="id509280"></a>Illegal iterator usage</h4></div></div></div><p> The following illustrate implementation-allowed illegal iterator use, and then correct use. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> @@ -120,28 +120,28 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ 0</code>) => use <code class="code">iterator = iterator_type();</code> </p></li><li class="listitem"><p> <code class="code">if (iterator)</code> won't work any more => use - <code class="code">if (iterator != iterator_type())</code> - </p></li></ul></div></div><div class="sect3" title="isspace from cctype is a macro"><div class="titlepage"><div><div><h4 class="title"><a id="id699804"></a><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro - </h4></div></div></div><p> + <code class="code">if (iterator != iterator_type())</code> + </p></li></ul></div></div><div class="sect3" title="isspace from cctype is a macro"><div class="titlepage"><div><div><h4 class="title"><a id="id509341"></a><code class="code">isspace</code> from <code class="filename">cctype</code> is a macro + </h4></div></div></div><p> Glibc 2.0.x and 2.1.x define <code class="filename">ctype.h</code> functionality as macros (isspace, isalpha etc.). </p><p> This implementations of libstdc++, however, keep these functions as macros, and so it is not back-portable to use fully qualified names. For example: - </p><pre class="programlisting"> -#include <cctype> -int main() { std::isspace('X'); } + </p><pre class="programlisting"> +#include <cctype> +int main() { std::isspace('X'); } </pre><p> Results in something like this: -</p><pre class="programlisting"> -std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; -</pre><p> +</p><pre class="programlisting"> +std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; +</pre><p> A solution is to modify a header-file so that the compiler tells <code class="filename">ctype.h</code> to define functions instead of macros: </p><pre class="programlisting"> -// This keeps isalnum, et al from being propagated as macros. +// This keeps isalnum, et al from being propagated as macros. #if __linux__ # define __NO_CTYPE 1 #endif @@ -154,7 +154,7 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; (<code class="filename">ctype.h</code>) and the definitions in namespace <code class="code">std::</code> (<code class="code"><cctype></code>). -</p></div><div class="sect3" title="No vector::at, deque::at, string::at"><div class="titlepage"><div><div><h4 class="title"><a id="id699897"></a>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p> +</p></div><div class="sect3" title="No vector::at, deque::at, string::at"><div class="titlepage"><div><div><h4 class="title"><a id="id509434"></a>No <code class="code">vector::at</code>, <code class="code">deque::at</code>, <code class="code">string::at</code></h4></div></div></div><p> One solution is to add an autoconf-test for this: </p><pre class="programlisting"> AC_MSG_CHECKING(for container::at) @@ -163,7 +163,7 @@ AC_TRY_COMPILE( #include <vector> #include <deque> #include <string> - + using namespace std; ], [ @@ -180,7 +180,7 @@ AC_DEFINE(HAVE_CONTAINER_AT)], </pre><p> If you are using other (non-GNU) compilers it might be a good idea to check for <code class="code">string::at</code> separately. -</p></div><div class="sect3" title="No std::char_traits<char>::eof"><div class="titlepage"><div><div><h4 class="title"><a id="id716937"></a>No <code class="code">std::char_traits<char>::eof</code></h4></div></div></div><p> +</p></div><div class="sect3" title="No std::char_traits<char>::eof"><div class="titlepage"><div><div><h4 class="title"><a id="id509472"></a>No <code class="code">std::char_traits<char>::eof</code></h4></div></div></div><p> Use some kind of autoconf test, plus this: </p><pre class="programlisting"> #ifdef HAVE_CHAR_TRAITS @@ -188,45 +188,45 @@ AC_DEFINE(HAVE_CONTAINER_AT)], #else #define CPP_EOF EOF #endif -</pre></div><div class="sect3" title="No string::clear"><div class="titlepage"><div><div><h4 class="title"><a id="id716955"></a>No <code class="code">string::clear</code></h4></div></div></div><p> +</pre></div><div class="sect3" title="No string::clear"><div class="titlepage"><div><div><h4 class="title"><a id="id509490"></a>No <code class="code">string::clear</code></h4></div></div></div><p> There are two functions for deleting the contents of a string: <code class="code">clear</code> and <code class="code">erase</code> (the latter returns the string). </p><pre class="programlisting"> -void +void clear() { _M_mutate(0, this->size(), 0); } </pre><pre class="programlisting"> -basic_string& +basic_string& erase(size_type __pos = 0, size_type __n = npos) -{ +{ return this->replace(_M_check(__pos), _M_fold(__pos, __n), - _M_data(), _M_data()); + _M_data(), _M_data()); } </pre><p> Unfortunately, <code class="code">clear</code> is not implemented in this version, so you should use <code class="code">erase</code> (which is probably faster than <code class="code">operator=(charT*)</code>). -</p></div><div class="sect3" title="Removal of ostream::form and istream::scan extensions"><div class="titlepage"><div><div><h4 class="title"><a id="id717001"></a> +</p></div><div class="sect3" title="Removal of ostream::form and istream::scan extensions"><div class="titlepage"><div><div><h4 class="title"><a id="id384734"></a> Removal of <code class="code">ostream::form</code> and <code class="code">istream::scan</code> extensions -</h4></div></div></div><p> +</h4></div></div></div><p> These are no longer supported. Please use stringstreams instead. -</p></div><div class="sect3" title="No basic_stringbuf, basic_stringstream"><div class="titlepage"><div><div><h4 class="title"><a id="id717020"></a>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p> +</p></div><div class="sect3" title="No basic_stringbuf, basic_stringstream"><div class="titlepage"><div><div><h4 class="title"><a id="id384753"></a>No <code class="code">basic_stringbuf</code>, <code class="code">basic_stringstream</code></h4></div></div></div><p> Although the ISO standard <code class="code">i/ostringstream</code>-classes are provided, (<code class="filename">sstream</code>), for compatibility with older implementations the pre-ISO <code class="code">i/ostrstream</code> (<code class="filename">strstream</code>) interface is also provided, with these caveats: -</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> +</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> <code class="code">strstream</code> is considered to be deprecated - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> <code class="code">strstream</code> is limited to <code class="code">char</code> - </p></li><li class="listitem"><p> + </p></li><li class="listitem"><p> with <code class="code">ostringstream</code> you don't have to take care of - terminating the string or freeing its memory - </p></li><li class="listitem"><p> + terminating the string or freeing its memory + </p></li><li class="listitem"><p> <code class="code">istringstream</code> can be re-filled (clear(); - str(input);) + str(input);) </p></li></ul></div><p> You can then use output-stringstreams like this: </p><pre class="programlisting"> @@ -268,7 +268,7 @@ std::istrstream iss(input.c_str()); #endif int i; -iss >> i; +iss >> i; </pre><p> One (the only?) restriction is that an istrstream cannot be re-filled: </p><pre class="programlisting"> std::istringstream iss(numerator); @@ -295,18 +295,18 @@ if (iss.fail()) throw runtime_error(..) any = temp; } -</pre><p> - Another example of using stringstreams is in <a class="link" href="bk01pt05ch13s05.html" title="Shrink to Fit">this howto</a>. +</pre><p> + Another example of using stringstreams is in <a class="link" href="strings.html#strings.string.shrink" title="Shrink to Fit">this howto</a>. </p><p> There is additional information in the libstdc++-v2 info files, in particular <span class="quote">“<span class="quote">info iostream</span>”</span>. -</p></div><div class="sect3" title="Little or no wide character support"><div class="titlepage"><div><div><h4 class="title"><a id="id717171"></a>Little or no wide character support</h4></div></div></div><p> +</p></div><div class="sect3" title="Little or no wide character support"><div class="titlepage"><div><div><h4 class="title"><a id="id384904"></a>Little or no wide character support</h4></div></div></div><p> Classes <code class="classname">wstring</code> and <code class="classname">char_traits<wchar_t></code> are not supported. - </p></div><div class="sect3" title="No templatized iostreams"><div class="titlepage"><div><div><h4 class="title"><a id="id717190"></a>No templatized iostreams</h4></div></div></div><p> + </p></div><div class="sect3" title="No templatized iostreams"><div class="titlepage"><div><div><h4 class="title"><a id="id384923"></a>No templatized iostreams</h4></div></div></div><p> Classes <code class="classname">wfilebuf</code> and <code class="classname">wstringstream</code> are not supported. - </p></div><div class="sect3" title="Thread safety issues"><div class="titlepage"><div><div><h4 class="title"><a id="id717209"></a>Thread safety issues</h4></div></div></div><p> + </p></div><div class="sect3" title="Thread safety issues"><div class="titlepage"><div><div><h4 class="title"><a id="id384942"></a>Thread safety issues</h4></div></div></div><p> Earlier GCC releases had a somewhat different approach to threading configuration and proper compilation. Before GCC 3.0, configuration of the threading model was dictated by compiler @@ -348,10 +348,10 @@ particular <span class="quote">“<span class="quote">info iostream</span>”</s release series. </p></li><li class="listitem"><p> <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html" target="_top"> - This message</a> inspired a recent updating of issues with - threading and the SGI STL library. It also contains some - example POSIX-multithreaded STL code. - </p></li></ul></div><p> + This message</a> inspired a recent updating of issues with + threading and the SGI STL library. It also contains some + example POSIX-multithreaded STL code. + </p></li></ul></div><p> (A large selection of links to older messages has been removed; many of the messages from 1999 were lost in a disk crash, and the few people with access to the backup tapes have been too swamped @@ -360,11 +360,11 @@ particular <span class="quote">“<span class="quote">info iostream</span>”</s </p></div></div><div class="sect2" title="Third"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.third"></a>Third</h3></div></div></div><p> The third generation GNU C++ library is called libstdc++, or libstdc++-v3. </p><p>The subset commonly known as the Standard Template Library - (chapters 23 through 25, mostly) is adapted from the final release - of the SGI STL (version 3.3), with extensive changes. + (chapters 23 through 25, mostly) is adapted from the final release + of the SGI STL (version 3.3), with extensive changes. </p><p>A more formal description of the V3 goals can be found in the - official <a class="link" href="source_design_notes.html" title="Design Notes">design document</a>. - </p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" title="Pre-ISO headers moved to backwards or removed"><div class="titlepage"><div><div><h4 class="title"><a id="id706015"></a>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers + official <a class="link" href="source_design_notes.html" title="Design Notes">design document</a>. + </p><p>Portability notes and known implementation limitations are as follows.</p><div class="sect3" title="Pre-ISO headers moved to backwards or removed"><div class="titlepage"><div><div><h4 class="title"><a id="id385058"></a>Pre-ISO headers moved to backwards or removed</h4></div></div></div><p> The pre-ISO C++ headers (<code class="code">iostream.h</code>, <code class="code">defalloc.h</code> etc.) are available, unlike previous libstdc++ versions, but inclusion generates a warning that you are using deprecated headers. @@ -385,7 +385,7 @@ AC_DEFUN([AC_HEADER_PRE_STDCXX], [ [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -Wno-deprecated" + CXXFLAGS="$CXXFLAGS -Wno-deprecated" # Omit defalloc.h, as compilation with newer compilers is problematic. AC_TRY_COMPILE([ @@ -436,11 +436,11 @@ like <code class="filename">vector.h</code> can be replaced with <code class="fi directive <code class="code">using namespace std;</code> can be put at the global scope. This should be enough to get this code compiling, assuming the other usage is correct. -</p></div><div class="sect3" title="Extension headers hash_map, hash_set moved to ext or backwards"><div class="titlepage"><div><div><h4 class="title"><a id="id706097"></a>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been - replaced by standardized libraries. - In particular, the unordered_map and unordered_set containers of TR1 - are suitable replacement for the non-standard hash_map and hash_set - containers in the SGI STL. +</p></div><div class="sect3" title="Extension headers hash_map, hash_set moved to ext or backwards"><div class="titlepage"><div><div><h4 class="title"><a id="id385141"></a>Extension headers hash_map, hash_set moved to ext or backwards</h4></div></div></div><p>At this time most of the features of the SGI STL extension have been + replaced by standardized libraries. + In particular, the unordered_map and unordered_set containers of TR1 + are suitable replacement for the non-standard hash_map and hash_set + containers in the SGI STL. </p><p> Header files <code class="filename">hash_map</code> and <code class="filename">hash_set</code> moved to <code class="filename">ext/hash_map</code> and <code class="filename">ext/hash_set</code>, respectively. At the same time, all types in these files are enclosed @@ -448,29 +448,29 @@ in <code class="code">namespace __gnu_cxx</code>. Later versions move deprecate these files, and suggest using TR1's <code class="filename">unordered_map</code> and <code class="filename">unordered_set</code> instead. </p><p>The extensions are no longer in the global or <code class="code">std</code> - namespaces, instead they are declared in the <code class="code">__gnu_cxx</code> - namespace. For maximum portability, consider defining a namespace - alias to use to talk about extensions, e.g.: + namespaces, instead they are declared in the <code class="code">__gnu_cxx</code> + namespace. For maximum portability, consider defining a namespace + alias to use to talk about extensions, e.g.: </p><pre class="programlisting"> #ifdef __GNUC__ #if __GNUC__ < 3 - #include <hash_map.h> - namespace extension { using ::hash_map; }; // inherit globals + #include <hash_map.h> + namespace extension { using ::hash_map; }; // inherit globals #else - #include <backward/hash_map> - #if __GNUC__ == 3 && __GNUC_MINOR__ == 0 - namespace extension = std; // GCC 3.0 - #else - namespace extension = ::__gnu_cxx; // GCC 3.1 and later - #endif + #include <backward/hash_map> + #if __GNUC__ == 3 && __GNUC_MINOR__ == 0 + namespace extension = std; // GCC 3.0 + #else + namespace extension = ::__gnu_cxx; // GCC 3.1 and later + #endif #endif #else // ... there are other compilers, right? - namespace extension = std; + namespace extension = std; #endif - extension::hash_map<int,int> my_map; + extension::hash_map<int,int> my_map; </pre><p>This is a bit cleaner than defining typedefs for all the - instantiations you might need. + instantiations you might need. </p><p>The following autoconf tests check for working HP/SGI hash containers. </p><pre class="programlisting"> # AC_HEADER_EXT_HASH_MAP @@ -480,7 +480,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_MAP], [ [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -Werror" + CXXFLAGS="$CXXFLAGS -Werror" AC_TRY_COMPILE([#include <ext/hash_map>], [using __gnu_cxx::hash_map;], ac_cv_cxx_ext_hash_map=yes, ac_cv_cxx_ext_hash_map=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -498,7 +498,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [ [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -Werror" + CXXFLAGS="$CXXFLAGS -Werror" AC_TRY_COMPILE([#include <ext/hash_set>], [using __gnu_cxx::hash_set;], ac_cv_cxx_ext_hash_set=yes, ac_cv_cxx_ext_hash_set=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -508,7 +508,7 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [ AC_DEFINE(HAVE_EXT_HASH_SET,,[Define if ext/hash_set is present. ]) fi ]) -</pre></div><div class="sect3" title="No ios::nocreate/ios::noreplace."><div class="titlepage"><div><div><h4 class="title"><a id="id706200"></a>No <code class="code">ios::nocreate/ios::noreplace</code>. +</pre></div><div class="sect3" title="No ios::nocreate/ios::noreplace."><div class="titlepage"><div><div><h4 class="title"><a id="id385242"></a>No <code class="code">ios::nocreate/ios::noreplace</code>. </h4></div></div></div><p> The existence of <code class="code">ios::nocreate</code> being used for input-streams has been confirmed, most probably because the author thought it would be more correct to specify nocreate explicitly. So @@ -519,7 +519,7 @@ open the file for reading, check if it has been opened, and then decide whether you want to create/replace or not. To my knowledge, even older implementations support <code class="code">app</code>, <code class="code">ate</code> and <code class="code">trunc</code> (except for <code class="code">app</code> ?). -</p></div><div class="sect3" title="No stream::attach(int fd)"><div class="titlepage"><div><div><h4 class="title"><a id="id703184"></a> +</p></div><div class="sect3" title="No stream::attach(int fd)"><div class="titlepage"><div><div><h4 class="title"><a id="id380988"></a> No <code class="code">stream::attach(int fd)</code> </h4></div></div></div><p> Phil Edwards writes: It was considered and rejected for the ISO @@ -531,7 +531,7 @@ No <code class="code">stream::attach(int fd)</code> <code class="code">std::streambuf</code> (or <code class="code">std::basic_streambuf<..></code>) which opens a file given a descriptor, and then pass an instance of this to the - stream-constructor. + stream-constructor. </p><p> An extension is available that implements this. <code class="filename">ext/stdio_filebuf.h</code> contains a derived class called @@ -540,9 +540,9 @@ No <code class="code">stream::attach(int fd)</code> descriptor, and provides the <code class="code">fd()</code> function. </p><p> For another example of this, refer to - <a class="ulink" href="http://www.josuttis.com/cppcode/fdstream.html" target="_top">fdstream example</a> + <a class="ulink" href="http://www.josuttis.com/cppcode/fdstream.html" target="_top">fdstream example</a> by Nicolai Josuttis. -</p></div><div class="sect3" title="Support for C++98 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id703247"></a> +</p></div><div class="sect3" title="Support for C++98 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id381051"></a> Support for C++98 dialect. </h4></div></div></div><p>Check for complete library coverage of the C++1998/2003 standard. </p><pre class="programlisting"> @@ -610,7 +610,7 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [ AC_DEFINE(STDCXX_98_HEADERS,,[Define if ISO C++ 1998 header files are present. ]) fi ]) -</pre></div><div class="sect3" title="Support for C++TR1 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id703275"></a> +</pre></div><div class="sect3" title="Support for C++TR1 dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id381079"></a> Support for C++TR1 dialect. </h4></div></div></div><p>Check for library coverage of the TR1 standard. </p><pre class="programlisting"> @@ -687,7 +687,7 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [ AC_DEFINE(HAVE_TR1_UNORDERED_SET,,[Define if tr1/unordered_set is present. ]) fi ]) -</pre></div><div class="sect3" title="Support for C++0x dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id703319"></a> +</pre></div><div class="sect3" title="Support for C++0x dialect."><div class="titlepage"><div><div><h4 class="title"><a id="id381123"></a> Support for C++0x dialect. </h4></div></div></div><p>Check for baseline language coverage in the compiler for the C++0xstandard. </p><pre class="programlisting"> @@ -699,7 +699,7 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ AC_LANG_CPLUSPLUS AC_TRY_COMPILE([ template <typename T> - struct check + struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; @@ -721,10 +721,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=c++0x" + CXXFLAGS="$CXXFLAGS -std=c++0x" AC_TRY_COMPILE([ template <typename T> - struct check + struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; @@ -747,10 +747,10 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ [AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++0x" AC_TRY_COMPILE([ template <typename T> - struct check + struct check { static_assert(sizeof(int) <= sizeof(T), "not big enough"); }; @@ -768,8 +768,8 @@ AC_DEFUN([AC_COMPILE_STDCXX_0X], [ AC_LANG_RESTORE ]) - if test "$ac_cv_cxx_compile_cxx0x_native" = yes || - test "$ac_cv_cxx_compile_cxx0x_cxx" = yes || + if test "$ac_cv_cxx_compile_cxx0x_native" = yes || + test "$ac_cv_cxx_compile_cxx0x_cxx" = yes || test "$ac_cv_cxx_compile_cxx0x_gxx" = yes; then AC_DEFINE(HAVE_STDCXX_0X,,[Define if g++ supports C++0x features. ]) fi @@ -784,7 +784,7 @@ AC_DEFUN([AC_HEADER_STDCXX_0X], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++0x" AC_TRY_COMPILE([ #include <cassert> @@ -870,7 +870,7 @@ AC_DEFUN([AC_HEADER_UNORDERED_MAP], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++0x" AC_TRY_COMPILE([#include <unordered_map>], [using std::unordered_map;], ac_cv_cxx_unordered_map=yes, ac_cv_cxx_unordered_map=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -889,7 +889,7 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ AC_LANG_SAVE AC_LANG_CPLUSPLUS ac_save_CXXFLAGS="$CXXFLAGS" - CXXFLAGS="$CXXFLAGS -std=gnu++0x" + CXXFLAGS="$CXXFLAGS -std=gnu++0x" AC_TRY_COMPILE([#include <unordered_set>], [using std::unordered_set;], ac_cv_cxx_unordered_set=yes, ac_cv_cxx_unordered_set=no) CXXFLAGS="$ac_save_CXXFLAGS" @@ -899,32 +899,29 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ AC_DEFINE(HAVE_UNORDERED_SET,,[Define if unordered_set is present. ]) fi ]) -</pre></div><div class="sect3" title="Container::iterator_type is not necessarily Container::value_type*"><div class="titlepage"><div><div><h4 class="title"><a id="id703396"></a> +</pre></div><div class="sect3" title="Container::iterator_type is not necessarily Container::value_type*"><div class="titlepage"><div><div><h4 class="title"><a id="id381200"></a> Container::iterator_type is not necessarily Container::value_type* </h4></div></div></div><p> This is a change in behavior from the previous version. Now, most <span class="type">iterator_type</span> typedefs in container classes are POD objects, not <span class="type">value_type</span> pointers. -</p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="Migrating to GCC 4.1"><a id="id703425"></a><p>[<abbr class="abbrev"> - kegel41 - </abbr>] <span class="title"><i> - Migrating to GCC 4.1 - </i>. </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span><span class="biblioid"> +</p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="backwards.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id381229"></a><p><span class="biblioid"> <a class="ulink" href="http://www.kegel.com/gcc/gcc4.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="Building the Whole Debian Archive with GCC 4.1: A Summary"><a id="id703458"></a><p>[<abbr class="abbrev"> - kegel41 - </abbr>] <span class="title"><i> - Building the Whole Debian Archive with GCC 4.1: A Summary - </i>. </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span><span class="biblioid"> + <em class="citetitle"> + Migrating to GCC 4.1 + </em> + </a> + . </span><span class="author"><span class="firstname">Dan</span> <span class="surname">Kegel</span>. </span></p></div><div class="biblioentry"><a id="id381260"></a><p><span class="biblioid"> <a class="ulink" href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" target="_top"> + <em class="citetitle"> + Building the Whole Debian Archive with GCC 4.1: A Summary + </em> </a> - . </span></p></div><div class="biblioentry" title="Migration guide for GCC-3.2"><a id="id703491"></a><p>[<abbr class="abbrev"> - lbl32 - </abbr>] <span class="title"><i> - Migration guide for GCC-3.2 - </i>. </span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Martin</span> <span class="surname">Michlmayr</span>. </span></p></div><div class="biblioentry"><a id="id381292"></a><p><span class="biblioid"> <a class="ulink" href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" target="_top"> + <em class="citetitle"> + Migration guide for GCC-3.2 + </em> </a> . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="api.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_porting.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_free.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">API Evolution and Deprecation History </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix C. Free Software Needs Free Documentation diff --git a/libstdc++-v3/doc/html/manual/bitmap_allocator.html b/libstdc++-v3/doc/html/manual/bitmap_allocator.html index 32a44a2bb2c..2edd195696d 100644 --- a/libstdc++-v3/doc/html/manual/bitmap_allocator.html +++ b/libstdc++-v3/doc/html/manual/bitmap_allocator.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitmap_allocator</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , allocator " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_allocators.html" title="Chapter 33. Allocators" /><link rel="prev" href="ext_allocators.html" title="Chapter 33. Allocators" /><link rel="next" href="ext_containers.html" title="Chapter 34. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitmap_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><th width="60%" align="center">Chapter 33. Allocators</th><td width="20%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="bitmap_allocator"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.bitmap"></a>bitmap_allocator</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitmap_allocator</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , allocator " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_allocators.html" title="Chapter 20. Allocators" /><link rel="prev" href="ext_allocators.html" title="Chapter 20. Allocators" /><link rel="next" href="ext_containers.html" title="Chapter 21. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitmap_allocator</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><th width="60%" align="center">Chapter 20. Allocators</th><td width="20%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="bitmap_allocator"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.bitmap"></a>bitmap_allocator</h2></div></div></div><p> </p><div class="sect2" title="Design"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.bitmap.design"></a>Design</h3></div></div></div><p> As this name suggests, this allocator uses a bit-map to keep track of the used and unused memory locations for it's book-keeping @@ -103,7 +103,7 @@ else return false.</p></li></ol></div><p> </p><p> Consider a block of size 64 ints. In memory, it would look like this: (assume a 32-bit system where, size_t is a 32-bit entity). - </p><div class="table"><a id="id620814"></a><p class="title"><b>Table 33.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p> + </p><div class="table"><a id="id376664"></a><p class="title"><b>Table 20.1. Bitmap Allocator Memory Map</b></p><div class="table-contents"><table summary="Bitmap Allocator Memory Map" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left">268</td><td align="left">0</td><td align="left">4294967295</td><td align="left">4294967295</td><td align="left">Data -> Space for 64 ints</td></tr></tbody></table></div></div><br class="table-break" /><p> The first Column(268) represents the size of the Block in bytes as seen by the Bitmap Allocator. Internally, a global free list is used to keep track of the free blocks used and given back by the @@ -192,20 +192,20 @@ For map/multimap: k = 12, and c = 4 (int and double), we get: 37.524% _S_refill_pool which does the following: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> Gets more memory from the Global Free List of the Required - size. + size. </p></li><li class="listitem"><p> - Adjusts the size for the next call to itself. + Adjusts the size for the next call to itself. </p></li><li class="listitem"><p> Writes the appropriate headers in the bit-maps. </p></li><li class="listitem"><p> Sets the use count for that super-block just allocated to 0 - (zero). + (zero). </p></li><li class="listitem"><p> All of the above accounts to maintaining the basic invariant for the allocator. If the invariant is maintained, we are sure that all is well. Now, the same process is applied on the newly acquired free blocks, which are dispatched - accordingly. + accordingly. </p></li></ul></div></li></ol></div><p> Thus, you can clearly see that the allocate function is nothing but a combination of the next-fit and first-fit algorithm optimized ONLY for @@ -337,4 +337,4 @@ equivalent.</p></li><li class="listitem"><p>And also this would preserve the cac sizeof(size_t) x 8 which is the number of bits in an integer, which can fit exactly in a CPU register. Hence, the term given is exponential growth of the internal pool. - </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_allocators.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 33. Allocators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 34. Containers</td></tr></table></div></body></html> + </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_allocators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_allocators.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 20. Allocators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 21. Containers</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bitset.html b/libstdc++-v3/doc/html/manual/bitset.html deleted file mode 100644 index 0d9fbeb2088..00000000000 --- a/libstdc++-v3/doc/html/manual/bitset.html +++ /dev/null @@ -1,105 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>bitset</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="associative.html" title="Chapter 17. Associative" /><link rel="prev" href="associative.html" title="Chapter 17. Associative" /><link rel="next" href="containers_and_c.html" title="Chapter 18. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">bitset</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Associative</th><td width="20%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="bitset"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.associative.bitset"></a>bitset</h2></div></div></div><div class="sect2" title="Size Variable"><div class="titlepage"><div><div><h3 class="title"><a id="associative.bitset.size_variable"></a>Size Variable</h3></div></div></div><p> - No, you cannot write code of the form - </p><pre class="programlisting"> - #include <bitset> - - void foo (size_t n) - { - std::bitset<n> bits; - .... - } - </pre><p> - because <code class="code">n</code> must be known at compile time. Your - compiler is correct; it is not a bug. That's the way templates - work. (Yes, it <span class="emphasis"><em>is</em></span> a feature.) - </p><p> - There are a couple of ways to handle this kind of thing. Please - consider all of them before passing judgement. They include, in - no particular order: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>A very large N in <code class="code">bitset<N></code>.</p></li><li class="listitem"><p>A container<bool>.</p></li><li class="listitem"><p>Extremely weird solutions.</p></li></ul></div><p> - <span class="emphasis"><em>A very large N in - <code class="code">bitset<N></code>. </em></span> It has been - pointed out a few times in newsgroups that N bits only takes up - (N/8) bytes on most systems, and division by a factor of eight is - pretty impressive when speaking of memory. Half a megabyte given - over to a bitset (recall that there is zero space overhead for - housekeeping info; it is known at compile time exactly how large - the set is) will hold over four million bits. If you're using - those bits as status flags (e.g., - <span class="quote">“<span class="quote">changed</span>”</span>/<span class="quote">“<span class="quote">unchanged</span>”</span> flags), that's a - <span class="emphasis"><em>lot</em></span> of state. - </p><p> - You can then keep track of the <span class="quote">“<span class="quote">maximum bit used</span>”</span> - during some testing runs on representative data, make note of how - many of those bits really need to be there, and then reduce N to - a smaller number. Leave some extra space, of course. (If you - plan to write code like the incorrect example above, where the - bitset is a local variable, then you may have to talk your - compiler into allowing that much stack space; there may be zero - space overhead, but it's all allocated inside the object.) - </p><p> - <span class="emphasis"><em>A container<bool>. </em></span> The - Committee made provision for the space savings possible with that - (N/8) usage previously mentioned, so that you don't have to do - wasteful things like <code class="code">Container<char></code> or - <code class="code">Container<short int></code>. Specifically, - <code class="code">vector<bool></code> is required to be specialized for - that space savings. - </p><p> - The problem is that <code class="code">vector<bool></code> doesn't - behave like a normal vector anymore. There have been - journal articles which discuss the problems (the ones by Herb - Sutter in the May and July/August 1999 issues of C++ Report cover - it well). Future revisions of the ISO C++ Standard will change - the requirement for <code class="code">vector<bool></code> - specialization. In the meantime, <code class="code">deque<bool></code> - is recommended (although its behavior is sane, you probably will - not get the space savings, but the allocation scheme is different - than that of vector). - </p><p> - <span class="emphasis"><em>Extremely weird solutions. </em></span> If - you have access to the compiler and linker at runtime, you can do - something insane, like figuring out just how many bits you need, - then writing a temporary source code file. That file contains an - instantiation of <code class="code">bitset</code> for the required number of - bits, inside some wrapper functions with unchanging signatures. - Have your program then call the compiler on that file using - Position Independent Code, then open the newly-created object - file and load those wrapper functions. You'll have an - instantiation of <code class="code">bitset<N></code> for the exact - <code class="code">N</code> that you need at the time. Don't forget to delete - the temporary files. (Yes, this <span class="emphasis"><em>can</em></span> be, and - <span class="emphasis"><em>has been</em></span>, done.) - </p><p> - This would be the approach of either a visionary genius or a - raving lunatic, depending on your programming and management - style. Probably the latter. - </p><p> - Which of the above techniques you use, if any, are up to you and - your intended application. Some time/space profiling is - indicated if it really matters (don't just guess). And, if you - manage to do anything along the lines of the third category, the - author would love to hear from you... - </p><p> - Also note that the implementation of bitset used in libstdc++ has - <a class="link" href="bk01pt12ch34s02.html" title="HP/SGI">some extensions</a>. - </p></div><div class="sect2" title="Type String"><div class="titlepage"><div><div><h3 class="title"><a id="associative.bitset.type_string"></a>Type String</h3></div></div></div><p> - </p><p> - Bitmasks do not take char* nor const char* arguments in their - constructors. This is something of an accident, but you can read - about the problem: follow the library's <span class="quote">“<span class="quote">Links</span>”</span> from - the homepage, and from the C++ information <span class="quote">“<span class="quote">defect - reflector</span>”</span> link, select the library issues list. Issue - number 116 describes the problem. - </p><p> - For now you can simply make a temporary string object using the - constructor expression: - </p><pre class="programlisting"> - std::bitset<5> b ( std::string(<span class="quote">“<span class="quote">10110</span>”</span>) ); - </pre><p> - instead of - </p><pre class="programlisting"> - std::bitset<5> b ( <span class="quote">“<span class="quote">10110</span>”</span> ); // invalid - </pre></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="associative.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 17. Associative </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 18. Interacting with C</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01ix01.html b/libstdc++-v3/doc/html/manual/bk01ix01.html deleted file mode 100644 index 185b1c4bd2a..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01ix01.html +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Index</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License" /><link rel="next" href="../bk02.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Index</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="appendix_gfdl.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr></table><hr /></div><div class="index" title="Index"><div class="titlepage"><div><div><h2 class="title"><a id="id649926"></a>Index</h2></div></div></div><div class="index"><div class="indexdiv"><h3>A</h3><dl><dt>Algorithms, <a class="indexterm" href="algorithms.html"> - Algorithms - -</a></dt><dt>Appendix</dt><dd><dl><dt>Contributing, <a class="indexterm" href="appendix_contributing.html"> - Contributing - -</a></dt><dt>Free Documentation, <a class="indexterm" href="appendix_free.html"> - Free Software Needs Free Documentation - -</a></dt><dt>Porting and Maintenance, <a class="indexterm" href="appendix_porting.html"> - Porting and Maintenance - -</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>C</h3><dl><dt>Containers, <a class="indexterm" href="containers.html"> - Containers - -</a></dt></dl></div><div class="indexdiv"><h3>D</h3><dl><dt>Diagnostics, <a class="indexterm" href="diagnostics.html"> - Diagnostics - -</a></dt></dl></div><div class="indexdiv"><h3>E</h3><dl><dt>Extensions, <a class="indexterm" href="extensions.html"> - Extensions - -</a></dt></dl></div><div class="indexdiv"><h3>I</h3><dl><dt>Input and Output, <a class="indexterm" href="io.html"> - Input and Output - -</a></dt><dt>Introduction, <a class="indexterm" href="intro.html"> - Introduction - -</a></dt><dt>Iterators, <a class="indexterm" href="iterators.html"> - Iterators - -</a></dt></dl></div><div class="indexdiv"><h3>L</h3><dl><dt>Localization, <a class="indexterm" href="localization.html"> - Localization - -</a></dt></dl></div><div class="indexdiv"><h3>N</h3><dl><dt>Numerics, <a class="indexterm" href="numerics.html"> - Numerics - -</a></dt></dl></div><div class="indexdiv"><h3>S</h3><dl><dt>Strings, <a class="indexterm" href="strings.html"> - Strings - -</a></dt><dt>Support, <a class="indexterm" href="support.html"> - Support - -</a></dt></dl></div><div class="indexdiv"><h3>T</h3><dl><dt>Test</dt><dd><dl><dt>Exception Safety, <a class="indexterm" href="test.html#test.exception.safety"> - Qualifying Exception Safety Guarantees - -</a></dt></dl></dd></dl></div><div class="indexdiv"><h3>U</h3><dl><dt>Utilities, <a class="indexterm" href="utilities.html"> - Utilities - -</a></dt></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="appendix_gfdl.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="../bk02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix E. GNU Free Documentation License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt02.html b/libstdc++-v3/doc/html/manual/bk01pt02.html new file mode 100644 index 00000000000..b9aa00be293 --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt02.html @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part II. Standard Contents</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="debug.html" title="Debugging Support" /><link rel="next" href="support.html" title="Chapter 4. Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. + Standard Contents +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part II. Standard Contents"><div class="titlepage"><div><div><h1 class="title"><a id="manual.std"></a>Part II. + Standard Contents +</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="support.html">4. + Support + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="sect2"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect2"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="sect2"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="sect1"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="sect1"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="sect2"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect2"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="diagnostics.html">5. + Diagnostics + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="sect2"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="utilities.html">6. + Utilities + +</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7. + Strings + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="sect2"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="localization.html">8. + Localization + +</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9. + Containers + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="sect2"><a href="containers.html#containers.sequences.list">list</a></span></dt><dt><span class="sect2"><a href="containers.html#containers.sequences.vector">vector</a></span></dt></dl></dd><dt><span class="sect1"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="sect2"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect2"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt></dl></dd><dt><span class="sect1"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="iterators.html">10. + Iterators + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="sect2"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect2"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="algorithms.html">11. + Algorithms + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="sect2"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="numerics.html">12. + Numerics + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="sect2"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="sect1"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="sect1"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect2"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="io.html">13. + Input and Output + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="sect1"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="sect2"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect2"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="sect1"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="sect1"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect2"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="sect1"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect2"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="atomics.html">14. + Atomics + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></dd><dt><span class="chapter"><a href="concurrency.html">15. + Concurrency + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Debugging Support </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. + Support + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html b/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html deleted file mode 100644 index 45fa1f6e2b4..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt02ch04s02.html +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Numeric Properties</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fundamental_types.html" title="Chapter 4. Types" /><link rel="prev" href="fundamental_types.html" title="Chapter 4. Types" /><link rel="next" href="bk01pt02ch04s03.html" title="NULL" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Numeric Properties</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fundamental_types.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Types</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Numeric Properties"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.numeric_limits"></a>Numeric Properties</h2></div></div></div><p> - The header <code class="filename">limits</code> defines - traits classes to give access to various implementation - defined-aspects of the fundamental types. The traits classes -- - fourteen in total -- are all specializations of the template class - <code class="classname">numeric_limits</code>, documented <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html" target="_top">here</a> - and defined as follows: - </p><pre class="programlisting"> - template<typename T> - struct class - { - static const bool is_specialized; - static T max() throw(); - static T min() throw(); - - static const int digits; - static const int digits10; - static const bool is_signed; - static const bool is_integer; - static const bool is_exact; - static const int radix; - static T epsilon() throw(); - static T round_error() throw(); - - static const int min_exponent; - static const int min_exponent10; - static const int max_exponent; - static const int max_exponent10; - - static const bool has_infinity; - static const bool has_quiet_NaN; - static const bool has_signaling_NaN; - static const float_denorm_style has_denorm; - static const bool has_denorm_loss; - static T infinity() throw(); - static T quiet_NaN() throw(); - static T denorm_min() throw(); - - static const bool is_iec559; - static const bool is_bounded; - static const bool is_modulo; - - static const bool traps; - static const bool tinyness_before; - static const float_round_style round_style; - }; - </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="fundamental_types.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fundamental_types.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. Types </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> NULL</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html b/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html deleted file mode 100644 index c9225c8b9ca..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt02ch04s03.html +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>NULL</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fundamental_types.html" title="Chapter 4. Types" /><link rel="prev" href="bk01pt02ch04s02.html" title="Numeric Properties" /><link rel="next" href="dynamic_memory.html" title="Chapter 5. Dynamic Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">NULL</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s02.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Types</th><td width="20%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="NULL"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.null"></a>NULL</h2></div></div></div><p> - The only change that might affect people is the type of - <code class="constant">NULL</code>: while it is required to be a macro, - the definition of that macro is <span class="emphasis"><em>not</em></span> allowed - to be <code class="constant">(void*)0</code>, which is often used in C. - </p><p> - For <span class="command"><strong>g++</strong></span>, <code class="constant">NULL</code> is - </p><pre class="programlisting">#define</pre><p>'d to be - <code class="constant">__null</code>, a magic keyword extension of - <span class="command"><strong>g++</strong></span>. - </p><p> - The biggest problem of #defining <code class="constant">NULL</code> to be - something like <span class="quote">“<span class="quote">0L</span>”</span> is that the compiler will view - that as a long integer before it views it as a pointer, so - overloading won't do what you expect. (This is why - <span class="command"><strong>g++</strong></span> has a magic extension, so that - <code class="constant">NULL</code> is always a pointer.) - </p><p>In his book <a class="ulink" href="http://www.awprofessional.com/titles/0-201-92488-9/" target="_top"><span class="emphasis"><em>Effective - C++</em></span></a>, Scott Meyers points out that the best way - to solve this problem is to not overload on pointer-vs-integer - types to begin with. He also offers a way to make your own magic - <code class="constant">NULL</code> that will match pointers before it - matches integers. - </p><p>See - <a class="ulink" href="http://www.awprofessional.com/titles/0-201-31015-5/" target="_top">the - Effective C++ CD example</a> - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fundamental_types.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Numeric Properties </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. Dynamic Memory</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch08.html b/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html index b66b555a2da..3487b705f00 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch08.html +++ b/libstdc++-v3/doc/html/manual/bk01pt02ch05s02.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Concept Checking</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="utilities.html" title="Part IV. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">Part III. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Concept Checking</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Chapter 5. Diagnostics" /><link rel="prev" href="diagnostics.html" title="Chapter 5. Diagnostics" /><link rel="next" href="utilities.html" title="Chapter 6. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Concept Checking</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Diagnostics -</th><td width="20%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 8. Concept Checking"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.concept_checking"></a>Chapter 8. Concept Checking</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Concept Checking"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.diagnostics.concept_checking"></a>Concept Checking</h2></div></div></div><p> In 1999, SGI added <span class="quote">“<span class="quote">concept checkers</span>”</span> to their implementation of the STL: code which checked the template parameters of instantiated pieces of the STL, in order to insure @@ -39,7 +39,10 @@ support for template parameter constraints based on concepts in the core language. This will obviate the need for the library-simulated concept checking described above. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IV. + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. + Diagnostics + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Utilities </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html b/libstdc++-v3/doc/html/manual/bk01pt02pr01.html deleted file mode 100644 index d88bbccff21..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt02pr01.html +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="support.html" title="Part II. Support" /><link rel="next" href="fundamental_types.html" title="Chapter 4. Types" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Part II. - Support - -</th><td width="20%" align="right"> <a accesskey="n" href="fundamental_types.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h2 class="title"><a id="id616146"></a></h2></div></div></div><p> - This part deals with the functions called and objects created - automatically during the course of a program's existence. - </p><p> - While we can't reproduce the contents of the Standard here (you - need to get your own copy from your nation's member body; see our - homepage for help), we can mention a couple of changes in what - kind of support a C++ program gets from the Standard Library. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="fundamental_types.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part II. - Support - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 4. Types</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html deleted file mode 100644 index 54df29a6553..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch07s02.html +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Adding Data to Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="prev" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="next" href="bk01pt03ch08.html" title="Chapter 8. Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Adding Data to Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Adding Data to Exceptions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.data"></a>Adding Data to Exceptions</h2></div></div></div><p> - The standard exception classes carry with them a single string as - data (usually describing what went wrong or where the 'throw' took - place). It's good to remember that you can add your own data to - these exceptions when extending the hierarchy: - </p><pre class="programlisting"> - struct My_Exception : public std::runtime_error - { - public: - My_Exception (const string& whatarg) - : std::runtime_error(whatarg), e(errno), id(GetDataBaseID()) { } - int errno_at_time_of_throw() const { return e; } - DBID id_of_thing_that_threw() const { return id; } - protected: - int e; - DBID id; // some user-defined type - }; - </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="exceptions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. Concept Checking</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html deleted file mode 100644 index b6bbc40ea0b..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt03ch07s03.html +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Cancellation</title><meta name="generator" content="DocBook XSL Stylesheets V1.74.3" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="exceptions.html" title="Chapter 7. Exceptions" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="bk01pt03ch08.html" title="Chapter 8. Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Cancellation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">Chapter 7. Exceptions</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr></table><hr /></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.cancellation"></a>Cancellation</h2></div></div></div><p> - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="exceptions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. Concept Checking</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html index 2605ad3b453..f2f1f483c00 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s02.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="debug_mode.html" title="Chapter 30. Debug Mode" /><link rel="prev" href="debug_mode.html" title="Chapter 30. Debug Mode" /><link rel="next" href="bk01pt12ch30s03.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch30s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Semantics"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.semantics"></a>Semantics</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="next" href="bk01pt03ch17s03.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch17s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Semantics"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.semantics"></a>Semantics</h2></div></div></div><p> </p><p>A program that uses the C++ standard library correctly will maintain the same semantics under debug mode as it had with the normal (release) library. All functional and exception-handling @@ -10,7 +10,7 @@ instance, erasing an element in a <code class="code">std::list</code> is a constant-time operation in normal library, but in debug mode it is linear in the number of iterators that reference that particular - list. So while your (correct) program won't change its results, it + list. So while your (correct) program won't change its results, it is likely to execute more slowly.</p><p>libstdc++ includes many extensions to the C++ standard library. In some cases the extensions are obvious, such as the hashed associative containers, whereas other extensions give predictable @@ -52,4 +52,4 @@ with the debug-mode checks included, but this is unsupported and not guaranteed to work. For full debug-mode support you can use the <code class="code">__gnu_debug::basic_string</code> debugging container directly, which always works correctly. -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 30. Debug Mode </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></html> +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch17s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 17. Debug Mode </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html new file mode 100644 index 00000000000..4a5cd00f07c --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s03.html @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="bk01pt03ch17s02.html" title="Semantics" /><link rel="next" href="bk01pt03ch17s04.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Using"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.using"></a>Using</h2></div></div></div><p> + </p><div class="sect2" title="Using the Debug Mode"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.using.mode"></a>Using the Debug Mode</h3></div></div></div><p>To use the libstdc++ debug mode, compile your application with the + compiler flag <code class="code">-D_GLIBCXX_DEBUG</code>. Note that this flag + changes the sizes and behavior of standard class templates such + as <code class="code">std::vector</code>, and therefore you can only link code + compiled with debug mode and code compiled without debug mode if no + instantiation of a container is passed between the two translation + units.</p><p>By default, error messages are formatted to fit on lines of about + 78 characters. The environment variable + <code class="code">GLIBCXX_DEBUG_MESSAGE_LENGTH</code> can be used to request a + different length.</p></div><div class="sect2" title="Using a Specific Debug Container"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.using.specific"></a>Using a Specific Debug Container</h3></div></div></div><p>When it is not feasible to recompile your entire application, or + only specific containers need checking, debugging containers are + available as GNU extensions. These debugging containers are + functionally equivalent to the standard drop-in containers used in + debug mode, but they are available in a separate namespace as GNU + extensions and may be used in programs compiled with either release + mode or with debug mode. The + following table provides the names and headers of the debugging + containers: +</p><div class="table"><a id="id419645"></a><p class="title"><b>Table 17.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename"><debug/bitset></code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename"><debug/deque></code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename"><debug/list></code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename"><debug/map></code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename"><debug/set></code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename"><debug/string></code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename"><debug/vector></code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++0x mode, these additional +containers have additional debug capability. +</p><div class="table"><a id="id391116"></a><p class="title"><b>Table 17.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename"><debug/unordered_map></code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename"><debug/unordered_set></code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch17s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch17s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html index 862789635a7..758af487ad7 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch17s04.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="debug_mode.html" title="Chapter 30. Debug Mode" /><link rel="prev" href="bk01pt12ch30s03.html" title="Using" /><link rel="next" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch30s03.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.design"></a>Design</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="debug_mode.html" title="Chapter 17. Debug Mode" /><link rel="prev" href="bk01pt03ch17s03.html" title="Using" /><link rel="next" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch17s03.html">Prev</a> </td><th width="60%" align="center">Chapter 17. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.design"></a>Design</h2></div></div></div><p> </p><div class="sect2" title="Goals"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.design.goals"></a>Goals</h3></div></div></div><p> </p><p> The libstdc++ debug mode replaces unsafe (but efficient) standard containers and iterators with semantically equivalent safe standard @@ -38,7 +38,7 @@ own usability and implementation characteristics. In general, the higher-numbered conformance levels are more usable (i.e., require less recompilation) but are more complicated to implement than - the lower-numbered conformance levels. + the lower-numbered conformance levels. </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><span class="emphasis"><em>Full recompilation</em></span>: The user must recompile his or her entire application and all C++ libraries it depends on, including the C++ standard library that ships with the @@ -101,7 +101,7 @@ container that will perform the actual work. This design decision ensures that we cannot regress release-mode performance (because the release-mode containers are left untouched) and partially - enables <a class="link" href="bk01pt12ch30s04.html#methods.coexistence.link" title="Link- and run-time coexistence of release- and debug-mode components">mixing debug and + enables <a class="link" href="bk01pt03ch17s04.html#methods.coexistence.link" title="Link- and run-time coexistence of release- and debug-mode components">mixing debug and release code</a> at link time, although that will not be discussed at this time.</p><p>Two types of wrappers are used in the implementation of the debug mode: container wrappers and iterator wrappers. The two types of @@ -133,8 +133,8 @@ version) as appropriate. However, all safe containers inherit from the class template <code class="code">__gnu_debug::_Safe_sequence</code>, instantiated with the type of the safe container itself (an instance - of the curiously recurring template pattern).</p><p>The iterators of a container wrapper will be - <a class="link" href="bk01pt12ch30s04.html#debug_mode.design.methods.safe_iter" title="Safe Iterators">safe + of the curiously recurring template pattern).</p><p>The iterators of a container wrapper will be + <a class="link" href="bk01pt03ch17s04.html#debug_mode.design.methods.safe_iter" title="Safe Iterators">safe iterators</a> that reference sequences of this type and wrap the iterators provided by the release-mode base class. The debugging container will use only the safe iterators within its own interface @@ -221,7 +221,7 @@ namespace std }; } // namespace std </pre><p>In debug mode we include the release-mode container (which is now -defined in in the namespace <code class="code">__norm</code>) and also the +defined in the namespace <code class="code">__norm</code>) and also the debug-mode container. The debug-mode container is defined within the namespace <code class="code">__debug</code>, which is associated with namespace <code class="code">std</code> via the C++0x namespace association language feature. This @@ -236,7 +236,7 @@ namespace std template<typename _Tp, typename _Alloc = allocator<_Tp> > class list { - // ... + // ... }; } // namespace __gnu_norm @@ -245,9 +245,9 @@ namespace std template<typename _Tp, typename _Alloc = allocator<_Tp> > class list : public __norm::list<_Tp, _Alloc>, - public __gnu_debug::_Safe_sequence<list<_Tp, _Alloc> > + public __gnu_debug::_Safe_sequence<list<_Tp, _Alloc> > { - // ... + // ... }; } // namespace __norm @@ -256,7 +256,7 @@ namespace std } </pre></div><div class="sect4" title="Link- and run-time coexistence of release- and debug-mode components"><div class="titlepage"><div><div><h5 class="title"><a id="methods.coexistence.link"></a>Link- and run-time coexistence of release- and debug-mode components</h5></div></div></div><p>Because each component has a distinct and separate release and -debug implementation, there are are no issues with link-time +debug implementation, there is no issue with link-time coexistence: the separate namespaces result in different mangled names, and thus unique linkage.</p><p>However, components that are defined and used within the C++ standard library itself face additional constraints. For instance, @@ -273,12 +273,12 @@ runtime errors. A simplified example of this problem is as follows. #include <string> std::string test02(); - + std::string test01() { return test02(); } - + int main() { test01(); @@ -286,7 +286,7 @@ int main() } </pre><p> ... and linked to this translation unit, compiled in release mode:</p><pre class="programlisting"> #include <string> - + std::string test02() { @@ -349,7 +349,7 @@ test02() enticing option, because it would eliminate the need for the <code class="code">link_name</code> extension by aliasing the templates. However, there is no true template aliasing mechanism - is C++, because both <code class="code">using</code> directives and using + in C++, because both <code class="code">using</code> directives and using declarations disallow specialization. This method fails the <span class="emphasis"><em>correctness</em></span> criteria.</p></li><li class="listitem"><p><span class="emphasis"><em> Use implementation-specific properties of anonymous namespaces. </em></span> @@ -375,7 +375,7 @@ test02() include ordering. Two, ODR issues remained with container member functions taking no arguments in mixed-mode settings resulting in equivalent link names, <code class="code"> vector::push_back() </code> being - one example. + one example. See <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html" target="_top">link name</a> </p></li></ul></div><p>Other options may exist for implementing the debug mode, many of which have probably been considered and others that may still be @@ -409,4 +409,4 @@ test02() a full debug-mode implementation (including debugging for CodeWarrior extensions) and is easy to use, although it meets only the "Full recompilation" (1) recompilation - guarantee.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 31. Parallel Mode</td></tr></table></div></body></html> + guarantee.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch17s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="parallel_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 18. Parallel Mode</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html index 64acc0aa5c3..29f7dad3cca 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s02.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="prev" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="next" href="bk01pt12ch31s03.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 31. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch31s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Semantics"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.semantics"></a>Semantics</h2></div></div></div><p> The parallel mode STL algorithms are currently not exception-safe, +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Semantics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="next" href="bk01pt03ch18s03.html" title="Using" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Semantics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch18s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Semantics"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.semantics"></a>Semantics</h2></div></div></div><p> The parallel mode STL algorithms are currently not exception-safe, i.e. user-defined functors must not throw exceptions. Also, the order of execution is not guaranteed for some functions, of course. Therefore, user-defined functors should not have any concurrent side effects. @@ -8,4 +8,4 @@ Therefore, user-defined functors should not have any concurrent side effects. OpenMP parallel regions in concurrent threads, it is not possible to call parallel STL algorithm in concurrent threads, either. -It might work with other compilers, though.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 31. Parallel Mode </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></html> +It might work with other compilers, though.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="parallel_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch18s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 18. Parallel Mode </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Using</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html index 45d01b93b99..39c176c46ea 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s03.html @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="prev" href="bk01pt12ch31s02.html" title="Semantics" /><link rel="next" href="bk01pt12ch31s04.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s02.html">Prev</a> </td><th width="60%" align="center">Chapter 31. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch31s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Using"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.using"></a>Using</h2></div></div></div><div class="sect2" title="Prerequisite Compiler Flags"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.using.prereq_flags"></a>Prerequisite Compiler Flags</h3></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="bk01pt03ch18s02.html" title="Semantics" /><link rel="next" href="bk01pt03ch18s04.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch18s02.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch18s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Using"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.using"></a>Using</h2></div></div></div><div class="sect2" title="Prerequisite Compiler Flags"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.using.prereq_flags"></a>Prerequisite Compiler Flags</h3></div></div></div><p> Any use of parallel functionality requires additional compiler and runtime support, in particular support for OpenMP. Adding this support is not difficult: just compile your application with the compiler flag <code class="literal">-fopenmp</code>. This will link in <code class="code">libgomp</code>, the GNU OpenMP <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libgomp" target="_top">implementation</a>, - whose presence is mandatory. + whose presence is mandatory. </p><p> In addition, hardware that supports atomic operations and a compiler capable of producing atomic operations is mandatory: GCC defaults to no @@ -63,4 +63,4 @@ Then compile this code with the prerequisite compiler flags flags for atomic operations.) </p><p> The following table provides the names and headers of all the parallel algorithms that can be used in a similar manner: -</p><div class="table"><a id="id713517"></a><p class="title"><b>Table 31.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html> +</p><div class="table"><a id="id416292"></a><p class="title"><b>Table 18.1. Parallel Algorithms</b></p><div class="table-contents"><table summary="Parallel Algorithms" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Algorithm</th><th align="left">Header</th><th align="left">Parallel algorithm</th><th align="left">Parallel header</th></tr></thead><tbody><tr><td align="left"><code class="function">std::accumulate</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::accumulate</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_difference</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_difference</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::inner_product</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::inner_product</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::partial_sum</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="function">__gnu_parallel::partial_sum</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr><tr><td align="left"><code class="function">std::adjacent_find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::adjacent_find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::count_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::count_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::equal</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::equal</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::find_first_of</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::find_first_of</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::for_each</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::for_each</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::generate_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::generate_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::lexicographical_compare</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::lexicographical_compare</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::mismatch</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::mismatch</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::search_n</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::search_n</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::transform</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::transform</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::replace_if</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::replace_if</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::max_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::max_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::merge</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::merge</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::min_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::min_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::nth_element</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::nth_element</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partial_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partial_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::partition</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::partition</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::random_shuffle</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::random_shuffle</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_union</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_union</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_intersection</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_intersection</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_symmetric_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_symmetric_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::set_difference</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::set_difference</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::stable_sort</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::stable_sort</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr><tr><td align="left"><code class="function">std::unique_copy</code></td><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="function">__gnu_parallel::unique_copy</code></td><td align="left"><code class="filename">parallel/algorithm</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch18s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch18s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html index 0e5f92549a5..2b2fd27996e 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s04.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="prev" href="bk01pt12ch31s03.html" title="Using" /><link rel="next" href="bk01pt12ch31s05.html" title="Testing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s03.html">Prev</a> </td><th width="60%" align="center">Chapter 31. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch31s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.design"></a>Design</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="bk01pt03ch18s03.html" title="Using" /><link rel="next" href="bk01pt03ch18s05.html" title="Testing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch18s03.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch18s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.design"></a>Design</h2></div></div></div><p> </p><div class="sect2" title="Interface Basics"><div class="titlepage"><div><div><h3 class="title"><a id="parallel_mode.design.intro"></a>Interface Basics</h3></div></div></div><p> All parallel algorithms are intended to have signatures that are equivalent to the ISO C++ algorithms replaced. For instance, the @@ -105,7 +105,7 @@ For the following algorithms in general, we have <code class="code">__gnu_parallel::parallel_tag</code> and <code class="code">__gnu_parallel::default_parallel_tag</code>, in addition to <code class="code">__gnu_parallel::sequential_tag</code>. -<code class="code">__gnu_parallel::default_parallel_tag</code> chooses the default +<code class="code">__gnu_parallel::default_parallel_tag</code> chooses the default algorithm at compiletime, as does omitting the tag. <code class="code">__gnu_parallel::parallel_tag</code> postpones the decision to runtime (see next section). @@ -120,7 +120,7 @@ Exact and sampling are the two available splitting strategies. For the <code class="code">sort</code> and <code class="code">stable_sort</code> algorithms, there are several additional choices, namely <code class="code">__gnu_parallel::multiway_mergesort_tag</code>, -<code class="code">__gnu_parallel::multiway_mergesort_exact_tag</code>, +<code class="code">__gnu_parallel::multiway_mergesort_exact_tag</code>, <code class="code">__gnu_parallel::multiway_mergesort_sampling_tag</code>, <code class="code">__gnu_parallel::quicksort_tag</code>, and <code class="code">__gnu_parallel::balanced_quicksort_tag</code>. @@ -198,7 +198,7 @@ int main() explicitly sequential: <code class="code">__gnu_serial</code>. </p><p> Two namespaces contain the parallel mode: -<code class="code">std::__parallel</code> and <code class="code">__gnu_parallel</code>. +<code class="code">std::__parallel</code> and <code class="code">__gnu_parallel</code>. </p><p> Parallel implementations of standard components, including template helpers to select parallelism, are defined in <code class="code">namespace std::__parallel</code>. For instance, <code class="function">std::transform</code> from <code class="filename">algorithm</code> has a parallel counterpart in @@ -210,4 +210,4 @@ __gnu_parallel</code>. </p><p> More information, and an organized index of types and functions related to the parallel mode on a per-namespace basis, can be found in the generated source documentation. -</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Testing</td></tr></table></div></body></html> +</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch18s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch18s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Using </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Testing</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html b/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html index 6a10f32eea9..7a92bbaba9c 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch31s05.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch18s05.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 31. Parallel Mode" /><link rel="prev" href="bk01pt12ch31s04.html" title="Design" /><link rel="next" href="profile_mode.html" title="Chapter 32. Profile Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s04.html">Prev</a> </td><th width="60%" align="center">Chapter 31. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Testing"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.test"></a>Testing</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Testing</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="parallel_mode.html" title="Chapter 18. Parallel Mode" /><link rel="prev" href="bk01pt03ch18s04.html" title="Design" /><link rel="next" href="profile_mode.html" title="Chapter 19. Profile Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Testing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch18s04.html">Prev</a> </td><th width="60%" align="center">Chapter 18. Parallel Mode</th><td width="20%" align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Testing"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.test"></a>Testing</h2></div></div></div><p> Both the normal conformance and regression tests and the supplemental performance tests work. - </p><p> + </p><p> To run the conformance and regression tests with the parallel mode active, </p><pre class="screen"> @@ -11,7 +11,7 @@ </pre><p> The log and summary files for conformance testing are in the <code class="filename">testsuite/parallel</code> directory. - </p><p> + </p><p> To run the performance tests with the parallel mode active, </p><pre class="screen"> <strong class="userinput"><code>make check-performance-parallel</code></strong> @@ -23,4 +23,4 @@ additional software dependencies than the usual bare-boned text file, and can be generated by using the <code class="code">make doc-performance</code> rule in the testsuite's Makefile. -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 32. Profile Mode</td></tr></table></div></body></html> +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch18s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="parallel_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="profile_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 19. Profile Mode</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html index 3d3439b1fa3..f025729c10c 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s02.html @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="next" href="bk01pt12ch32s03.html" title="Extensions for Custom Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p> -</p><div class="table"><a id="id594983"></a><p class="title"><b>Table 32.1. Code Location</b></p><div class="table-contents"><table summary="Code Location" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Design</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="next" href="bk01pt03ch19s03.html" title="Extensions for Custom Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Design</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch19s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.design"></a>Design</h2></div></div></div><p> +</p><div class="table"><a id="id442414"></a><p class="title"><b>Table 19.1. Profile Code Location</b></p><div class="table-contents"><table summary="Profile Code Location" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Code Location</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><code class="code">libstdc++-v3/include/std/*</code></td><td align="left">Preprocessor code to redirect to profile extension headers.</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/*</code></td><td align="left">Profile extension public headers (map, vector, ...).</td></tr><tr><td align="left"><code class="code">libstdc++-v3/include/profile/impl/*</code></td><td align="left">Profile extension internals. Implementation files are only included from <code class="code">impl/profiler.h</code>, which is the only file included from the public headers.</td></tr></tbody></table></div></div><br class="table-break" /><p> </p><div class="sect2" title="Wrapper Model"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.wrapper"></a>Wrapper Model</h3></div></div></div><p> @@ -10,12 +10,12 @@ we use the same wrapper model as the debug mode. We subclass entities from the release version. Wherever <code class="code">_GLIBCXX_PROFILE</code> is defined, the release namespace is - <code class="code">std::__norm</code>, whereas the profile namespace is + <code class="code">std::__norm</code>, whereas the profile namespace is <code class="code">std::__profile</code>. Using plain <code class="code">std</code> translates into <code class="code">std::__profile</code>. </p><p> Whenever possible, we try to wrap at the public interface level, e.g., - in <code class="code">unordered_set</code> rather than in <code class="code">hashtable</code>, + in <code class="code">unordered_set</code> rather than in <code class="code">hashtable</code>, in order not to depend on implementation. </p><p> Mixing object files built with and without the profile mode must @@ -29,12 +29,12 @@ Instead of instrumenting every public entry and exit point, we chose to add instrumentation on demand, as needed by individual diagnostics. - The main reason is that some diagnostics require us to extract bits of + The main reason is that some diagnostics require us to extract bits of internal state that are particular only to that diagnostic. We plan to formalize this later, after we learn more about the requirements of several diagnostics. </p><p> - All the instrumentation points can be switched on and off using + All the instrumentation points can be switched on and off using <code class="code">-D[_NO]_GLIBCXX_PROFILE_<diagnostic></code> options. With all the instrumentation calls off, there should be negligible overhead over the release version. This property is needed to support @@ -42,7 +42,7 @@ we anticipate turning most of the instrumentation off in order to prevent profiling overhead from polluting time measurements, and thus diagnostics. </p><p> - All the instrumentation on/off compile time switches live in + All the instrumentation on/off compile time switches live in <code class="code">include/profile/profiler.h</code>. </p></div><div class="sect2" title="Run Time Behavior"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.rtlib"></a>Run Time Behavior</h3></div></div></div><p> For practical reasons, the instrumentation library processes the trace @@ -60,7 +60,7 @@ is destroyed, we accumulate its effect to the corresponding entry for the call stack of its constructor location. </p><p> - For details, see + For details, see <a class="ulink" href="http://dx.doi.org/10.1109/CGO.2009.36" target="_top">paper presented at CGO 2009</a>. </p></div><div class="sect2" title="Analysis and Diagnostics"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.analysis"></a>Analysis and Diagnostics</h3></div></div></div><p> @@ -71,7 +71,7 @@ The input to the analysis is a table indexed by profile type and call stack. The data type for each entry depends on the profile type. </p></div><div class="sect2" title="Cost Model"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.cost-model"></a>Cost Model</h3></div></div></div><p> - While it is likely that cost models become complex as we get into + While it is likely that cost models become complex as we get into more sophisticated analysis, we will try to follow a simple set of rules at the beginning. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Relative benefit estimation:</em></span> @@ -95,7 +95,7 @@ and report the one that performs best for each call context. </p></li><li class="listitem"><p><span class="emphasis"><em>Show stoppers:</em></span> We may decide that the presence of an operation nullifies the advice. - For instance, when considering switching from <code class="code">set</code> to + For instance, when considering switching from <code class="code">set</code> to <code class="code">unordered_set</code>, if we detect use of operator <code class="code">++</code>, we will simply not issue the advice, since this could signal that the use care require a sorted container.</p></li></ul></div></div><div class="sect2" title="Reports"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.design.reports"></a>Reports</h3></div></div></div><p> @@ -119,4 +119,4 @@ it helps the user focus on the key problems and ignore the uninteresting ones. We created a <code class="code">profile</code> directory in the test suite. Each diagnostic must come with at least two tests, one for false positives and one for false negatives. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 32. Profile Mode </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Extensions for Custom Containers</td></tr></table></div></body></html> + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="profile_mode.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch19s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 19. Profile Mode </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Extensions for Custom Containers</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html index f943e20f0e7..89c14c0a821 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s03.html @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Extensions for Custom Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="bk01pt12ch32s02.html" title="Design" /><link rel="next" href="bk01pt12ch32s04.html" title="Empirical Cost Model" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Extensions for Custom Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32s02.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Extensions for Custom Containers"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.api"></a>Extensions for Custom Containers</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Extensions for Custom Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="bk01pt03ch19s02.html" title="Design" /><link rel="next" href="bk01pt03ch19s04.html" title="Empirical Cost Model" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Extensions for Custom Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch19s02.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch19s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Extensions for Custom Containers"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.api"></a>Extensions for Custom Containers</h2></div></div></div><p> Many large projects use their own data structures instead of the ones in the standard library. If these data structures are similar in functionality to the standard library, they can be instrumented with the same hooks that are used to instrument the standard library. The instrumentation API is exposed in file <code class="code">profiler.h</code> (look for "Instrumentation hooks"). - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Empirical Cost Model</td></tr></table></div></body></html> + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch19s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch19s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Empirical Cost Model</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s04.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html index 70a142871d2..64a3a19822a 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s04.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s04.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Empirical Cost Model</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="bk01pt12ch32s03.html" title="Extensions for Custom Containers" /><link rel="next" href="bk01pt12ch32s05.html" title="Implementation Issues" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Empirical Cost Model</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32s03.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Empirical Cost Model"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.cost_model"></a>Empirical Cost Model</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Empirical Cost Model</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="bk01pt03ch19s03.html" title="Extensions for Custom Containers" /><link rel="next" href="bk01pt03ch19s05.html" title="Implementation Issues" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Empirical Cost Model</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch19s03.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch19s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Empirical Cost Model"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.cost_model"></a>Empirical Cost Model</h2></div></div></div><p> Currently, the cost model uses formulas with predefined relative weights for alternative containers or container implementations. For instance, iterating through a vector is X times faster than iterating through a list. @@ -15,4 +15,4 @@ filled in either by hand or by an automated training mechanism. The analysis module will then use this database instead of the built in. generic parameters. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Extensions for Custom Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation Issues</td></tr></table></div></body></html> + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch19s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch19s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Extensions for Custom Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation Issues</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s05.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html index d64fd47518f..025dbb12679 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s05.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s05.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation Issues</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="bk01pt12ch32s04.html" title="Empirical Cost Model" /><link rel="next" href="bk01pt12ch32s06.html" title="Developer Information" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32s04.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s06.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Implementation Issues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.implementation"></a>Implementation Issues</h2></div></div></div><div class="sect2" title="Stack Traces"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stack"></a>Stack Traces</h3></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation Issues</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="bk01pt03ch19s04.html" title="Empirical Cost Model" /><link rel="next" href="bk01pt03ch19s06.html" title="Developer Information" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation Issues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch19s04.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch19s06.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Implementation Issues"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.implementation"></a>Implementation Issues</h2></div></div></div><div class="sect2" title="Stack Traces"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stack"></a>Stack Traces</h3></div></div></div><p> Accurate stack traces are needed during profiling since we group events by call context and dynamic instance. Without accurate traces, diagnostics may be hard to interpret. For instance, when giving advice to the user @@ -24,15 +24,15 @@ During profiling, we keep a single information table per diagnostic. There is a single lock per information table. </p></div><div class="sect2" title="Using the Standard Library in the Instrumentation Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.stdlib-in-proflib"></a>Using the Standard Library in the Instrumentation Implementation</h3></div></div></div><p> - As much as we would like to avoid uses of stdlibc++ within our - instrumentation library, containers such as unordered_map are very - appealing. We plan to use them as long as they are named properly + As much as we would like to avoid uses of libstdc++ within our + instrumentation library, containers such as unordered_map are very + appealing. We plan to use them as long as they are named properly to avoid ambiguity. </p></div><div class="sect2" title="Malloc Hooks"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.implementation.malloc-hooks"></a>Malloc Hooks</h3></div></div></div><p> User applications/libraries can provide malloc hooks. When the implementation of the malloc hooks uses stdlibc++, there can be an infinite cycle between the profile mode instrumentation and the - the malloc hook code. + malloc hook code. </p><p> We protect against reentrance to the profile mode instrumentation code, which should avoid this problem in most cases. @@ -46,6 +46,6 @@ The profiling library state is initialized at the first call to a profiling method. This allows us to record the construction of all global objects. However, we cannot do the same at destruction time. The trace is written - by a function registered by <code class="code">atexit</code>, thus invoked by + by a function registered by <code class="code">atexit</code>, thus invoked by <code class="code">exit</code>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Empirical Cost Model </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Developer Information</td></tr></table></div></body></html> + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch19s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch19s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Empirical Cost Model </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Developer Information</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s06.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html index ec752d398de..a4eb97333e8 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s06.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s06.html @@ -1,21 +1,21 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Developer Information</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="bk01pt12ch32s05.html" title="Implementation Issues" /><link rel="next" href="bk01pt12ch32s07.html" title="Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Developer Information</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32s05.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s07.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Developer Information"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.developer"></a>Developer Information</h2></div></div></div><div class="sect2" title="Big Picture"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.bigpic"></a>Big Picture</h3></div></div></div><p>The profile mode headers are included with - <code class="code">-D_GLIBCXX_PROFILE</code> through preprocessor directives in +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Developer Information</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="bk01pt03ch19s05.html" title="Implementation Issues" /><link rel="next" href="bk01pt03ch19s07.html" title="Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Developer Information</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch19s05.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch19s07.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Developer Information"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.developer"></a>Developer Information</h2></div></div></div><div class="sect2" title="Big Picture"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.bigpic"></a>Big Picture</h3></div></div></div><p>The profile mode headers are included with + <code class="code">-D_GLIBCXX_PROFILE</code> through preprocessor directives in <code class="code">include/std/*</code>. - </p><p>Instrumented implementations are provided in + </p><p>Instrumented implementations are provided in <code class="code">include/profile/*</code>. All instrumentation hooks are macros defined in <code class="code">include/profile/profiler.h</code>. - </p><p>All the implementation of the instrumentation hooks is in + </p><p>All the implementation of the instrumentation hooks is in <code class="code">include/profile/impl/*</code>. Although all the code gets included, thus is publicly visible, only a small number of functions are called from outside this directory. All calls to hook implementations must be done through macros defined in <code class="code">profiler.h</code>. The macro - must ensure (1) that the call is guarded against reentrance and + must ensure (1) that the call is guarded against reentrance and (2) that the call can be turned off at compile time using a <code class="code">-D_GLIBCXX_PROFILE_...</code> compiler option. </p></div><div class="sect2" title="How To Add A Diagnostic"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.developer.howto"></a>How To Add A Diagnostic</h3></div></div></div><p>Let's say the diagnostic name is "magic". - </p><p>If you need to instrument a header not already under + </p><p>If you need to instrument a header not already under <code class="code">include/profile/*</code>, first edit the corresponding header under <code class="code">include/std/</code> and add a preprocessor directive such as the one in <code class="code">include/std/vector</code>: @@ -57,7 +57,7 @@ Define class <code class="code">__magic_stack_info: public __magic_info</code>. This defines the content of a line in the stack table. </p></li><li class="listitem"><p> - Define class <code class="code">__trace_magic: public __trace_base<__magic_info, + Define class <code class="code">__trace_magic: public __trace_base<__magic_info, __magic_stack_info></code>. It defines the content of the trace associated with this diagnostic. </p></li></ul></div><p> @@ -65,4 +65,4 @@ <code class="code">include/profile/impl/profiler_trace.h</code>. Use <code class="code">__trace_vector_to_list</code> as an example. </p><p>Add documentation in file <code class="code">doc/xml/manual/profile_mode.xml</code>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation Issues </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Diagnostics</td></tr></table></div></body></html> + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch19s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch19s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation Issues </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Diagnostics</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html index 390d5665ebc..2f2ff5dff57 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch32s07.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch19s07.html @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Diagnostics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 32. Profile Mode" /><link rel="prev" href="bk01pt12ch32s06.html" title="Developer Information" /><link rel="next" href="ext_allocators.html" title="Chapter 33. Allocators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Diagnostics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32s06.html">Prev</a> </td><th width="60%" align="center">Chapter 32. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Diagnostics"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.diagnostics"></a>Diagnostics</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Diagnostics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="profile_mode.html" title="Chapter 19. Profile Mode" /><link rel="prev" href="bk01pt03ch19s06.html" title="Developer Information" /><link rel="next" href="ext_allocators.html" title="Chapter 20. Allocators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Diagnostics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch19s06.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Profile Mode</th><td width="20%" align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Diagnostics"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.diagnostics"></a>Diagnostics</h2></div></div></div><p> The table below presents all the diagnostics we intend to implement. Each diagnostic has a corresponding compile time switch <code class="code">-D_GLIBCXX_PROFILE_<diagnostic></code>. Groups of related diagnostics can be turned on with a single switch. For instance, <code class="code">-D_GLIBCXX_PROFILE_LOCALITY</code> is equivalent to - <code class="code">-D_GLIBCXX_PROFILE_SOFTWARE_PREFETCH + <code class="code">-D_GLIBCXX_PROFILE_SOFTWARE_PREFETCH -D_GLIBCXX_PROFILE_RBTREE_LOCALITY</code>. </p><p> The benefit, cost, expected frequency and accuracy of each diagnostic @@ -18,7 +18,7 @@ A high accuracy means that the diagnostic is unlikely to be wrong. These grades are not perfect. They are just meant to guide users with specific needs or time budgets. - </p><div class="table"><a id="id626153"></a><p class="title"><b>Table 32.2. Diagnostics</b></p><div class="table-contents"><table summary="Diagnostics" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th></tr></thead><tbody><tr><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.containers" target="_top"> + </p><div class="table"><a id="id470044"></a><p class="title"><b>Table 19.2. Profile Diagnostics</b></p><div class="table-contents"><table summary="Profile Diagnostics" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Group</th><th align="left">Flag</th><th align="left">Benefit</th><th align="left">Cost</th><th align="left">Freq.</th><th align="left">Implemented</th><td class="auto-generated"> </td></tr></thead><tbody><tr><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.containers" target="_top"> CONTAINERS</a></td><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.hashtable_too_small" target="_top"> HASHTABLE_TOO_SMALL</a></td><td align="left">10</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.hashtable_too_large" target="_top"> HASHTABLE_TOO_LARGE</a></td><td align="left">5</td><td align="left">1</td><td align="left"> </td><td align="left">10</td><td align="left">yes</td></tr><tr><td align="left"> </td><td align="left"><a class="ulink" href="#manual.ext.profile_mode.analysis.inefficient_hash" target="_top"> @@ -57,22 +57,22 @@ advice sample <code class="code">_GLIBCXX_PROFILE_CONTAINERS</code>. </p><div class="sect3" title="Hashtable Too Small"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.hashtable_too_small"></a>Hashtable Too Small</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect hashtables with many + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect hashtables with many rehash operations, small construction size and large destruction size. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> Rehash is very expensive. Read content, follow chains within bucket, evaluate hash function, place at new location in different order.</p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span> 36%. Code similar to example below. - </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> Set initial size to N at construction site S. - </p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> + </p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> <code class="code">unordered_set, unordered_map</code> constructor, destructor, rehash. </p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> For each dynamic instance of <code class="code">unordered_[multi]set|map</code>, record initial size and call context of the constructor. Record size increase, if any, after each relevant operation such as insert. Record the estimated rehash cost.</p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> - Number of individual rehash operations * cost per rehash.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + Number of individual rehash operations * cost per rehash.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 unordered_set<int> us; 2 for (int k = 0; k < 1000000; ++k) { @@ -89,16 +89,16 @@ foo.cc:1: advice: Changing initial unordered_set size from 10 to 1000000 saves 1 </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> Save memory, which is good in itself and may also improve memory reference performance through fewer cache and TLB misses.</p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span> unknown. - </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> Set initial size to N at construction site S. - </p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> + </p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> <code class="code">unordered_set, unordered_map</code> constructor, destructor, rehash. </p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> For each dynamic instance of <code class="code">unordered_[multi]set|map</code>, record initial size and call context of the constructor, and correlate it with its size at destruction time. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> - Number of iteration operations + memory saved.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + Number of iteration operations + memory saved.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 vector<unordered_set<int>> v(100000, unordered_set<int>(100)) ; 2 for (int k = 0; k < 100000; ++k) { @@ -114,7 +114,7 @@ bytes of memory and M iteration steps. <code class="code">_GLIBCXX_PROFILE_INEFFICIENT_HASH</code>. </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect hashtables with polarized distribution. - </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> A non-uniform + </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> A non-uniform distribution may lead to long chains, thus possibly increasing complexity by a factor up to the number of elements. </p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span> factor up @@ -128,7 +128,7 @@ bytes of memory and M iteration steps. </p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> Count the exact number of link traversals. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> - Total number of links traversed.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + Total number of links traversed.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> class dumb_hash { public: @@ -143,7 +143,7 @@ class dumb_hash { </pre><p> </p></li></ul></div></div><div class="sect3" title="Vector Too Small"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.vector_too_small"></a>Vector Too Small</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_VECTOR_TOO_SMALL</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span>Detect vectors with many + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span>Detect vectors with many resize operations, small construction size and large destruction size.. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span>Resizing can be expensive. Copying large amounts of data takes time. Resizing many small vectors may @@ -153,17 +153,17 @@ class dumb_hash { </p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> For each dynamic instance of <code class="code">vector</code>, record initial size and call context of the constructor. - Record size increase, if any, after each relevant operation such as + Record size increase, if any, after each relevant operation such as <code class="code">push_back</code>. Record the estimated resize cost. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> - Total number of words copied * time to copy a word.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + Total number of words copied * time to copy a word.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 vector<int> v; 2 for (int k = 0; k < 1000000; ++k) { 3 v.push_back(k); 4 } -foo.cc:1: advice: Changing initial vector size from 10 to 1000000 saves +foo.cc:1: advice: Changing initial vector size from 10 to 1000000 saves copying 4000000 bytes and 20 memory allocations and deallocations. </pre><p> </p></li></ul></div></div><div class="sect3" title="Vector Too Large"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.vector_too_large"></a>Vector Too Large</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> @@ -180,7 +180,7 @@ copying 4000000 bytes and 20 memory allocations and deallocations. For each dynamic instance of <code class="code">vector</code>, record initial size and call context of the constructor, and correlate it with its size at destruction time.</p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> - Total amount of memory saved.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + Total amount of memory saved.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 vector<vector<int>> v(100000, vector<int>(100)) ; 2 for (int k = 0; k < 100000; ++k) { @@ -194,20 +194,20 @@ bytes of memory and may reduce the number of cache and TLB misses. </pre><p> </p></li></ul></div></div><div class="sect3" title="Vector to Hashtable"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.vector_to_hashtable"></a>Vector to Hashtable</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_VECTOR_TO_HASHTABLE</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect uses of + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect uses of <code class="code">vector</code> that can be substituted with <code class="code">unordered_set</code> to reduce execution time. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> Linear search in a vector is very expensive, whereas searching in a hashtable is very quick.</p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>factor up to container size. - </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span>Replace + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span>Replace <code class="code">vector</code> with <code class="code">unordered_set</code> at site S. </p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span><code class="code">vector</code> operations and access methods.</p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> For each dynamic instance of <code class="code">vector</code>, record call context of the constructor. Issue the advice only if the - only methods called on this <code class="code">vector</code> are <code class="code">push_back</code>, + only methods called on this <code class="code">vector</code> are <code class="code">push_back</code>, <code class="code">insert</code> and <code class="code">find</code>. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> Cost(vector::push_back) + cost(vector::insert) + cost(find, vector) - @@ -225,18 +225,18 @@ comparisons. </pre><p> </p></li></ul></div></div><div class="sect3" title="Hashtable to Vector"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.hashtable_to_vector"></a>Hashtable to Vector</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_HASHTABLE_TO_VECTOR</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect uses of + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect uses of <code class="code">unordered_set</code> that can be substituted with <code class="code">vector</code> to reduce execution time. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> Hashtable iterator is slower than vector iterator.</p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>95%. - </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span>Replace + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span>Replace <code class="code">unordered_set</code> with <code class="code">vector</code> at site S. </p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span><code class="code">unordered_set</code> operations and access methods.</p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> For each dynamic instance of <code class="code">unordered_set</code>, record call context of the constructor. Issue the advice only if the - number of <code class="code">find</code>, <code class="code">insert</code> and <code class="code">[]</code> + number of <code class="code">find</code>, <code class="code">insert</code> and <code class="code">[]</code> operations on this <code class="code">unordered_set</code> are small relative to the number of elements, and methods <code class="code">begin</code> or <code class="code">end</code> are invoked (suggesting iteration).</p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> @@ -254,11 +254,11 @@ indirections and may achieve better data locality. </pre><p> </p></li></ul></div></div><div class="sect3" title="Vector to List"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.vector_to_list"></a>Vector to List</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_VECTOR_TO_LIST</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where <code class="code">vector</code> could be substituted with <code class="code">list</code> for better performance. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> - Inserting in the middle of a vector is expensive compared to inserting in a + Inserting in the middle of a vector is expensive compared to inserting in a list. </p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>factor up to container size. @@ -272,19 +272,19 @@ indirections and may achieve better data locality. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> (Sum(cost(vector::method)) - Sum(cost(list::method)), for method in [push_back, insert, erase]) - + (Cost(iterate vector) - Cost(iterate list))</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + + (Cost(iterate vector) - Cost(iterate list))</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 vector<int> v; 2 for (int i = 0; i < 10000; ++i) { 3 v.insert(v.begin(), i); 4 } -foo.cc:1: advice: Changing "vector" to "list" will save about 5,000,000 +foo.cc:1: advice: Changing "vector" to "list" will save about 5,000,000 operations. </pre><p> </p></li></ul></div></div><div class="sect3" title="List to Vector"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.list_to_vector"></a>List to Vector</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_LIST_TO_VECTOR</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where <code class="code">list</code> could be substituted with <code class="code">vector</code> for better performance. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> @@ -297,7 +297,7 @@ operations. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> (Sum(cost(vector::method)) - Sum(cost(list::method)), for method in [push_back, insert, erase]) - + (Cost(iterate vector) - Cost(iterate list))</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + + (Cost(iterate vector) - Cost(iterate list))</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 list<int> l; ... @@ -311,7 +311,7 @@ memory references. </pre><p> </p></li></ul></div></div><div class="sect3" title="List to Forward List (Slist)"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.list_to_slist"></a>List to Forward List (Slist)</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_LIST_TO_SLIST</code>. - </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where + </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where <code class="code">list</code> could be substituted with <code class="code">forward_list</code> for better performance. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> @@ -328,7 +328,7 @@ memory references. Issue the advice if there are no <code class="code">backwards</code> traversals or insertion before a given node. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> - Always true.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + Always true.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 list<int> l; ... @@ -344,7 +344,7 @@ foo.cc:1: advice: Change "list" to "forward_list". </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect cases where ordered associative containers can be replaced with unordered ones. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> - Insert and search are quicker in a hashtable than in + Insert and search are quicker in a hashtable than in a red-black tree.</p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>52%. </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> Replace set with unordered_set at site S.</p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> @@ -374,9 +374,9 @@ foo.cc:1: advice: Change "list" to "forward_list". performance based on actual input. For instance, advise Radix Sort over Quick Sort for a particular call context. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> - See papers: + See papers: <a class="ulink" href="http://portal.acm.org/citation.cfm?doid=1065944.1065981" target="_top"> - A framework for adaptive algorithm selection in STAPL</a> and + A framework for adaptive algorithm selection in STAPL</a> and <a class="ulink" href="http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4228227" target="_top"> Optimizing Sorting with Machine Learning Algorithms</a>. </p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>60%. @@ -384,7 +384,7 @@ foo.cc:1: advice: Change "list" to "forward_list". at site S from X Sort to Y Sort.</p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> <code class="code">sort</code> algorithm.</p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> Issue the advice if the cost model tells us that another sort algorithm - would do better on this input. Requires us to know what algorithm we + would do better on this input. Requires us to know what algorithm we are using in our sort implementation in release mode.</p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> Runtime(algo) for algo in [radix, quick, merge, ...]</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> @@ -399,13 +399,13 @@ foo.cc:1: advice: Change "list" to "forward_list". </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> Indirect references are hard to predict and are very expensive when they miss in caches.</p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>25%. - </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> Insert prefetch + </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> Insert prefetch instruction.</p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> Vector iterator and access operator []. </p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> First, get cache line size and page size from system. Then record iterator dereference sequences for which the value is a pointer. - For each sequence within a container, issue a warning if successive pointer + For each sequence within a container, issue a warning if successive pointer addresses are not within cache lines and do not form a linear pattern (otherwise they may be prefetched by hardware). If they also step across page boundaries, make the warning stronger. @@ -417,11 +417,11 @@ foo.cc:1: advice: Change "list" to "forward_list". </p><p> This analysis is a little oversimplified. A better cost model could be created by understanding the capability of the hardware prefetcher. - This model could be trained automatically by running a set of synthetic + This model could be trained automatically by running a set of synthetic cases. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> Total distance between pointer values of successive elements in vectors - of pointers.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + of pointers.</p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 int zero = 0; 2 vector<int*> v(10000000, &zero); @@ -441,14 +441,14 @@ foo.cc:7: advice: Insert prefetch instruction. with respect to their actual traversal patterns. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span>Allocation can be tuned to a specific traversal pattern, to result in better data locality. - See paper: + See paper: <a class="ulink" href="http://www.springerlink.com/content/8085744l00x72662/" target="_top"> Custom Memory Allocation for Free</a>. </p></li><li class="listitem"><p><span class="emphasis"><em>Sample runtime reduction:</em></span>30%. </p></li><li class="listitem"><p><span class="emphasis"><em>Recommendation:</em></span> High scatter score N for container built at site S. Consider changing allocation sequence or choosing a structure conscious - allocator.</p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> Methods of all + allocator.</p></li><li class="listitem"><p><span class="emphasis"><em>To instrument:</em></span> Methods of all containers using linked structures.</p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> First, get cache line size and page size from system. Then record the number of successive elements that are on different line @@ -502,7 +502,7 @@ the allocation sequence or switching to a structure conscious allocator. container member accesses. Issue advice for elements referenced by multiple threads. See paper: <a class="ulink" href="http://portal.acm.org/citation.cfm?id=207110.207148" target="_top"> - The LRPD test: speculative run-time parallelization of loops with + The LRPD test: speculative run-time parallelization of loops with privatization and reduction parallelization</a>. </p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> Number of accesses to elements referenced from multiple threads @@ -512,7 +512,7 @@ the allocation sequence or switching to a structure conscious allocator. </p></li></ul></div></div><div class="sect3" title="False Sharing"><div class="titlepage"><div><div><h4 class="title"><a id="manual.ext.profile_mode.analysis.mthread.false_share"></a>False Sharing</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>Switch:</em></span> <code class="code">_GLIBCXX_PROFILE_FALSE_SHARING</code>. </p></li><li class="listitem"><p><span class="emphasis"><em>Goal:</em></span> Detect elements in the - same container which share a cache line, are written by at least one + same container which share a cache line, are written by at least one thread, and accessed by different threads. </p></li><li class="listitem"><p><span class="emphasis"><em>Fundamentals:</em></span> Under these assumptions, cache protocols require @@ -523,14 +523,14 @@ the allocation sequence or switching to a structure conscious allocator. and iterators. </p></li><li class="listitem"><p><span class="emphasis"><em>Analysis:</em></span> First, get the cache line size. - For each shared container, record all the associated iterator dereferences + For each shared container, record all the associated iterator dereferences and member access methods with the thread id. Compare the address lists - across threads to detect references in two different threads to the same - cache line. Issue a warning only if the ratio to total references is - significant. Do the same for iterator dereference values if they are + across threads to detect references in two different threads to the same + cache line. Issue a warning only if the ratio to total references is + significant. Do the same for iterator dereference values if they are pointers.</p></li><li class="listitem"><p><span class="emphasis"><em>Cost model:</em></span> Number of accesses to same cache line from different threads. - </p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> + </p></li><li class="listitem"><p><span class="emphasis"><em>Example:</em></span> </p><pre class="programlisting"> 1 vector<int> v(2, 0); 2 #pragma omp parallel for shared(v, SIZE) schedule(static, 1) @@ -539,7 +539,7 @@ the allocation sequence or switching to a structure conscious allocator. 5 } OMP_NUM_THREADS=2 ./a.out -foo.cc:1: advice: Change container structure or padding to avoid false +foo.cc:1: advice: Change container structure or padding to avoid false sharing in multithreaded access at foo.cc:4. Detected N shared cache lines. </pre><p> </p></li></ul></div></div></div><div class="sect2" title="Statistics"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.profile_mode.analysis.statistics"></a>Statistics</h3></div></div></div><p> @@ -555,4 +555,4 @@ sharing in multithreaded access at foo.cc:4. Detected N shared cache lines. This diagnostic will not issue any advice, but it will print statistics for each container construction site. The statistics will contain the cost of each operation actually performed on the container. -</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Developer Information </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 33. Allocators</td></tr></table></div></body></html> +</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch19s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="profile_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_allocators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Developer Information </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 20. Allocators</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch34s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html index 70e4d924cec..185d3ad8df4 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch34s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s02.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_containers.html" title="Chapter 34. Containers" /><link rel="prev" href="ext_containers.html" title="Chapter 34. Containers" /><link rel="next" href="bk01pt12ch34s03.html" title="Deprecated HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 34. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch34s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="HP/SGI"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>HP/SGI</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_containers.html" title="Chapter 21. Containers" /><link rel="prev" href="ext_containers.html" title="Chapter 21. Containers" /><link rel="next" href="bk01pt03ch21s03.html" title="Deprecated HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><th width="60%" align="center">Chapter 21. Containers</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch21s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="HP/SGI"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.sgi"></a>HP/SGI</h2></div></div></div><p> </p><p>A few extensions and nods to backwards-compatibility have been made with containers. Those dealing with older SGI-style allocators are dealt with elsewhere. The remaining ones all deal with bits: @@ -26,7 +26,7 @@ </pre><p>Note that these may in fact be removed in the future, although we have no present plans to do so (and there doesn't seem to be any immediate reason to). -</p><p>The semantics of member function <code class="code">operator[]</code> are not specified +</p><p>The semantics of member function <code class="code">operator[]</code> are not specified in the C++ standard. A long-standing defect report calls for sensible obvious semantics, which are already implemented here: <code class="code">op[]</code> on a const bitset returns a bool, and for a non-const bitset returns a @@ -40,4 +40,4 @@ </p><pre class="programlisting"> size_t _Find_first() const; size_t _Find_next (size_t prev) const;</pre><p>The same caveat given for the _Unchecked_* functions applies here also. -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch34s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 34. Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Deprecated HP/SGI</td></tr></table></div></body></html> +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch21s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Containers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Deprecated HP/SGI</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch34s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html index b9f0849bf5a..7486167b089 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch34s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch21s03.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Deprecated HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_containers.html" title="Chapter 34. Containers" /><link rel="prev" href="bk01pt12ch34s02.html" title="HP/SGI" /><link rel="next" href="ext_utilities.html" title="Chapter 35. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch34s02.html">Prev</a> </td><th width="60%" align="center">Chapter 34. Containers</th><td width="20%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Deprecated HP/SGI"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated HP/SGI</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Deprecated HP/SGI</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_containers.html" title="Chapter 21. Containers" /><link rel="prev" href="bk01pt03ch21s02.html" title="HP/SGI" /><link rel="next" href="ext_utilities.html" title="Chapter 22. Utilities" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Deprecated HP/SGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch21s02.html">Prev</a> </td><th width="60%" align="center">Chapter 21. Containers</th><td width="20%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Deprecated HP/SGI"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.deprecated_sgi"></a>Deprecated HP/SGI</h2></div></div></div><p> The SGI hashing classes <code class="classname">hash_set</code> and <code class="classname">hash_set</code> have been deprecated by the unordered_set, unordered_multiset, unordered_map, @@ -47,4 +47,4 @@ possibility of pathological cases, you'll probably get better performance from hash_map. </em></span> - </p></blockquote></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch34s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 35. Utilities</td></tr></table></div></body></html> + </p></blockquote></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch21s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_utilities.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 22. Utilities</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch41s02.html b/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html index 6dee3ae2abb..ec4a92763c4 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch41s02.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch28s02.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_concurrency.html" title="Chapter 41. Concurrency" /><link rel="prev" href="ext_concurrency.html" title="Chapter 41. Concurrency" /><link rel="next" href="bk01pt12ch41s03.html" title="Use" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 41. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch41s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Implementation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.impl"></a>Implementation</h2></div></div></div><div class="sect2" title="Using Builtin Atomic Functions"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"></a>Using Builtin Atomic Functions</h3></div></div></div><p>The functions for atomic operations described above are either +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Implementation</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_concurrency.html" title="Chapter 28. Concurrency" /><link rel="prev" href="ext_concurrency.html" title="Chapter 28. Concurrency" /><link rel="next" href="bk01pt03ch28s03.html" title="Use" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Implementation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch28s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Implementation"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.impl"></a>Implementation</h2></div></div></div><div class="sect2" title="Using Builtin Atomic Functions"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.impl.atomic_fallbacks"></a>Using Builtin Atomic Functions</h3></div></div></div><p>The functions for atomic operations described above are either implemented via compiler intrinsics (if the underlying host is capable) or by library fallbacks.</p><p>Compiler intrinsics (builtins) are always preferred. However, as the compiler builtins for atomics are not universally implemented, @@ -12,7 +12,7 @@ missing reference to <code class="code">__sync_fetch_and_add_4</code>.) conditionally, via the <code class="code">-march</code> command line flag. This makes usage vary depending on the target hardware and the flags used during compile. -</p><p> +</p><p> If builtins are possible for bool-sized integral types, <code class="code">_GLIBCXX_ATOMIC_BUILTINS_1</code> will be defined. If builtins are possible for int-sized integral types, @@ -38,4 +38,4 @@ use this layer. More detail as to the specific interface can be found in the sou functions, and usage found in the usual <pthread.h> file, including <code class="code">pthread_t</code>, <code class="code">pthread_once_t</code>, <code class="code">pthread_create</code>, etc. -</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch41s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 41. Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Use</td></tr></table></div></body></html> +</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch28s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 28. Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Use</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch41s03.html b/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html index deb28ca2ca4..e5835a70b76 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch41s03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03ch28s03.html @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Use</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_concurrency.html" title="Chapter 41. Concurrency" /><link rel="prev" href="bk01pt12ch41s02.html" title="Implementation" /><link rel="next" href="appendix_contributing.html" title="Appendix A. Contributing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch41s02.html">Prev</a> </td><th width="60%" align="center">Chapter 41. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Use"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.use"></a>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows: +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Use</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="ext_concurrency.html" title="Chapter 28. Concurrency" /><link rel="prev" href="bk01pt03ch28s02.html" title="Implementation" /><link rel="next" href="bk01pt04.html" title="Part IV. Appendices" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Use</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch28s02.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Concurrency</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Use"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.use"></a>Use</h2></div></div></div><p>Typical usage of the last two constructs is demonstrated as follows: </p><pre class="programlisting"> #include <ext/concurrence.h> @@ -31,7 +31,6 @@ the mutex as control moves out of this block. concurrence-related errors. These classes are: <code class="code">__concurrence_lock_error</code>, <code class="code">__concurrence_unlock_error</code>, <code class="code">__concurrence_wait_error</code>, and <code class="code">__concurrence_broadcast_error</code>. -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch41s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix A. - Contributing - +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch28s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ext_concurrency.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Implementation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IV. + Appendices </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html index a3af7c689c3..e3ac3f7bfbd 100644 --- a/libstdc++-v3/doc/html/manual/bk01pt12pr03.html +++ b/libstdc++-v3/doc/html/manual/bk01pt03pr01.html @@ -1,26 +1,26 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="extensions.html" title="Part XII. Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="extensions.html" title="Part III. Extensions" /><link rel="next" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h2 class="title"><a id="id684983"></a></h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h2 class="title"><a id="id410049"></a></h2></div></div></div><p> Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from SGI's STL, some of these are GNU's, and some just seemed to appear on the doorstep. </p><p><span class="emphasis"><em>Before</em></span> you leap in and use any of these extensions, be aware of two things: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> - Non-Standard means exactly that. + Non-Standard means exactly that. </p><p> The behavior, and the very existence, of these extensions may change with little or no warning. (Ideally, the really good ones will appear in the next revision of C++.) Also, other platforms, other compilers, other versions of g++ or libstdc++ may not recognize these names, or - treat them differently, or... + treat them differently, or... </p></li><li class="listitem"><p> - You should know how to access these headers properly. - </p></li></ol></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XII. + You should know how to access these headers properly. + </p></li></ol></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="extensions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_compile_checks.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part III. Extensions - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 29. Compile Time Checks</td></tr></table></div></body></html> + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Compile Time Checks</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt04.html b/libstdc++-v3/doc/html/manual/bk01pt04.html new file mode 100644 index 00000000000..66713b1213d --- /dev/null +++ b/libstdc++-v3/doc/html/manual/bk01pt04.html @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV. Appendices</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt03ch28s03.html" title="Use" /><link rel="next" href="appendix_contributing.html" title="Appendix A. Contributing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. + Appendices +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch28s03.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part IV. Appendices"><div class="titlepage"><div><div><h1 class="title"><a id="appendix"></a>Part IV. + Appendices +</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="appendix"><a href="appendix_contributing.html">A. + Contributing + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.combines">Combines</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B. + Porting and Maintenance + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="sect2"><a href="test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C. + Free Software Needs Free Documentation + +</a></span></dt><dt><span class="appendix"><a href="appendix_gpl.html">D. + <acronym class="acronym">GNU</acronym> General Public License version 3 + </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch28s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="appendix_contributing.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Use </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Appendix A. + Contributing + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13.html deleted file mode 100644 index e86d7fe1779..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt05ch13.html +++ /dev/null @@ -1,90 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. String Classes</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="strings.html" title="Part V. Strings" /><link rel="prev" href="strings.html" title="Part V. Strings" /><link rel="next" href="bk01pt05ch13s02.html" title="Case Sensitivity" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. String Classes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><th width="60%" align="center">Part V. - Strings - -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 13. String Classes"><div class="titlepage"><div><div><h2 class="title"><a id="manual.strings.string"></a>Chapter 13. String Classes</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></div><div class="sect1" title="Simple Transformations"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.simple"></a>Simple Transformations</h2></div></div></div><p> - Here are Standard, simple, and portable ways to perform common - transformations on a <code class="code">string</code> instance, such as - "convert to all upper case." The word transformations - is especially apt, because the standard template function - <code class="code">transform<></code> is used. - </p><p> - This code will go through some iterations. Here's a simple - version: - </p><pre class="programlisting"> - #include <string> - #include <algorithm> - #include <cctype> // old <ctype.h> - - struct ToLower - { - char operator() (char c) const { return std::tolower(c); } - }; - - struct ToUpper - { - char operator() (char c) const { return std::toupper(c); } - }; - - int main() - { - std::string s ("Some Kind Of Initial Input Goes Here"); - - // Change everything into upper case - std::transform (s.begin(), s.end(), s.begin(), ToUpper()); - - // Change everything into lower case - std::transform (s.begin(), s.end(), s.begin(), ToLower()); - - // Change everything back into upper case, but store the - // result in a different string - std::string capital_s; - capital_s.resize(s.size()); - std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper()); - } - </pre><p> - <span class="emphasis"><em>Note</em></span> that these calls all - involve the global C locale through the use of the C functions - <code class="code">toupper/tolower</code>. This is absolutely guaranteed to work -- - but <span class="emphasis"><em>only</em></span> if the string contains <span class="emphasis"><em>only</em></span> characters - from the basic source character set, and there are <span class="emphasis"><em>only</em></span> - 96 of those. Which means that not even all English text can be - represented (certain British spellings, proper names, and so forth). - So, if all your input forevermore consists of only those 96 - characters (hahahahahaha), then you're done. - </p><p><span class="emphasis"><em>Note</em></span> that the - <code class="code">ToUpper</code> and <code class="code">ToLower</code> function objects - are needed because <code class="code">toupper</code> and <code class="code">tolower</code> - are overloaded names (declared in <code class="code"><cctype></code> and - <code class="code"><locale></code>) so the template-arguments for - <code class="code">transform<></code> cannot be deduced, as explained in - <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html" target="_top">this - message</a>. - - At minimum, you can write short wrappers like - </p><pre class="programlisting"> - char toLower (char c) - { - return std::tolower(c); - } </pre><p>(Thanks to James Kanze for assistance and suggestions on all of this.) - </p><p>Another common operation is trimming off excess whitespace. Much - like transformations, this task is trivial with the use of string's - <code class="code">find</code> family. These examples are broken into multiple - statements for readability: - </p><pre class="programlisting"> - std::string str (" \t blah blah blah \n "); - - // trim leading whitespace - string::size_type notwhite = str.find_first_not_of(" \t\n"); - str.erase(0,notwhite); - - // trim trailing whitespace - notwhite = str.find_last_not_of(" \t\n"); - str.erase(notwhite+1); </pre><p>Obviously, the calls to <code class="code">find</code> could be inserted directly - into the calls to <code class="code">erase</code>, in case your compiler does not - optimize named temporaries out of existence. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="strings.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part V. - Strings - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Case Sensitivity</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13s02.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13s02.html deleted file mode 100644 index 2cd970a12bf..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt05ch13s02.html +++ /dev/null @@ -1,40 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Case Sensitivity</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="next" href="bk01pt05ch13s03.html" title="Arbitrary Character Types" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Case Sensitivity</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s03.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Case Sensitivity"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.case"></a>Case Sensitivity</h2></div></div></div><p> - </p><p>The well-known-and-if-it-isn't-well-known-it-ought-to-be - <a class="ulink" href="http://www.gotw.ca/gotw/" target="_top">Guru of the Week</a> - discussions held on Usenet covered this topic in January of 1998. - Briefly, the challenge was, <span class="quote">“<span class="quote">write a 'ci_string' class which - is identical to the standard 'string' class, but is - case-insensitive in the same way as the (common but nonstandard) - C function stricmp()</span>”</span>. - </p><pre class="programlisting"> - ci_string s( "AbCdE" ); - - // case insensitive - assert( s == "abcde" ); - assert( s == "ABCDE" ); - - // still case-preserving, of course - assert( strcmp( s.c_str(), "AbCdE" ) == 0 ); - assert( strcmp( s.c_str(), "abcde" ) != 0 ); </pre><p>The solution is surprisingly easy. The original answer was - posted on Usenet, and a revised version appears in Herb Sutter's - book <span class="emphasis"><em>Exceptional C++</em></span> and on his website as <a class="ulink" href="http://www.gotw.ca/gotw/029.htm" target="_top">GotW 29</a>. - </p><p>See? Told you it was easy!</p><p> - <span class="emphasis"><em>Added June 2000:</em></span> The May 2000 issue of C++ - Report contains a fascinating <a class="ulink" href="http://lafstern.org/matt/col2_new.pdf" target="_top"> article</a> by - Matt Austern (yes, <span class="emphasis"><em>the</em></span> Matt Austern) on why - case-insensitive comparisons are not as easy as they seem, and - why creating a class is the <span class="emphasis"><em>wrong</em></span> way to go - about it in production code. (The GotW answer mentions one of - the principle difficulties; his article mentions more.) - </p><p>Basically, this is "easy" only if you ignore some things, - things which may be too important to your program to ignore. (I chose - to ignore them when originally writing this entry, and am surprised - that nobody ever called me on it...) The GotW question and answer - remain useful instructional tools, however. - </p><p><span class="emphasis"><em>Added September 2000:</em></span> James Kanze provided a link to a - <a class="ulink" href="http://www.unicode.org/reports/tr21/tr21-5.html" target="_top">Unicode - Technical Report discussing case handling</a>, which provides some - very good information. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 13. String Classes </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Arbitrary Character Types</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13s03.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13s03.html deleted file mode 100644 index aa2afea53a6..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt05ch13s03.html +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Arbitrary Character Types</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13s02.html" title="Case Sensitivity" /><link rel="next" href="bk01pt05ch13s04.html" title="Tokenizing" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Arbitrary Character Types</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s02.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Arbitrary Character Types"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.character_types"></a>Arbitrary Character Types</h2></div></div></div><p> - </p><p>The <code class="code">std::basic_string</code> is tantalizingly general, in that - it is parameterized on the type of the characters which it holds. - In theory, you could whip up a Unicode character class and instantiate - <code class="code">std::basic_string<my_unicode_char></code>, or assuming - that integers are wider than characters on your platform, maybe just - declare variables of type <code class="code">std::basic_string<int></code>. - </p><p>That's the theory. Remember however that basic_string has additional - type parameters, which take default arguments based on the character - type (called <code class="code">CharT</code> here): - </p><pre class="programlisting"> - template <typename CharT, - typename Traits = char_traits<CharT>, - typename Alloc = allocator<CharT> > - class basic_string { .... };</pre><p>Now, <code class="code">allocator<CharT></code> will probably Do The Right - Thing by default, unless you need to implement your own allocator - for your characters. - </p><p>But <code class="code">char_traits</code> takes more work. The char_traits - template is <span class="emphasis"><em>declared</em></span> but not <span class="emphasis"><em>defined</em></span>. - That means there is only - </p><pre class="programlisting"> - template <typename CharT> - struct char_traits - { - static void foo (type1 x, type2 y); - ... - };</pre><p>and functions such as char_traits<CharT>::foo() are not - actually defined anywhere for the general case. The C++ standard - permits this, because writing such a definition to fit all possible - CharT's cannot be done. - </p><p>The C++ standard also requires that char_traits be specialized for - instantiations of <code class="code">char</code> and <code class="code">wchar_t</code>, and it - is these template specializations that permit entities like - <code class="code">basic_string<char,char_traits<char>></code> to work. - </p><p>If you want to use character types other than char and wchar_t, - such as <code class="code">unsigned char</code> and <code class="code">int</code>, you will - need suitable specializations for them. For a time, in earlier - versions of GCC, there was a mostly-correct implementation that - let programmers be lazy but it broke under many situations, so it - was removed. GCC 3.4 introduced a new implementation that mostly - works and can be specialized even for <code class="code">int</code> and other - built-in types. - </p><p>If you want to use your own special character class, then you have - <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html" target="_top">a lot - of work to do</a>, especially if you with to use i18n features - (facets require traits information but don't have a traits argument). - </p><p>Another example of how to specialize char_traits was given <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html" target="_top">on the - mailing list</a> and at a later date was put into the file <code class="code"> - include/ext/pod_char_traits.h</code>. We agree - that the way it's used with basic_string (scroll down to main()) - doesn't look nice, but that's because <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html" target="_top">the - nice-looking first attempt</a> turned out to <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html" target="_top">not - be conforming C++</a>, due to the rule that CharT must be a POD. - (See how tricky this is?) - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Case Sensitivity </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Tokenizing</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13s04.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13s04.html deleted file mode 100644 index 12d1ee7fb5c..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt05ch13s04.html +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Tokenizing</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13s03.html" title="Arbitrary Character Types" /><link rel="next" href="bk01pt05ch13s05.html" title="Shrink to Fit" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Tokenizing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s03.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s05.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Tokenizing"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.token"></a>Tokenizing</h2></div></div></div><p> - </p><p>The Standard C (and C++) function <code class="code">strtok()</code> leaves a lot to - be desired in terms of user-friendliness. It's unintuitive, it - destroys the character string on which it operates, and it requires - you to handle all the memory problems. But it does let the client - code decide what to use to break the string into pieces; it allows - you to choose the "whitespace," so to speak. - </p><p>A C++ implementation lets us keep the good things and fix those - annoyances. The implementation here is more intuitive (you only - call it once, not in a loop with varying argument), it does not - affect the original string at all, and all the memory allocation - is handled for you. - </p><p>It's called stringtok, and it's a template function. Sources are - as below, in a less-portable form than it could be, to keep this - example simple (for example, see the comments on what kind of - string it will accept). - </p><pre class="programlisting"> -#include <string> -template <typename Container> -void -stringtok(Container &container, string const &in, - const char * const delimiters = " \t\n") -{ - const string::size_type len = in.length(); - string::size_type i = 0; - - while (i < len) - { - // Eat leading whitespace - i = in.find_first_not_of(delimiters, i); - if (i == string::npos) - return; // Nothing left but white space - - // Find the end of the token - string::size_type j = in.find_first_of(delimiters, i); - - // Push token - if (j == string::npos) - { - container.push_back(in.substr(i)); - return; - } - else - container.push_back(in.substr(i, j-i)); - - // Set up for next loop - i = j + 1; - } -} -</pre><p> - The author uses a more general (but less readable) form of it for - parsing command strings and the like. If you compiled and ran this - code using it: - </p><pre class="programlisting"> - std::list<string> ls; - stringtok (ls, " this \t is\t\n a test "); - for (std::list<string>const_iterator i = ls.begin(); - i != ls.end(); ++i) - { - std::cerr << ':' << (*i) << ":\n"; - } </pre><p>You would see this as output: - </p><pre class="programlisting"> - :this: - :is: - :a: - :test: </pre><p>with all the whitespace removed. The original <code class="code">s</code> is still - available for use, <code class="code">ls</code> will clean up after itself, and - <code class="code">ls.size()</code> will return how many tokens there were. - </p><p>As always, there is a price paid here, in that stringtok is not - as fast as strtok. The other benefits usually outweigh that, however. - </p><p><span class="emphasis"><em>Added February 2001:</em></span> Mark Wilden pointed out that the - standard <code class="code">std::getline()</code> function can be used with standard - <code class="code">istringstreams</code> to perform - tokenizing as well. Build an istringstream from the input text, - and then use std::getline with varying delimiters (the three-argument - signature) to extract tokens into a string. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Arbitrary Character Types </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Shrink to Fit</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13s05.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13s05.html deleted file mode 100644 index b6a5da10d20..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt05ch13s05.html +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Shrink to Fit</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13s04.html" title="Tokenizing" /><link rel="next" href="bk01pt05ch13s06.html" title="CString (MFC)" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Shrink to Fit</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s04.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13s06.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Shrink to Fit"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.shrink"></a>Shrink to Fit</h2></div></div></div><p> - </p><p>From GCC 3.4 calling <code class="code">s.reserve(res)</code> on a - <code class="code">string s</code> with <code class="code">res < s.capacity()</code> will - reduce the string's capacity to <code class="code">std::max(s.size(), res)</code>. - </p><p>This behaviour is suggested, but not required by the standard. Prior - to GCC 3.4 the following alternative can be used instead - </p><pre class="programlisting"> - std::string(str.data(), str.size()).swap(str); - </pre><p>This is similar to the idiom for reducing - a <code class="code">vector</code>'s memory usage - (see <a class="link" href="../faq.html#faq.size_equals_capacity" title="7.8.">this FAQ - entry</a>) but the regular copy constructor cannot be used - because libstdc++'s <code class="code">string</code> is Copy-On-Write. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Tokenizing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> CString (MFC)</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html b/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html deleted file mode 100644 index 29ad197e1dd..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt05ch13s06.html +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>CString (MFC)</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /><link rel="prev" href="bk01pt05ch13s05.html" title="Shrink to Fit" /><link rel="next" href="localization.html" title="Part VI. Localization" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">CString (MFC)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s05.html">Prev</a> </td><th width="60%" align="center">Chapter 13. String Classes</th><td width="20%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="CString (MFC)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="strings.string.Cstring"></a>CString (MFC)</h2></div></div></div><p> - </p><p>A common lament seen in various newsgroups deals with the Standard - string class as opposed to the Microsoft Foundation Class called - CString. Often programmers realize that a standard portable - answer is better than a proprietary nonportable one, but in porting - their application from a Win32 platform, they discover that they - are relying on special functions offered by the CString class. - </p><p>Things are not as bad as they seem. In - <a class="ulink" href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html" target="_top">this - message</a>, Joe Buck points out a few very important things: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The Standard <code class="code">string</code> supports all the operations - that CString does, with three exceptions. - </p></li><li class="listitem"><p>Two of those exceptions (whitespace trimming and case - conversion) are trivial to implement. In fact, we do so - on this page. - </p></li><li class="listitem"><p>The third is <code class="code">CString::Format</code>, which allows formatting - in the style of <code class="code">sprintf</code>. This deserves some mention: - </p></li></ul></div><p> - The old libg++ library had a function called form(), which did much - the same thing. But for a Standard solution, you should use the - stringstream classes. These are the bridge between the iostream - hierarchy and the string class, and they operate with regular - streams seamlessly because they inherit from the iostream - hierarchy. An quick example: - </p><pre class="programlisting"> - #include <iostream> - #include <string> - #include <sstream> - - string f (string& incoming) // incoming is "foo N" - { - istringstream incoming_stream(incoming); - string the_word; - int the_number; - - incoming_stream >> the_word // extract "foo" - >> the_number; // extract N - - ostringstream output_stream; - output_stream << "The word was " << the_word - << " and 3*N was " << (3*the_number); - - return output_stream.str(); - } </pre><p>A serious problem with CString is a design bug in its memory - allocation. Specifically, quoting from that same message: - </p><pre class="programlisting"> - CString suffers from a common programming error that results in - poor performance. Consider the following code: - - CString n_copies_of (const CString& foo, unsigned n) - { - CString tmp; - for (unsigned i = 0; i < n; i++) - tmp += foo; - return tmp; - } - - This function is O(n^2), not O(n). The reason is that each += - causes a reallocation and copy of the existing string. Microsoft - applications are full of this kind of thing (quadratic performance - on tasks that can be done in linear time) -- on the other hand, - we should be thankful, as it's created such a big market for high-end - ix86 hardware. :-) - - If you replace CString with string in the above function, the - performance is O(n). - </pre><p>Joe Buck also pointed out some other things to keep in mind when - comparing CString and the Standard string class: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>CString permits access to its internal representation; coders - who exploited that may have problems moving to <code class="code">string</code>. - </p></li><li class="listitem"><p>Microsoft ships the source to CString (in the files - MFC\SRC\Str{core,ex}.cpp), so you could fix the allocation - bug and rebuild your MFC libraries. - <span class="emphasis"><em><span class="emphasis"><em>Note:</em></span> It looks like the CString shipped - with VC++6.0 has fixed this, although it may in fact have been - one of the VC++ SPs that did it.</em></span> - </p></li><li class="listitem"><p><code class="code">string</code> operations like this have O(n) complexity - <span class="emphasis"><em>if the implementors do it correctly</em></span>. The libstdc++ - implementors did it correctly. Other vendors might not. - </p></li><li class="listitem"><p>While parts of the SGI STL are used in libstdc++, their - string class is not. The SGI <code class="code">string</code> is essentially - <code class="code">vector<char></code> and does not do any reference - counting like libstdc++'s does. (It is O(n), though.) - So if you're thinking about SGI's string or rope classes, - you're now looking at four possibilities: CString, the - libstdc++ string, the SGI string, and the SGI rope, and this - is all before any allocator or traits customizations! (More - choices than you can shake a stick at -- want fries with that?) - </p></li></ul></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt05ch13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Shrink to Fit </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VI. - Localization - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt08ch19.html b/libstdc++-v3/doc/html/manual/bk01pt08ch19.html deleted file mode 100644 index 6b6bb02dbde..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt08ch19.html +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Predefined</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="iterators.html" title="Part VIII. Iterators" /><link rel="prev" href="iterators.html" title="Part VIII. Iterators" /><link rel="next" href="bk01pt08ch19s02.html" title="One Past the End" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Predefined</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><th width="60%" align="center">Part VIII. - Iterators - -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 19. Predefined"><div class="titlepage"><div><div><h2 class="title"><a id="manual.iterators.predefined"></a>Chapter 19. Predefined</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></div><div class="sect1" title="Iterators vs. Pointers"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h2></div></div></div><p> - The following -FAQ <a class="link" href="../faq.html#faq.iterator_as_pod" title="7.1.">entry</a> points out that -iterators are not implemented as pointers. They are a generalization -of pointers, but they are implemented in libstdc++ as separate -classes. - </p><p>Keeping that simple fact in mind as you design your code will - prevent a whole lot of difficult-to-understand bugs. - </p><p>You can think of it the other way 'round, even. Since iterators - are a generalization, that means that <span class="emphasis"><em>pointers</em></span> are - <span class="emphasis"><em>iterators</em></span>, and that pointers can be used whenever an - iterator would be. All those functions in the Algorithms chapter - of the Standard will work just as well on plain arrays and their - pointers. - </p><p>That doesn't mean that when you pass in a pointer, it gets wrapped - into some special delegating iterator-to-pointer class with a layer - of overhead. (If you think that's the case anywhere, you don't - understand templates to begin with...) Oh, no; if you pass - in a pointer, then the compiler will instantiate that template - using T* as a type, and good old high-speed pointer arithmetic as - its operations, so the resulting code will be doing exactly the same - things as it would be doing if you had hand-coded it yourself (for - the 273rd time). - </p><p>How much overhead <span class="emphasis"><em>is</em></span> there when using an iterator class? - Very little. Most of the layering classes contain nothing but - typedefs, and typedefs are "meta-information" that simply - tell the compiler some nicknames; they don't create code. That - information gets passed down through inheritance, so while the - compiler has to do work looking up all the names, your runtime code - does not. (This has been a prime concern from the beginning.) - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="iterators.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VIII. - Iterators - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> One Past the End</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html b/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html deleted file mode 100644 index 2a0e28d40da..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt08ch19s02.html +++ /dev/null @@ -1,86 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>One Past the End</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /><link rel="prev" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /><link rel="next" href="algorithms.html" title="Part IX. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">One Past the End</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt08ch19.html">Prev</a> </td><th width="60%" align="center">Chapter 19. Predefined</th><td width="20%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="One Past the End"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="iterators.predefined.end"></a>One Past the End</h2></div></div></div><p>This starts off sounding complicated, but is actually very easy, - especially towards the end. Trust me. - </p><p>Beginners usually have a little trouble understand the whole - 'past-the-end' thing, until they remember their early algebra classes - (see, they <span class="emphasis"><em>told</em></span> you that stuff would come in handy!) and - the concept of half-open ranges. - </p><p>First, some history, and a reminder of some of the funkier rules in - C and C++ for builtin arrays. The following rules have always been - true for both languages: - </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>You can point anywhere in the array, <span class="emphasis"><em>or to the first element - past the end of the array</em></span>. A pointer that points to one - past the end of the array is guaranteed to be as unique as a - pointer to somewhere inside the array, so that you can compare - such pointers safely. - </p></li><li class="listitem"><p>You can only dereference a pointer that points into an array. - If your array pointer points outside the array -- even to just - one past the end -- and you dereference it, Bad Things happen. - </p></li><li class="listitem"><p>Strictly speaking, simply pointing anywhere else invokes - undefined behavior. Most programs won't puke until such a - pointer is actually dereferenced, but the standards leave that - up to the platform. - </p></li></ol></div><p>The reason this past-the-end addressing was allowed is to make it - easy to write a loop to go over an entire array, e.g., - while (*d++ = *s++);. - </p><p>So, when you think of two pointers delimiting an array, don't think - of them as indexing 0 through n-1. Think of them as <span class="emphasis"><em>boundary - markers</em></span>: - </p><pre class="programlisting"> - - beginning end - | | - | | This is bad. Always having to - | | remember to add or subtract one. - | | Off-by-one bugs very common here. - V V - array of N elements - |---|---|--...--|---|---| - | 0 | 1 | ... |N-2|N-1| - |---|---|--...--|---|---| - - ^ ^ - | | - | | This is good. This is safe. This - | | is guaranteed to work. Just don't - | | dereference 'end'. - beginning end - - </pre><p>See? Everything between the boundary markers is part of the array. - Simple. - </p><p>Now think back to your junior-high school algebra course, when you - were learning how to draw graphs. Remember that a graph terminating - with a solid dot meant, "Everything up through this point," - and a graph terminating with an open dot meant, "Everything up - to, but not including, this point," respectively called closed - and open ranges? Remember how closed ranges were written with - brackets, <span class="emphasis"><em>[a,b]</em></span>, and open ranges were written with parentheses, - <span class="emphasis"><em>(a,b)</em></span>? - </p><p>The boundary markers for arrays describe a <span class="emphasis"><em>half-open range</em></span>, - starting with (and including) the first element, and ending with (but - not including) the last element: <span class="emphasis"><em>[beginning,end)</em></span>. See, I - told you it would be simple in the end. - </p><p>Iterators, and everything working with iterators, follows this same - time-honored tradition. A container's <code class="code">begin()</code> method returns - an iterator referring to the first element, and its <code class="code">end()</code> - method returns a past-the-end iterator, which is guaranteed to be - unique and comparable against any other iterator pointing into the - middle of the container. - </p><p>Container constructors, container methods, and algorithms, all take - pairs of iterators describing a range of values on which to operate. - All of these ranges are half-open ranges, so you pass the beginning - iterator as the starting parameter, and the one-past-the-end iterator - as the finishing parameter. - </p><p>This generalizes very well. You can operate on sub-ranges quite - easily this way; functions accepting a <span class="emphasis"><em>[first,last)</em></span> range - don't know or care whether they are the boundaries of an entire {array, - sequence, container, whatever}, or whether they only enclose a few - elements from the center. This approach also makes zero-length - sequences very simple to recognize: if the two endpoints compare - equal, then the {array, sequence, container, whatever} is empty. - </p><p>Just don't dereference <code class="code">end()</code>. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt08ch19.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt08ch19.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 19. Predefined </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part IX. - Algorithms - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt09ch20.html b/libstdc++-v3/doc/html/manual/bk01pt09ch20.html deleted file mode 100644 index a343f9c50f4..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt09ch20.html +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. Mutating</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library , algorithm " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX. Algorithms" /><link rel="prev" href="bk01pt09pr02.html" title="" /><link rel="next" href="numerics.html" title="Part X. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 20. Mutating</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09pr02.html">Prev</a> </td><th width="60%" align="center">Part IX. - Algorithms - -</th><td width="20%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 20. Mutating"><div class="titlepage"><div><div><h2 class="title"><a id="manual.algorithms.mutating"></a>Chapter 20. Mutating</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></div><div class="sect1" title="swap"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="algorithms.mutating.swap"></a><code class="function">swap</code></h2></div></div></div><div class="sect2" title="Specializations"><div class="titlepage"><div><div><h3 class="title"><a id="algorithms.swap.specializations"></a>Specializations</h3></div></div></div><p>If you call <code class="code"> std::swap(x,y); </code> where x and y are standard - containers, then the call will automatically be replaced by a call to - <code class="code"> x.swap(y); </code> instead. - </p><p>This allows member functions of each container class to take over, and - containers' swap functions should have O(1) complexity according to - the standard. (And while "should" allows implementations to - behave otherwise and remain compliant, this implementation does in - fact use constant-time swaps.) This should not be surprising, since - for two containers of the same type to swap contents, only some - internal pointers to storage need to be exchanged. - </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09pr02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="algorithms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part X. - Numerics - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html b/libstdc++-v3/doc/html/manual/bk01pt09pr02.html deleted file mode 100644 index c81bbee976e..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt09pr02.html +++ /dev/null @@ -1,41 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title></title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library , algorithm " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="algorithms.html" title="Part IX. Algorithms" /><link rel="prev" href="algorithms.html" title="Part IX. Algorithms" /><link rel="next" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part IX. - Algorithms - -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h2 class="title"><a id="id638172"></a></h2></div></div></div><p> - The neatest accomplishment of the algorithms chapter is that all the - work is done via iterators, not containers directly. This means two - important things: -</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> - Anything that behaves like an iterator can be used in one of - these algorithms. Raw pointers make great candidates, thus - built-in arrays are fine containers, as well as your own iterators. - </p></li><li class="listitem"><p> - The algorithms do not (and cannot) affect the container as a - whole; only the things between the two iterator endpoints. If - you pass a range of iterators only enclosing the middle third of - a container, then anything outside that range is inviolate. - </p></li></ol></div><p> - Even strings can be fed through the algorithms here, although the - string class has specialized versions of many of these functions - (for example, <code class="code">string::find()</code>). Most of the examples - on this page will use simple arrays of integers as a playground - for algorithms, just to keep things simple. The use of - <span class="emphasis"><em>N</em></span> as a size in the examples is to keep - things easy to read but probably won't be valid code. You can - use wrappers such as those described in the <a class="link" href="containers.html" title="Part VII. Containers">containers chapter</a> to - keep real code readable. - </p><p> - The single thing that trips people up the most is the definition - of <span class="emphasis"><em>range</em></span> used with iterators; the famous - "past-the-end" rule that everybody loves to hate. The - <a class="link" href="iterators.html" title="Part VIII. Iterators">iterators - chapter</a> of this document has a complete explanation of - this simple rule that seems to cause so much confusion. Once you - get <span class="emphasis"><em>range</em></span> into your head (it's not that - hard, honest!), then the algorithms are a cakewalk. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="algorithms.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt09ch20.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IX. - Algorithms - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 20. Mutating</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html b/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html deleted file mode 100644 index 31c37c741cf..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt10ch23s02.html +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>C99</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics_and_c.html" title="Chapter 23. Interacting with C" /><link rel="prev" href="numerics_and_c.html" title="Chapter 23. Interacting with C" /><link rel="next" href="io.html" title="Part XI. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">C99</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><th width="60%" align="center">Chapter 23. Interacting with C</th><td width="20%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="C99"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.c99"></a>C99</h2></div></div></div><p>In addition to the other topics on this page, we'll note here some - of the C99 features that appear in libstdc++. - </p><p>The C99 features depend on the <code class="code">--enable-c99</code> configure flag. - This flag is already on by default, but it can be disabled by the - user. Also, the configuration machinery will disable it if the - necessary support for C99 (e.g., header files) cannot be found. - </p><p>As of GCC 3.0, C99 support includes classification functions - such as <code class="code">isnormal</code>, <code class="code">isgreater</code>, - <code class="code">isnan</code>, etc. - The functions used for 'long long' support such as <code class="code">strtoll</code> - are supported, as is the <code class="code">lldiv_t</code> typedef. Also supported - are the wide character functions using 'long long', like - <code class="code">wcstoll</code>. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics_and_c.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 23. Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part XI. - Input and Output - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html b/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html deleted file mode 100644 index b713ad2ef02..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt11ch25s02.html +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Buffering</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="streambufs.html" title="Chapter 25. Stream Buffers" /><link rel="prev" href="streambufs.html" title="Chapter 25. Stream Buffers" /><link rel="next" href="stringstreams.html" title="Chapter 26. Memory Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Buffering</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 25. Stream Buffers</th><td width="20%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Buffering"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.buffering"></a>Buffering</h2></div></div></div><p>First, are you sure that you understand buffering? Particularly - the fact that C++ may not, in fact, have anything to do with it? - </p><p>The rules for buffering can be a little odd, but they aren't any - different from those of C. (Maybe that's why they can be a bit - odd.) Many people think that writing a newline to an output - stream automatically flushes the output buffer. This is true only - when the output stream is, in fact, a terminal and not a file - or some other device -- and <span class="emphasis"><em>that</em></span> may not even be true - since C++ says nothing about files nor terminals. All of that is - system-dependent. (The "newline-buffer-flushing only occurring - on terminals" thing is mostly true on Unix systems, though.) - </p><p>Some people also believe that sending <code class="code">endl</code> down an - output stream only writes a newline. This is incorrect; after a - newline is written, the buffer is also flushed. Perhaps this - is the effect you want when writing to a screen -- get the text - out as soon as possible, etc -- but the buffering is largely - wasted when doing this to a file: - </p><pre class="programlisting"> - output << "a line of text" << endl; - output << some_data_variable << endl; - output << "another line of text" << endl; </pre><p>The proper thing to do in this case to just write the data out - and let the libraries and the system worry about the buffering. - If you need a newline, just write a newline: - </p><pre class="programlisting"> - output << "a line of text\n" - << some_data_variable << '\n' - << "another line of text\n"; </pre><p>I have also joined the output statements into a single statement. - You could make the code prettier by moving the single newline to - the start of the quoted text on the last line, for example. - </p><p>If you do need to flush the buffer above, you can send an - <code class="code">endl</code> if you also need a newline, or just flush the buffer - yourself: - </p><pre class="programlisting"> - output << ...... << flush; // can use std::flush manipulator - output.flush(); // or call a member fn </pre><p>On the other hand, there are times when writing to a file should - be like writing to standard error; no buffering should be done - because the data needs to appear quickly (a prime example is a - log file for security-related information). The way to do this is - just to turn off the buffering <span class="emphasis"><em>before any I/O operations at - all</em></span> have been done (note that opening counts as an I/O operation): - </p><pre class="programlisting"> - std::ofstream os; - std::ifstream is; - int i; - - os.rdbuf()->pubsetbuf(0,0); - is.rdbuf()->pubsetbuf(0,0); - - os.open("/foo/bar/baz"); - is.open("/qux/quux/quuux"); - ... - os << "this data is written immediately\n"; - is >> i; // and this will probably cause a disk read </pre><p>Since all aspects of buffering are handled by a streambuf-derived - member, it is necessary to get at that member with <code class="code">rdbuf()</code>. - Then the public version of <code class="code">setbuf</code> can be called. The - arguments are the same as those for the Standard C I/O Library - function (a buffer area followed by its size). - </p><p>A great deal of this is implementation-dependent. For example, - <code class="code">streambuf</code> does not specify any actions for its own - <code class="code">setbuf()</code>-ish functions; the classes derived from - <code class="code">streambuf</code> each define behavior that "makes - sense" for that class: an argument of (0,0) turns off buffering - for <code class="code">filebuf</code> but does nothing at all for its siblings - <code class="code">stringbuf</code> and <code class="code">strstreambuf</code>, and specifying - anything other than (0,0) has varying effects. - User-defined classes derived from <code class="code">streambuf</code> can - do whatever they want. (For <code class="code">filebuf</code> and arguments for - <code class="code">(p,s)</code> other than zeros, libstdc++ does what you'd expect: - the first <code class="code">s</code> bytes of <code class="code">p</code> are used as a buffer, - which you must allocate and deallocate.) - </p><p>A last reminder: there are usually more buffers involved than - just those at the language/library level. Kernel buffers, disk - buffers, and the like will also have an effect. Inspecting and - changing those are system-dependent. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="streambufs.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 25. Stream Buffers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 26. Memory Based Streams</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html b/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html deleted file mode 100644 index 4366e8fd8c0..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt11ch27s02.html +++ /dev/null @@ -1,101 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Binary Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="fstreams.html" title="Chapter 27. File Based Streams" /><link rel="prev" href="fstreams.html" title="Chapter 27. File Based Streams" /><link rel="next" href="io_and_c.html" title="Chapter 28. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Binary Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 27. File Based Streams</th><td width="20%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Binary Input and Output"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.binary"></a>Binary Input and Output</h2></div></div></div><p> - </p><p>The first and most important thing to remember about binary I/O is - that opening a file with <code class="code">ios::binary</code> is not, repeat - <span class="emphasis"><em>not</em></span>, the only thing you have to do. It is not a silver - bullet, and will not allow you to use the <code class="code"><</>></code> - operators of the normal fstreams to do binary I/O. - </p><p>Sorry. Them's the breaks. - </p><p>This isn't going to try and be a complete tutorial on reading and - writing binary files (because "binary" - covers a lot of ground), but we will try and clear - up a couple of misconceptions and common errors. - </p><p>First, <code class="code">ios::binary</code> has exactly one defined effect, no more - and no less. Normal text mode has to be concerned with the newline - characters, and the runtime system will translate between (for - example) '\n' and the appropriate end-of-line sequence (LF on Unix, - CRLF on DOS, CR on Macintosh, etc). (There are other things that - normal mode does, but that's the most obvious.) Opening a file in - binary mode disables this conversion, so reading a CRLF sequence - under Windows won't accidentally get mapped to a '\n' character, etc. - Binary mode is not supposed to suddenly give you a bitstream, and - if it is doing so in your program then you've discovered a bug in - your vendor's compiler (or some other part of the C++ implementation, - possibly the runtime system). - </p><p>Second, using <code class="code"><<</code> to write and <code class="code">>></code> to - read isn't going to work with the standard file stream classes, even - if you use <code class="code">skipws</code> during reading. Why not? Because - ifstream and ofstream exist for the purpose of <span class="emphasis"><em>formatting</em></span>, - not reading and writing. Their job is to interpret the data into - text characters, and that's exactly what you don't want to happen - during binary I/O. - </p><p>Third, using the <code class="code">get()</code> and <code class="code">put()/write()</code> member - functions still aren't guaranteed to help you. These are - "unformatted" I/O functions, but still character-based. - (This may or may not be what you want, see below.) - </p><p>Notice how all the problems here are due to the inappropriate use - of <span class="emphasis"><em>formatting</em></span> functions and classes to perform something - which <span class="emphasis"><em>requires</em></span> that formatting not be done? There are a - seemingly infinite number of solutions, and a few are listed here: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="quote">“<span class="quote">Derive your own fstream-type classes and write your own - <</>> operators to do binary I/O on whatever data - types you're using.</span>”</span> - </p><p> - This is a Bad Thing, because while - the compiler would probably be just fine with it, other humans - are going to be confused. The overloaded bitshift operators - have a well-defined meaning (formatting), and this breaks it. - </p></li><li class="listitem"><p> - <span class="quote">“<span class="quote">Build the file structure in memory, then - <code class="code">mmap()</code> the file and copy the - structure. - </span>”</span> - </p><p> - Well, this is easy to make work, and easy to break, and is - pretty equivalent to using <code class="code">::read()</code> and - <code class="code">::write()</code> directly, and makes no use of the - iostream library at all... - </p></li><li class="listitem"><p> - <span class="quote">“<span class="quote">Use streambufs, that's what they're there for.</span>”</span> - </p><p> - While not trivial for the beginner, this is the best of all - solutions. The streambuf/filebuf layer is the layer that is - responsible for actual I/O. If you want to use the C++ - library for binary I/O, this is where you start. - </p></li></ul></div><p>How to go about using streambufs is a bit beyond the scope of this - document (at least for now), but while streambufs go a long way, - they still leave a couple of things up to you, the programmer. - As an example, byte ordering is completely between you and the - operating system, and you have to handle it yourself. - </p><p>Deriving a streambuf or filebuf - class from the standard ones, one that is specific to your data - types (or an abstraction thereof) is probably a good idea, and - lots of examples exist in journals and on Usenet. Using the - standard filebufs directly (either by declaring your own or by - using the pointer returned from an fstream's <code class="code">rdbuf()</code>) - is certainly feasible as well. - </p><p>One area that causes problems is trying to do bit-by-bit operations - with filebufs. C++ is no different from C in this respect: I/O - must be done at the byte level. If you're trying to read or write - a few bits at a time, you're going about it the wrong way. You - must read/write an integral number of bytes and then process the - bytes. (For example, the streambuf functions take and return - variables of type <code class="code">int_type</code>.) - </p><p>Another area of problems is opening text files in binary mode. - Generally, binary mode is intended for binary files, and opening - text files in binary mode means that you now have to deal with all of - those end-of-line and end-of-file problems that we mentioned before. - </p><p> - An instructive thread from comp.lang.c++.moderated delved off into - this topic starting more or less at - <a class="ulink" href="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d" target="_top">this</a> - post and continuing to the end of the thread. (The subject heading is "binary iostreams" on both comp.std.c++ - and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl. - </p><p>Briefly, the problems of byte ordering and type sizes mean that - the unformatted functions like <code class="code">ostream::put()</code> and - <code class="code">istream::get()</code> cannot safely be used to communicate - between arbitrary programs, or across a network, or from one - invocation of a program to another invocation of the same program - on a different platform, etc. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="fstreams.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 27. File Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 28. Interacting with C</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html b/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html deleted file mode 100644 index 69fa0f12ec1..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt11ch28s02.html +++ /dev/null @@ -1,49 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Performance</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io_and_c.html" title="Chapter 28. Interacting with C" /><link rel="prev" href="io_and_c.html" title="Chapter 28. Interacting with C" /><link rel="next" href="extensions.html" title="Part XII. Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Performance</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><th width="60%" align="center">Chapter 28. Interacting with C</th><td width="20%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Performance"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.sync"></a>Performance</h2></div></div></div><p> - Pathetic Performance? Ditch C. - </p><p>It sounds like a flame on C, but it isn't. Really. Calm down. - I'm just saying it to get your attention. - </p><p>Because the C++ library includes the C library, both C-style and - C++-style I/O have to work at the same time. For example: - </p><pre class="programlisting"> - #include <iostream> - #include <cstdio> - - std::cout << "Hel"; - std::printf ("lo, worl"); - std::cout << "d!\n"; - </pre><p>This must do what you think it does. - </p><p>Alert members of the audience will immediately notice that buffering - is going to make a hash of the output unless special steps are taken. - </p><p>The special steps taken by libstdc++, at least for version 3.0, - involve doing very little buffering for the standard streams, leaving - most of the buffering to the underlying C library. (This kind of - thing is tricky to get right.) - The upside is that correctness is ensured. The downside is that - writing through <code class="code">cout</code> can quite easily lead to awful - performance when the C++ I/O library is layered on top of the C I/O - library (as it is for 3.0 by default). Some patches have been applied - which improve the situation for 3.1. - </p><p>However, the C and C++ standard streams only need to be kept in sync - when both libraries' facilities are in use. If your program only uses - C++ I/O, then there's no need to sync with the C streams. The right - thing to do in this case is to call - </p><pre class="programlisting"> - #include <span class="emphasis"><em>any of the I/O headers such as ios, iostream, etc</em></span> - - std::ios::sync_with_stdio(false); - </pre><p>You must do this before performing any I/O via the C++ stream objects. - Once you call this, the C++ streams will operate independently of the - (unused) C streams. For GCC 3.x, this means that <code class="code">cout</code> and - company will become fully buffered on their own. - </p><p>Note, by the way, that the synchronization requirement only applies to - the standard streams (<code class="code">cin</code>, <code class="code">cout</code>, - <code class="code">cerr</code>, - <code class="code">clog</code>, and their wide-character counterparts). File stream - objects that you declare yourself have no such requirement and are fully - buffered. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io_and_c.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 28. Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part XII. - Extensions - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html b/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html deleted file mode 100644 index 2d56fc66378..00000000000 --- a/libstdc++-v3/doc/html/manual/bk01pt12ch30s03.html +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Using</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="debug_mode.html" title="Chapter 30. Debug Mode" /><link rel="prev" href="bk01pt12ch30s02.html" title="Semantics" /><link rel="next" href="bk01pt12ch30s04.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Using</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch30s02.html">Prev</a> </td><th width="60%" align="center">Chapter 30. Debug Mode</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch30s04.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Using"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.using"></a>Using</h2></div></div></div><p> - </p><div class="sect2" title="Using the Debug Mode"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.using.mode"></a>Using the Debug Mode</h3></div></div></div><p>To use the libstdc++ debug mode, compile your application with the - compiler flag <code class="code">-D_GLIBCXX_DEBUG</code>. Note that this flag - changes the sizes and behavior of standard class templates such - as <code class="code">std::vector</code>, and therefore you can only link code - compiled with debug mode and code compiled without debug mode if no - instantiation of a container is passed between the two translation - units.</p><p>By default, error messages are formatted to fit on lines of about - 78 characters. The environment variable - <code class="code">GLIBCXX_DEBUG_MESSAGE_LENGTH</code> can be used to request a - different length.</p></div><div class="sect2" title="Using a Specific Debug Container"><div class="titlepage"><div><div><h3 class="title"><a id="debug_mode.using.specific"></a>Using a Specific Debug Container</h3></div></div></div><p>When it is not feasible to recompile your entire application, or - only specific containers need checking, debugging containers are - available as GNU extensions. These debugging containers are - functionally equivalent to the standard drop-in containers used in - debug mode, but they are available in a separate namespace as GNU - extensions and may be used in programs compiled with either release - mode or with debug mode. The - following table provides the names and headers of the debugging - containers: -</p><div class="table"><a id="id705570"></a><p class="title"><b>Table 30.1. Debugging Containers</b></p><div class="table-contents"><table summary="Debugging Containers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::bitset</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="classname">__gnu_debug::bitset</code></td><td align="left"><code class="filename">bitset</code></td></tr><tr><td align="left"><code class="classname">std::deque</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="classname">__gnu_debug::deque</code></td><td align="left"><code class="filename">deque</code></td></tr><tr><td align="left"><code class="classname">std::list</code></td><td align="left"><code class="filename">list</code></td><td align="left"><code class="classname">__gnu_debug::list</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="classname">std::map</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::map</code></td><td align="left"><code class="filename">map</code></td></tr><tr><td align="left"><code class="classname">std::multimap</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="classname">__gnu_debug::multimap</code></td><td align="left"><code class="filename">map</code></td></tr><tr><td align="left"><code class="classname">std::multiset</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::multiset</code></td><td align="left"><code class="filename">set</code></td></tr><tr><td align="left"><code class="classname">std::set</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="classname">__gnu_debug::set</code></td><td align="left"><code class="filename">set</code></td></tr><tr><td align="left"><code class="classname">std::string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::string</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::wstring</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::wstring</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::basic_string</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="classname">__gnu_debug::basic_string</code></td><td align="left"><code class="filename">string</code></td></tr><tr><td align="left"><code class="classname">std::vector</code></td><td align="left"><code class="filename">vector</code></td><td align="left"><code class="classname">__gnu_debug::vector</code></td><td align="left"><code class="filename">vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p>In addition, when compiling in C++0x mode, these additional -containers have additional debug capability. -</p><div class="table"><a id="id607020"></a><p class="title"><b>Table 30.2. Debugging Containers C++0x</b></p><div class="table-contents"><table summary="Debugging Containers C++0x" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Container</th><th align="left">Header</th><th align="left">Debug container</th><th align="left">Debug header</th></tr></thead><tbody><tr><td align="left"><code class="classname">std::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_map</code></td><td align="left"><code class="filename">unordered_map</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multimap</code></td><td align="left"><code class="filename">unordered_map</code></td></tr><tr><td align="left"><code class="classname">std::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_set</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="classname">std::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td><td align="left"><code class="classname">__gnu_debug::unordered_multiset</code></td><td align="left"><code class="filename">unordered_set</code></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="debug_mode.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Semantics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/bugs.html b/libstdc++-v3/doc/html/manual/bugs.html index 20da4a8fbf4..88ec80cabb2 100644 --- a/libstdc++-v3/doc/html/manual/bugs.html +++ b/libstdc++-v3/doc/html/manual/bugs.html @@ -36,317 +36,317 @@ of style. Note that we usually do not make changes to the code until an issue has reached <a class="ulink" href="../ext/lwg-active.html#DR" target="_top">DR</a> status. </p><div class="variablelist"><dl><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#5" target="_top">5</a>: - <span class="emphasis"><em>string::compare specification questionable</em></span> + <span class="emphasis"><em>string::compare specification questionable</em></span> </span></dt><dd><p>This should be two overloaded functions rather than a single function. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#17" target="_top">17</a>: - <span class="emphasis"><em>Bad bool parsing</em></span> + <span class="emphasis"><em>Bad bool parsing</em></span> </span></dt><dd><p>Apparently extracting Boolean values was messed up... </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#19" target="_top">19</a>: - <span class="emphasis"><em>"Noconv" definition too vague</em></span> + <span class="emphasis"><em>"Noconv" definition too vague</em></span> </span></dt><dd><p>If <code class="code">codecvt::do_in</code> returns <code class="code">noconv</code> there are - no changes to the values in <code class="code">[to, to_limit)</code>. + no changes to the values in <code class="code">[to, to_limit)</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#22" target="_top">22</a>: - <span class="emphasis"><em>Member open vs flags</em></span> + <span class="emphasis"><em>Member open vs flags</em></span> </span></dt><dd><p>Re-opening a file stream does <span class="emphasis"><em>not</em></span> clear the state flags. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#23" target="_top">23</a>: - <span class="emphasis"><em>Num_get overflow result</em></span> + <span class="emphasis"><em>Num_get overflow result</em></span> </span></dt><dd><p>Implement the proposed resolution. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#25" target="_top">25</a>: - <span class="emphasis"><em>String operator<< uses width() value wrong</em></span> + <span class="emphasis"><em>String operator<< uses width() value wrong</em></span> </span></dt><dd><p>Padding issues. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#48" target="_top">48</a>: - <span class="emphasis"><em>Use of non-existent exception constructor</em></span> + <span class="emphasis"><em>Use of non-existent exception constructor</em></span> </span></dt><dd><p>An instance of <code class="code">ios_base::failure</code> is constructed instead. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#49" target="_top">49</a>: - <span class="emphasis"><em>Underspecification of ios_base::sync_with_stdio</em></span> + <span class="emphasis"><em>Underspecification of ios_base::sync_with_stdio</em></span> </span></dt><dd><p>The return type is the <span class="emphasis"><em>previous</em></span> state of synchronization. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#50" target="_top">50</a>: - <span class="emphasis"><em>Copy constructor and assignment operator of ios_base</em></span> + <span class="emphasis"><em>Copy constructor and assignment operator of ios_base</em></span> </span></dt><dd><p>These members functions are declared <code class="code">private</code> and are - thus inaccessible. Specifying the correct semantics of - "copying stream state" was deemed too complicated. + thus inaccessible. Specifying the correct semantics of + "copying stream state" was deemed too complicated. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#60" target="_top">60</a>: - <span class="emphasis"><em>What is a formatted input function?</em></span> + <span class="emphasis"><em>What is a formatted input function?</em></span> </span></dt><dd><p>This DR made many widespread changes to <code class="code">basic_istream</code> - and <code class="code">basic_ostream</code> all of which have been implemented. + and <code class="code">basic_ostream</code> all of which have been implemented. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#63" target="_top">63</a>: - <span class="emphasis"><em>Exception-handling policy for unformatted output</em></span> + <span class="emphasis"><em>Exception-handling policy for unformatted output</em></span> </span></dt><dd><p>Make the policy consistent with that of formatted input, unformatted - input, and formatted output. + input, and formatted output. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#68" target="_top">68</a>: - <span class="emphasis"><em>Extractors for char* should store null at end</em></span> + <span class="emphasis"><em>Extractors for char* should store null at end</em></span> </span></dt><dd><p>And they do now. An editing glitch in the last item in the list of - [27.6.1.2.3]/7. + [27.6.1.2.3]/7. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#74" target="_top">74</a>: - <span class="emphasis"><em>Garbled text for codecvt::do_max_length</em></span> + <span class="emphasis"><em>Garbled text for codecvt::do_max_length</em></span> </span></dt><dd><p>The text of the standard was gibberish. Typos gone rampant. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#75" target="_top">75</a>: - <span class="emphasis"><em>Contradiction in codecvt::length's argument types</em></span> + <span class="emphasis"><em>Contradiction in codecvt::length's argument types</em></span> </span></dt><dd><p>Change the first parameter to <code class="code">stateT&</code> and implement - the new effects paragraph. + the new effects paragraph. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#83" target="_top">83</a>: - <span class="emphasis"><em>string::npos vs. string::max_size()</em></span> + <span class="emphasis"><em>string::npos vs. string::max_size()</em></span> </span></dt><dd><p>Safety checks on the size of the string should test against - <code class="code">max_size()</code> rather than <code class="code">npos</code>. + <code class="code">max_size()</code> rather than <code class="code">npos</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#90" target="_top">90</a>: - <span class="emphasis"><em>Incorrect description of operator>> for strings</em></span> + <span class="emphasis"><em>Incorrect description of operator>> for strings</em></span> </span></dt><dd><p>The effect contain <code class="code">isspace(c,getloc())</code> which must be - replaced by <code class="code">isspace(c,is.getloc())</code>. + replaced by <code class="code">isspace(c,is.getloc())</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#91" target="_top">91</a>: - <span class="emphasis"><em>Description of operator>> and getline() for string<> + <span class="emphasis"><em>Description of operator>> and getline() for string<> might cause endless loop</em></span> </span></dt><dd><p>They behave as a formatted input function and as an unformatted - input function, respectively (except that <code class="code">getline</code> is + input function, respectively (except that <code class="code">getline</code> is not required to set <code class="code">gcount</code>). </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#103" target="_top">103</a>: - <span class="emphasis"><em>set::iterator is required to be modifiable, but this allows + <span class="emphasis"><em>set::iterator is required to be modifiable, but this allows modification of keys.</em></span> </span></dt><dd><p>For associative containers where the value type is the same as - the key type, both <code class="code">iterator</code> and <code class="code">const_iterator + the key type, both <code class="code">iterator</code> and <code class="code">const_iterator </code> are constant iterators. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#109" target="_top">109</a>: - <span class="emphasis"><em>Missing binders for non-const sequence elements</em></span> + <span class="emphasis"><em>Missing binders for non-const sequence elements</em></span> </span></dt><dd><p>The <code class="code">binder1st</code> and <code class="code">binder2nd</code> didn't have an - <code class="code">operator()</code> taking a non-const parameter. + <code class="code">operator()</code> taking a non-const parameter. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#110" target="_top">110</a>: - <span class="emphasis"><em>istreambuf_iterator::equal not const</em></span> + <span class="emphasis"><em>istreambuf_iterator::equal not const</em></span> </span></dt><dd><p>This was not a const member function. Note that the DR says to - replace the function with a const one; we have instead provided an - overloaded version with identical contents. + replace the function with a const one; we have instead provided an + overloaded version with identical contents. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#117" target="_top">117</a>: - <span class="emphasis"><em>basic_ostream uses nonexistent num_put member functions</em></span> + <span class="emphasis"><em>basic_ostream uses nonexistent num_put member functions</em></span> </span></dt><dd><p><code class="code">num_put::put()</code> was overloaded on the wrong types. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#118" target="_top">118</a>: - <span class="emphasis"><em>basic_istream uses nonexistent num_get member functions</em></span> + <span class="emphasis"><em>basic_istream uses nonexistent num_get member functions</em></span> </span></dt><dd><p>Same as 117, but for <code class="code">num_get::get()</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#129" target="_top">129</a>: - <span class="emphasis"><em>Need error indication from seekp() and seekg()</em></span> + <span class="emphasis"><em>Need error indication from seekp() and seekg()</em></span> </span></dt><dd><p>These functions set <code class="code">failbit</code> on error now. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#130" target="_top">130</a>: - <span class="emphasis"><em>Return type of container::erase(iterator) differs for associative containers</em></span> - </span></dt><dd><p>Make member <code class="code">erase</code> return iterator for <code class="code">set</code>, <code class="code">multiset</code>, <code class="code">map</code>, <code class="code">multimap</code>. + <span class="emphasis"><em>Return type of container::erase(iterator) differs for associative containers</em></span> + </span></dt><dd><p>Make member <code class="code">erase</code> return iterator for <code class="code">set</code>, <code class="code">multiset</code>, <code class="code">map</code>, <code class="code">multimap</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#136" target="_top">136</a>: - <span class="emphasis"><em>seekp, seekg setting wrong streams?</em></span> + <span class="emphasis"><em>seekp, seekg setting wrong streams?</em></span> </span></dt><dd><p><code class="code">seekp</code> should only set the output stream, and - <code class="code">seekg</code> should only set the input stream. + <code class="code">seekg</code> should only set the input stream. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#167" target="_top">167</a>: - <span class="emphasis"><em>Improper use of traits_type::length()</em></span> + <span class="emphasis"><em>Improper use of traits_type::length()</em></span> </span></dt><dd><p><code class="code">op<<</code> with a <code class="code">const char*</code> was - calculating an incorrect number of characters to write. + calculating an incorrect number of characters to write. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#169" target="_top">169</a>: - <span class="emphasis"><em>Bad efficiency of overflow() mandated</em></span> + <span class="emphasis"><em>Bad efficiency of overflow() mandated</em></span> </span></dt><dd><p>Grow efficiently the internal array object. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#171" target="_top">171</a>: - <span class="emphasis"><em>Strange seekpos() semantics due to joint position</em></span> + <span class="emphasis"><em>Strange seekpos() semantics due to joint position</em></span> </span></dt><dd><p>Quite complex to summarize... </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#181" target="_top">181</a>: - <span class="emphasis"><em>make_pair() unintended behavior</em></span> + <span class="emphasis"><em>make_pair() unintended behavior</em></span> </span></dt><dd><p>This function used to take its arguments as reference-to-const, now - it copies them (pass by value). + it copies them (pass by value). </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#195" target="_top">195</a>: - <span class="emphasis"><em>Should basic_istream::sentry's constructor ever set eofbit?</em></span> + <span class="emphasis"><em>Should basic_istream::sentry's constructor ever set eofbit?</em></span> </span></dt><dd><p>Yes, it can, specifically if EOF is reached while skipping whitespace. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#211" target="_top">211</a>: - <span class="emphasis"><em>operator>>(istream&, string&) doesn't set failbit</em></span> + <span class="emphasis"><em>operator>>(istream&, string&) doesn't set failbit</em></span> </span></dt><dd><p>If nothing is extracted into the string, <code class="code">op>></code> now - sets <code class="code">failbit</code> (which can cause an exception, etc., etc.). + sets <code class="code">failbit</code> (which can cause an exception, etc., etc.). </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#214" target="_top">214</a>: - <span class="emphasis"><em>set::find() missing const overload</em></span> + <span class="emphasis"><em>set::find() missing const overload</em></span> </span></dt><dd><p>Both <code class="code">set</code> and <code class="code">multiset</code> were missing - overloaded find, lower_bound, upper_bound, and equal_range functions - for const instances. + overloaded find, lower_bound, upper_bound, and equal_range functions + for const instances. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#231" target="_top">231</a>: - <span class="emphasis"><em>Precision in iostream?</em></span> + <span class="emphasis"><em>Precision in iostream?</em></span> </span></dt><dd><p>For conversion from a floating-point type, <code class="code">str.precision()</code> - is specified in the conversion specification. + is specified in the conversion specification. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#233" target="_top">233</a>: - <span class="emphasis"><em>Insertion hints in associative containers</em></span> + <span class="emphasis"><em>Insertion hints in associative containers</em></span> </span></dt><dd><p>Implement N1780, first check before then check after, insert as close - to hint as possible. + to hint as possible. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#235" target="_top">235</a>: - <span class="emphasis"><em>No specification of default ctor for reverse_iterator</em></span> + <span class="emphasis"><em>No specification of default ctor for reverse_iterator</em></span> </span></dt><dd><p>The declaration of <code class="code">reverse_iterator</code> lists a default constructor. - However, no specification is given what this constructor should do. + However, no specification is given what this constructor should do. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#241" target="_top">241</a>: - <span class="emphasis"><em>Does unique_copy() require CopyConstructible and Assignable?</em></span> + <span class="emphasis"><em>Does unique_copy() require CopyConstructible and Assignable?</em></span> </span></dt><dd><p>Add a helper for forward_iterator/output_iterator, fix the existing - one for input_iterator/output_iterator to not rely on Assignability. + one for input_iterator/output_iterator to not rely on Assignability. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#243" target="_top">243</a>: - <span class="emphasis"><em>get and getline when sentry reports failure</em></span> + <span class="emphasis"><em>get and getline when sentry reports failure</em></span> </span></dt><dd><p>Store a null character only if the character array has a non-zero size. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#251" target="_top">251</a>: - <span class="emphasis"><em>basic_stringbuf missing allocator_type</em></span> + <span class="emphasis"><em>basic_stringbuf missing allocator_type</em></span> </span></dt><dd><p>This nested typedef was originally not specified. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#253" target="_top">253</a>: - <span class="emphasis"><em>valarray helper functions are almost entirely useless</em></span> + <span class="emphasis"><em>valarray helper functions are almost entirely useless</em></span> </span></dt><dd><p>Make the copy constructor and copy-assignment operator declarations - public in gslice_array, indirect_array, mask_array, slice_array; provide + public in gslice_array, indirect_array, mask_array, slice_array; provide definitions. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#265" target="_top">265</a>: - <span class="emphasis"><em>std::pair::pair() effects overly restrictive</em></span> + <span class="emphasis"><em>std::pair::pair() effects overly restrictive</em></span> </span></dt><dd><p>The default ctor would build its members from copies of temporaries; - now it simply uses their respective default ctors. + now it simply uses their respective default ctors. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#266" target="_top">266</a>: - <span class="emphasis"><em>bad_exception::~bad_exception() missing Effects clause</em></span> + <span class="emphasis"><em>bad_exception::~bad_exception() missing Effects clause</em></span> </span></dt><dd><p>The <code class="code">bad_</code>* classes no longer have destructors (they - are trivial), since no description of them was ever given. + are trivial), since no description of them was ever given. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#271" target="_top">271</a>: - <span class="emphasis"><em>basic_iostream missing typedefs</em></span> + <span class="emphasis"><em>basic_iostream missing typedefs</em></span> </span></dt><dd><p>The typedefs it inherits from its base classes can't be used, since - (for example) <code class="code">basic_iostream<T>::traits_type</code> is ambiguous. + (for example) <code class="code">basic_iostream<T>::traits_type</code> is ambiguous. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#275" target="_top">275</a>: - <span class="emphasis"><em>Wrong type in num_get::get() overloads</em></span> + <span class="emphasis"><em>Wrong type in num_get::get() overloads</em></span> </span></dt><dd><p>Similar to 118. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#280" target="_top">280</a>: - <span class="emphasis"><em>Comparison of reverse_iterator to const reverse_iterator</em></span> + <span class="emphasis"><em>Comparison of reverse_iterator to const reverse_iterator</em></span> </span></dt><dd><p>Add global functions with two template parameters. - (NB: not added for now a templated assignment operator) + (NB: not added for now a templated assignment operator) </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#292" target="_top">292</a>: - <span class="emphasis"><em>Effects of a.copyfmt (a)</em></span> + <span class="emphasis"><em>Effects of a.copyfmt (a)</em></span> </span></dt><dd><p>If <code class="code">(this == &rhs)</code> do nothing. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#300" target="_top">300</a>: - <span class="emphasis"><em>List::merge() specification incomplete</em></span> + <span class="emphasis"><em>List::merge() specification incomplete</em></span> </span></dt><dd><p>If <code class="code">(this == &x)</code> do nothing. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#303" target="_top">303</a>: - <span class="emphasis"><em>Bitset input operator underspecified</em></span> - </span></dt><dd><p>Basically, compare the input character to - <code class="code">is.widen(0)</code> and <code class="code">is.widen(1)</code>. + <span class="emphasis"><em>Bitset input operator underspecified</em></span> + </span></dt><dd><p>Basically, compare the input character to + <code class="code">is.widen(0)</code> and <code class="code">is.widen(1)</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#305" target="_top">305</a>: - <span class="emphasis"><em>Default behavior of codecvt<wchar_t, char, - mbstate_t>::length()</em></span> - </span></dt><dd><p>Do not specify what <code class="code">codecvt<wchar_t, char, - mbstate_t>::do_length</code> must return. + <span class="emphasis"><em>Default behavior of codecvt<wchar_t, char, + mbstate_t>::length()</em></span> + </span></dt><dd><p>Do not specify what <code class="code">codecvt<wchar_t, char, + mbstate_t>::do_length</code> must return. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#328" target="_top">328</a>: - <span class="emphasis"><em>Bad sprintf format modifier in - money_put<>::do_put()</em></span> + <span class="emphasis"><em>Bad sprintf format modifier in + money_put<>::do_put()</em></span> </span></dt><dd><p>Change the format string to "%.0Lf". </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#365" target="_top">365</a>: - <span class="emphasis"><em>Lack of const-qualification in clause 27</em></span> + <span class="emphasis"><em>Lack of const-qualification in clause 27</em></span> </span></dt><dd><p>Add const overloads of <code class="code">is_open</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#387" target="_top">387</a>: - <span class="emphasis"><em>std::complex over-encapsulated</em></span> + <span class="emphasis"><em>std::complex over-encapsulated</em></span> </span></dt><dd><p>Add the <code class="code">real(T)</code> and <code class="code">imag(T)</code> - members; in C++0x mode, also adjust the existing - <code class="code">real()</code> and <code class="code">imag()</code> members and - free functions. + members; in C++0x mode, also adjust the existing + <code class="code">real()</code> and <code class="code">imag()</code> members and + free functions. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#389" target="_top">389</a>: - <span class="emphasis"><em>Const overload of valarray::operator[] returns - by value</em></span> + <span class="emphasis"><em>Const overload of valarray::operator[] returns + by value</em></span> </span></dt><dd><p>Change it to return a <code class="code">const T&</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#396" target="_top">396</a>: - <span class="emphasis"><em>what are characters zero and one</em></span> + <span class="emphasis"><em>what are characters zero and one</em></span> </span></dt><dd><p>Implement the proposed resolution. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#402" target="_top">402</a>: - <span class="emphasis"><em>Wrong new expression in [some_]allocator::construct</em></span> + <span class="emphasis"><em>Wrong new expression in [some_]allocator::construct</em></span> </span></dt><dd><p>Replace "new" with "::new". </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#408" target="_top">408</a>: - <span class="emphasis"><em> - Is vector<reverse_iterator<char*> > forbidden? - </em></span> + <span class="emphasis"><em> + Is vector<reverse_iterator<char*> > forbidden? + </em></span> </span></dt><dd><p>Tweak the debug-mode checks in _Safe_iterator. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#409" target="_top">409</a>: - <span class="emphasis"><em>Closing an fstream should clear the error state</em></span> + <span class="emphasis"><em>Closing an fstream should clear the error state</em></span> </span></dt><dd><p>Have <code class="code">open</code> clear the error flags. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-closed.html#431" target="_top">431</a>: - <span class="emphasis"><em>Swapping containers with unequal allocators</em></span> + <span class="emphasis"><em>Swapping containers with unequal allocators</em></span> </span></dt><dd><p>Implement Option 3, as per N1599. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#432" target="_top">432</a>: - <span class="emphasis"><em>stringbuf::overflow() makes only one write position + <span class="emphasis"><em>stringbuf::overflow() makes only one write position available</em></span> </span></dt><dd><p>Implement the resolution, beyond DR 169. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#434" target="_top">434</a>: - <span class="emphasis"><em>bitset::to_string() hard to use</em></span> + <span class="emphasis"><em>bitset::to_string() hard to use</em></span> </span></dt><dd><p>Add three overloads, taking fewer template arguments. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#438" target="_top">438</a>: - <span class="emphasis"><em>Ambiguity in the "do the right thing" clause</em></span> + <span class="emphasis"><em>Ambiguity in the "do the right thing" clause</em></span> </span></dt><dd><p>Implement the resolution, basically cast less. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#453" target="_top">453</a>: - <span class="emphasis"><em>basic_stringbuf::seekoff need not always fail for an empty stream</em></span> + <span class="emphasis"><em>basic_stringbuf::seekoff need not always fail for an empty stream</em></span> </span></dt><dd><p>Don't fail if the next pointer is null and newoff is zero. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#455" target="_top">455</a>: - <span class="emphasis"><em>cerr::tie() and wcerr::tie() are overspecified</em></span> + <span class="emphasis"><em>cerr::tie() and wcerr::tie() are overspecified</em></span> </span></dt><dd><p>Initialize cerr tied to cout and wcerr tied to wcout. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#464" target="_top">464</a>: - <span class="emphasis"><em>Suggestion for new member functions in standard containers</em></span> + <span class="emphasis"><em>Suggestion for new member functions in standard containers</em></span> </span></dt><dd><p>Add <code class="code">data()</code> to <code class="code">std::vector</code> and - <code class="code">at(const key_type&)</code> to <code class="code">std::map</code>. + <code class="code">at(const key_type&)</code> to <code class="code">std::map</code>. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#508" target="_top">508</a>: - <span class="emphasis"><em>Bad parameters for ranlux64_base_01</em></span> + <span class="emphasis"><em>Bad parameters for ranlux64_base_01</em></span> </span></dt><dd><p>Fix the parameters. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-closed.html#512" target="_top">512</a>: - <span class="emphasis"><em>Seeding subtract_with_carry_01 from a single unsigned long</em></span> + <span class="emphasis"><em>Seeding subtract_with_carry_01 from a single unsigned long</em></span> </span></dt><dd><p>Construct a <code class="code">linear_congruential</code> engine and seed with it. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-closed.html#526" target="_top">526</a>: - <span class="emphasis"><em>Is it undefined if a function in the standard changes in + <span class="emphasis"><em>Is it undefined if a function in the standard changes in parameters?</em></span> </span></dt><dd><p>Use &value. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#538" target="_top">538</a>: - <span class="emphasis"><em>241 again: Does unique_copy() require CopyConstructible + <span class="emphasis"><em>241 again: Does unique_copy() require CopyConstructible and Assignable?</em></span> </span></dt><dd><p>In case of input_iterator/output_iterator rely on Assignability of - input_iterator' value_type. + input_iterator' value_type. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#539" target="_top">539</a>: - <span class="emphasis"><em>partial_sum and adjacent_difference should mention - requirements</em></span> + <span class="emphasis"><em>partial_sum and adjacent_difference should mention + requirements</em></span> </span></dt><dd><p>We were almost doing the right thing, just use std::move - in adjacent_difference. + in adjacent_difference. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#541" target="_top">541</a>: - <span class="emphasis"><em>shared_ptr template assignment and void</em></span> + <span class="emphasis"><em>shared_ptr template assignment and void</em></span> </span></dt><dd><p>Add an auto_ptr<void> specialization. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#543" target="_top">543</a>: - <span class="emphasis"><em>valarray slice default constructor</em></span> + <span class="emphasis"><em>valarray slice default constructor</em></span> </span></dt><dd><p>Follow the straightforward proposed resolution. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#550" target="_top">550</a>: - <span class="emphasis"><em>What should the return type of pow(float,int) be?</em></span> + <span class="emphasis"><em>What should the return type of pow(float,int) be?</em></span> </span></dt><dd><p>In C++0x mode, remove the pow(float,int), etc., signatures. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#586" target="_top">586</a>: - <span class="emphasis"><em>string inserter not a formatted function</em></span> + <span class="emphasis"><em>string inserter not a formatted function</em></span> </span></dt><dd><p>Change it to be a formatted output function (i.e. catch exceptions). </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#596" target="_top">596</a>: - <span class="emphasis"><em>27.8.1.3 Table 112 omits "a+" and "a+b" modes</em></span> + <span class="emphasis"><em>27.8.1.3 Table 112 omits "a+" and "a+b" modes</em></span> </span></dt><dd><p>Add the missing modes to fopen_mode. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#630" target="_top">630</a>: - <span class="emphasis"><em>arrays of valarray</em></span> + <span class="emphasis"><em>arrays of valarray</em></span> </span></dt><dd><p>Implement the simple resolution. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#660" target="_top">660</a>: - <span class="emphasis"><em>Missing bitwise operations</em></span> + <span class="emphasis"><em>Missing bitwise operations</em></span> </span></dt><dd><p>Add the missing operations. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#691" target="_top">691</a>: - <span class="emphasis"><em>const_local_iterator cbegin, cend missing from TR1</em></span> + <span class="emphasis"><em>const_local_iterator cbegin, cend missing from TR1</em></span> </span></dt><dd><p>In C++0x mode add cbegin(size_type) and cend(size_type) - to the unordered containers. + to the unordered containers. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#693" target="_top">693</a>: - <span class="emphasis"><em>std::bitset::all() missing</em></span> + <span class="emphasis"><em>std::bitset::all() missing</em></span> </span></dt><dd><p>Add it, consistently with the discussion. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#695" target="_top">695</a>: - <span class="emphasis"><em>ctype<char>::classic_table() not accessible</em></span> + <span class="emphasis"><em>ctype<char>::classic_table() not accessible</em></span> </span></dt><dd><p>Make the member functions table and classic_table public. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#696" target="_top">696</a>: - <span class="emphasis"><em>istream::operator>>(int&) broken</em></span> + <span class="emphasis"><em>istream::operator>>(int&) broken</em></span> </span></dt><dd><p>Implement the straightforward resolution. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#761" target="_top">761</a>: - <span class="emphasis"><em>unordered_map needs an at() member function</em></span> + <span class="emphasis"><em>unordered_map needs an at() member function</em></span> </span></dt><dd><p>In C++0x mode, add at() and at() const. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#775" target="_top">775</a>: - <span class="emphasis"><em>Tuple indexing should be unsigned?</em></span> + <span class="emphasis"><em>Tuple indexing should be unsigned?</em></span> </span></dt><dd><p>Implement the int -> size_t replacements. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#776" target="_top">776</a>: - <span class="emphasis"><em>Undescribed assign function of std::array</em></span> + <span class="emphasis"><em>Undescribed assign function of std::array</em></span> </span></dt><dd><p>In C++0x mode, remove assign, add fill. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#781" target="_top">781</a>: - <span class="emphasis"><em>std::complex should add missing C99 functions</em></span> + <span class="emphasis"><em>std::complex should add missing C99 functions</em></span> </span></dt><dd><p>In C++0x mode, add std::proj. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#809" target="_top">809</a>: - <span class="emphasis"><em>std::swap should be overloaded for array types</em></span> + <span class="emphasis"><em>std::swap should be overloaded for array types</em></span> </span></dt><dd><p>Add the overload. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#844" target="_top">844</a>: - <span class="emphasis"><em>complex pow return type is ambiguous</em></span> + <span class="emphasis"><em>complex pow return type is ambiguous</em></span> </span></dt><dd><p>In C++0x mode, remove the pow(complex<T>, int) signature. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-defects.html#853" target="_top">853</a>: - <span class="emphasis"><em>to_string needs updating with zero and one</em></span> + <span class="emphasis"><em>to_string needs updating with zero and one</em></span> </span></dt><dd><p>Update / add the signatures. </p></dd><dt><span class="term"><a class="ulink" href="../ext/lwg-active.html#865" target="_top">865</a>: - <span class="emphasis"><em>More algorithms that throw away information</em></span> + <span class="emphasis"><em>More algorithms that throw away information</em></span> </span></dt><dd><p>The traditional HP / SGI return type and value is blessed - by the resolution of the DR. + by the resolution of the DR. </p></dd></dl></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="license.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="status.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="setup.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">License </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Setup</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/codecvt.html b/libstdc++-v3/doc/html/manual/codecvt.html deleted file mode 100644 index 1e45a2582cb..00000000000 --- a/libstdc++-v3/doc/html/manual/codecvt.html +++ /dev/null @@ -1,379 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>codecvt</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , codecvt " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="facets.html" title="Chapter 15. Facets aka Categories" /><link rel="prev" href="facets.html" title="Chapter 15. Facets aka Categories" /><link rel="next" href="messages.html" title="messages" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">codecvt</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Facets aka Categories</th><td width="20%" align="right"> <a accesskey="n" href="messages.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="codecvt"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.codecvt"></a>codecvt</h2></div></div></div><p> -The standard class codecvt attempts to address conversions between -different character encoding schemes. In particular, the standard -attempts to detail conversions between the implementation-defined wide -characters (hereafter referred to as wchar_t) and the standard type -char that is so beloved in classic <span class="quote">“<span class="quote">C</span>”</span> (which can now be -referred to as narrow characters.) This document attempts to describe -how the GNU libstdc++ implementation deals with the conversion between -wide and narrow characters, and also presents a framework for dealing -with the huge number of other encodings that iconv can convert, -including Unicode and UTF8. Design issues and requirements are -addressed, and examples of correct usage for both the required -specializations for wide and narrow characters and the -implementation-provided extended functionality are given. -</p><div class="sect2" title="Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.req"></a>Requirements</h3></div></div></div><p> -Around page 425 of the C++ Standard, this charming heading comes into view: -</p><div class="blockquote"><blockquote class="blockquote"><p> -22.2.1.5 - Template class codecvt -</p></blockquote></div><p> -The text around the codecvt definition gives some clues: -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> --1- The class codecvt<internT,externT,stateT> is for use when -converting from one codeset to another, such as from wide characters -to multibyte characters, between wide character encodings such as -Unicode and EUC. -</em></span> -</p></blockquote></div><p> -Hmm. So, in some unspecified way, Unicode encodings and -translations between other character sets should be handled by this -class. -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> --2- The stateT argument selects the pair of codesets being mapped between. -</em></span> -</p></blockquote></div><p> -Ah ha! Another clue... -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> --3- The instantiations required in the Table ?? -(lib.locale.category), namely codecvt<wchar_t,char,mbstate_t> and -codecvt<char,char,mbstate_t>, convert the implementation-defined -native character set. codecvt<char,char,mbstate_t> implements a -degenerate conversion; it does not convert at -all. codecvt<wchar_t,char,mbstate_t> converts between the native -character sets for tiny and wide characters. Instantiations on -mbstate_t perform conversion between encodings known to the library -implementor. Other encodings can be converted by specializing on a -user-defined stateT type. The stateT object can contain any state that -is useful to communicate to or from the specialized do_convert member. -</em></span> -</p></blockquote></div><p> -At this point, a couple points become clear: -</p><p> -One: The standard clearly implies that attempts to add non-required -(yet useful and widely used) conversions need to do so through the -third template parameter, stateT.</p><p> -Two: The required conversions, by specifying mbstate_t as the third -template parameter, imply an implementation strategy that is mostly -(or wholly) based on the underlying C library, and the functions -mcsrtombs and wcsrtombs in particular.</p></div><div class="sect2" title="Design"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.design"></a>Design</h3></div></div></div><div class="sect3" title="wchar_t Size"><div class="titlepage"><div><div><h4 class="title"><a id="codecvt.design.wchar_t_size"></a><span class="type">wchar_t</span> Size</h4></div></div></div><p> - The simple implementation detail of wchar_t's size seems to - repeatedly confound people. Many systems use a two byte, - unsigned integral type to represent wide characters, and use an - internal encoding of Unicode or UCS2. (See AIX, Microsoft NT, - Java, others.) Other systems, use a four byte, unsigned integral - type to represent wide characters, and use an internal encoding - of UCS4. (GNU/Linux systems using glibc, in particular.) The C - programming language (and thus C++) does not specify a specific - size for the type wchar_t. - </p><p> - Thus, portable C++ code cannot assume a byte size (or endianness) either. - </p></div><div class="sect3" title="Support for Unicode"><div class="titlepage"><div><div><h4 class="title"><a id="codecvt.design.unicode"></a>Support for Unicode</h4></div></div></div><p> - Probably the most frequently asked question about code conversion - is: "So dudes, what's the deal with Unicode strings?" - The dude part is optional, but apparently the usefulness of - Unicode strings is pretty widely appreciated. Sadly, this specific - encoding (And other useful encodings like UTF8, UCS4, ISO 8859-10, - etc etc etc) are not mentioned in the C++ standard. - </p><p> - A couple of comments: - </p><p> - The thought that all one needs to convert between two arbitrary - codesets is two types and some kind of state argument is - unfortunate. In particular, encodings may be stateless. The naming - of the third parameter as stateT is unfortunate, as what is really - needed is some kind of generalized type that accounts for the - issues that abstract encodings will need. The minimum information - that is required includes: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - Identifiers for each of the codesets involved in the - conversion. For example, using the iconv family of functions - from the Single Unix Specification (what used to be called - X/Open) hosted on the GNU/Linux operating system allows - bi-directional mapping between far more than the following - tantalizing possibilities: - </p><p> - (An edited list taken from <code class="code">`iconv --list`</code> on a - Red Hat 6.2/Intel system: - </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting"> -8859_1, 8859_9, 10646-1:1993, 10646-1:1993/UCS4, ARABIC, ARABIC7, -ASCII, EUC-CN, EUC-JP, EUC-KR, EUC-TW, GREEK-CCIcode, GREEK, GREEK7-OLD, -GREEK7, GREEK8, HEBREW, ISO-8859-1, ISO-8859-2, ISO-8859-3, -ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, -ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, -ISO-8859-15, ISO-10646, ISO-10646/UCS2, ISO-10646/UCS4, -ISO-10646/UTF-8, ISO-10646/UTF8, SHIFT-JIS, SHIFT_JIS, UCS-2, UCS-4, -UCS2, UCS4, UNICODE, UNICODEBIG, UNICODELIcodeLE, US-ASCII, US, UTF-8, -UTF-16, UTF8, UTF16). -</pre></blockquote></div><p> -For iconv-based implementations, string literals for each of the -encodings (i.e. "UCS-2" and "UTF-8") are necessary, -although for other, -non-iconv implementations a table of enumerated values or some other -mechanism may be required. -</p></li><li class="listitem"><p> - Maximum length of the identifying string literal. -</p></li><li class="listitem"><p> - Some encodings require explicit endian-ness. As such, some kind - of endian marker or other byte-order marker will be necessary. See - "Footnotes for C/C++ developers" in Haible for more information on - UCS-2/Unicode endian issues. (Summary: big endian seems most likely, - however implementations, most notably Microsoft, vary.) -</p></li><li class="listitem"><p> - Types representing the conversion state, for conversions involving - the machinery in the "C" library, or the conversion descriptor, for - conversions using iconv (such as the type iconv_t.) Note that the - conversion descriptor encodes more information than a simple encoding - state type. -</p></li><li class="listitem"><p> - Conversion descriptors for both directions of encoding. (i.e., both - UCS-2 to UTF-8 and UTF-8 to UCS-2.) -</p></li><li class="listitem"><p> - Something to indicate if the conversion requested if valid. -</p></li><li class="listitem"><p> - Something to represent if the conversion descriptors are valid. -</p></li><li class="listitem"><p> - Some way to enforce strict type checking on the internal and - external types. As part of this, the size of the internal and - external types will need to be known. -</p></li></ul></div></div><div class="sect3" title="Other Issues"><div class="titlepage"><div><div><h4 class="title"><a id="codecvt.design.issues"></a>Other Issues</h4></div></div></div><p> -In addition, multi-threaded and multi-locale environments also impact -the design and requirements for code conversions. In particular, they -affect the required specialization codecvt<wchar_t, char, mbstate_t> -when implemented using standard "C" functions. -</p><p> -Three problems arise, one big, one of medium importance, and one small. -</p><p> -First, the small: mcsrtombs and wcsrtombs may not be multithread-safe -on all systems required by the GNU tools. For GNU/Linux and glibc, -this is not an issue. -</p><p> -Of medium concern, in the grand scope of things, is that the functions -used to implement this specialization work on null-terminated -strings. Buffers, especially file buffers, may not be null-terminated, -thus giving conversions that end prematurely or are otherwise -incorrect. Yikes! -</p><p> -The last, and fundamental problem, is the assumption of a global -locale for all the "C" functions referenced above. For something like -C++ iostreams (where codecvt is explicitly used) the notion of -multiple locales is fundamental. In practice, most users may not run -into this limitation. However, as a quality of implementation issue, -the GNU C++ library would like to offer a solution that allows -multiple locales and or simultaneous usage with computationally -correct results. In short, libstdc++ is trying to offer, as an -option, a high-quality implementation, damn the additional complexity! -</p><p> -For the required specialization codecvt<wchar_t, char, mbstate_t> , -conversions are made between the internal character set (always UCS4 -on GNU/Linux) and whatever the currently selected locale for the -LC_CTYPE category implements. -</p></div></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.impl"></a>Implementation</h3></div></div></div><p> -The two required specializations are implemented as follows: -</p><p> -<code class="code"> -codecvt<char, char, mbstate_t> -</code> -</p><p> -This is a degenerate (i.e., does nothing) specialization. Implementing -this was a piece of cake. -</p><p> -<code class="code"> -codecvt<char, wchar_t, mbstate_t> -</code> -</p><p> -This specialization, by specifying all the template parameters, pretty -much ties the hands of implementors. As such, the implementation is -straightforward, involving mcsrtombs for the conversions between char -to wchar_t and wcsrtombs for conversions between wchar_t and char. -</p><p> -Neither of these two required specializations deals with Unicode -characters. As such, libstdc++ implements a partial specialization -of the codecvt class with and iconv wrapper class, encoding_state as the -third template parameter. -</p><p> -This implementation should be standards conformant. First of all, the -standard explicitly points out that instantiations on the third -template parameter, stateT, are the proper way to implement -non-required conversions. Second of all, the standard says (in Chapter -17) that partial specializations of required classes are a-ok. Third -of all, the requirements for the stateT type elsewhere in the standard -(see 21.1.2 traits typedefs) only indicate that this type be copy -constructible. -</p><p> -As such, the type encoding_state is defined as a non-templatized, POD -type to be used as the third type of a codecvt instantiation. This -type is just a wrapper class for iconv, and provides an easy interface -to iconv functionality. -</p><p> -There are two constructors for encoding_state: -</p><p> -<code class="code"> -encoding_state() : __in_desc(0), __out_desc(0) -</code> -</p><p> -This default constructor sets the internal encoding to some default -(currently UCS4) and the external encoding to whatever is returned by -nl_langinfo(CODESET). -</p><p> -<code class="code"> -encoding_state(const char* __int, const char* __ext) -</code> -</p><p> -This constructor takes as parameters string literals that indicate the -desired internal and external encoding. There are no defaults for -either argument. -</p><p> -One of the issues with iconv is that the string literals identifying -conversions are not standardized. Because of this, the thought of -mandating and or enforcing some set of pre-determined valid -identifiers seems iffy: thus, a more practical (and non-migraine -inducing) strategy was implemented: end-users can specify any string -(subject to a pre-determined length qualifier, currently 32 bytes) for -encodings. It is up to the user to make sure that these strings are -valid on the target system. -</p><p> -<code class="code"> -void -_M_init() -</code> -</p><p> -Strangely enough, this member function attempts to open conversion -descriptors for a given encoding_state object. If the conversion -descriptors are not valid, the conversion descriptors returned will -not be valid and the resulting calls to the codecvt conversion -functions will return error. -</p><p> -<code class="code"> -bool -_M_good() -</code> -</p><p> -Provides a way to see if the given encoding_state object has been -properly initialized. If the string literals describing the desired -internal and external encoding are not valid, initialization will -fail, and this will return false. If the internal and external -encodings are valid, but iconv_open could not allocate conversion -descriptors, this will also return false. Otherwise, the object is -ready to convert and will return true. -</p><p> -<code class="code"> -encoding_state(const encoding_state&) -</code> -</p><p> -As iconv allocates memory and sets up conversion descriptors, the copy -constructor can only copy the member data pertaining to the internal -and external code conversions, and not the conversion descriptors -themselves. -</p><p> -Definitions for all the required codecvt member functions are provided -for this specialization, and usage of codecvt<internal character type, -external character type, encoding_state> is consistent with other -codecvt usage. -</p></div><div class="sect2" title="Use"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.use"></a>Use</h3></div></div></div><p>A conversions involving string literal.</p><pre class="programlisting"> - typedef codecvt_base::result result; - typedef unsigned short unicode_t; - typedef unicode_t int_type; - typedef char ext_type; - typedef encoding_state state_type; - typedef codecvt<int_type, ext_type, state_type> unicode_codecvt; - - const ext_type* e_lit = "black pearl jasmine tea"; - int size = strlen(e_lit); - int_type i_lit_base[24] = - { 25088, 27648, 24832, 25344, 27392, 8192, 28672, 25856, 24832, 29184, - 27648, 8192, 27136, 24832, 29440, 27904, 26880, 28160, 25856, 8192, 29696, - 25856, 24832, 2560 - }; - const int_type* i_lit = i_lit_base; - const ext_type* efrom_next; - const int_type* ifrom_next; - ext_type* e_arr = new ext_type[size + 1]; - ext_type* eto_next; - int_type* i_arr = new int_type[size + 1]; - int_type* ito_next; - - // construct a locale object with the specialized facet. - locale loc(locale::classic(), new unicode_codecvt); - // sanity check the constructed locale has the specialized facet. - VERIFY( has_facet<unicode_codecvt>(loc) ); - const unicode_codecvt& cvt = use_facet<unicode_codecvt>(loc); - // convert between const char* and unicode strings - unicode_codecvt::state_type state01("UNICODE", "ISO_8859-1"); - initialize_state(state01); - result r1 = cvt.in(state01, e_lit, e_lit + size, efrom_next, - i_arr, i_arr + size, ito_next); - VERIFY( r1 == codecvt_base::ok ); - VERIFY( !int_traits::compare(i_arr, i_lit, size) ); - VERIFY( efrom_next == e_lit + size ); - VERIFY( ito_next == i_arr + size ); -</pre></div><div class="sect2" title="Future"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.future"></a>Future</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - a. things that are sketchy, or remain unimplemented: - do_encoding, max_length and length member functions - are only weakly implemented. I have no idea how to do - this correctly, and in a generic manner. Nathan? -</p></li><li class="listitem"><p> - b. conversions involving std::string - </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> - how should operators != and == work for string of - different/same encoding? - </p></li><li class="listitem"><p> - what is equal? A byte by byte comparison or an - encoding then byte comparison? - </p></li><li class="listitem"><p> - conversions between narrow, wide, and unicode strings - </p></li></ul></div></li><li class="listitem"><p> - c. conversions involving std::filebuf and std::ostream -</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> - how to initialize the state object in a - standards-conformant manner? - </p></li><li class="listitem"><p> - how to synchronize the "C" and "C++" - conversion information? - </p></li><li class="listitem"><p> - wchar_t/char internal buffers and conversions between - internal/external buffers? - </p></li></ul></div></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id686680"></a><p><span class="title"><i> - The GNU C Library - </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry" title="Correspondence"><a id="id693504"></a><p><span class="title"><i> - Correspondence - </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id612636"></a><p><span class="title"><i> - ISO/IEC 14882:1998 Programming languages - C++ - </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id612655"></a><p><span class="title"><i> - ISO/IEC 9899:1999 Programming languages - C - </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)"><a id="id699030"></a><p><span class="title"><i> - The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) - </i>. </span><span class="copyright">Copyright © 1999 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid"> - <a class="ulink" href="http://www.unix.org/version3/ieee_std.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id699056"></a><p><span class="title"><i> - The C++ Programming Language, Special Edition - </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> - Addison Wesley - . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id698403"></a><p><span class="title"><i> - Standard C++ IOStreams and Locales - </i>. </span><span class="subtitle"> - Advanced Programmer's Guide and Reference - . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> - Addison Wesley Longman - . </span></span></p></div><div class="biblioentry" title="A brief description of Normative Addendum 1"><a id="id661653"></a><p><span class="title"><i> - A brief description of Normative Addendum 1 - </i>. </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span><span class="biblioid"> - <a class="ulink" href="http://www.lysator.liu.se/c/na1.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="The Unicode HOWTO"><a id="id661684"></a><p><span class="title"><i> - The Unicode HOWTO - </i>. </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span><span class="biblioid"> - <a class="ulink" href="http://tldp.org/HOWTO/Unicode-HOWTO.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="UTF-8 and Unicode FAQ for Unix/Linux"><a id="id662453"></a><p><span class="title"><i> - UTF-8 and Unicode FAQ for Unix/Linux - </i>. </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span><span class="biblioid"> - <a class="ulink" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" target="_top"> - </a> - . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="facets.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="messages.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Facets aka Categories </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> messages</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/complex.html b/libstdc++-v3/doc/html/manual/complex.html deleted file mode 100644 index cb82e609eab..00000000000 --- a/libstdc++-v3/doc/html/manual/complex.html +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. Complex</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="numerics.html" title="Part X. Numerics" /><link rel="next" href="generalized_numeric_operations.html" title="Chapter 22. Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Complex</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Part X. - Numerics - -</th><td width="20%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 21. Complex"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.complex"></a>Chapter 21. Complex</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></div><p> - </p><div class="sect1" title="complex Processing"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.complex.processing"></a>complex Processing</h2></div></div></div><p> - </p><p>Using <code class="code">complex<></code> becomes even more comple- er, sorry, - <span class="emphasis"><em>complicated</em></span>, with the not-quite-gratuitously-incompatible - addition of complex types to the C language. David Tribble has - compiled a list of C++98 and C99 conflict points; his description of - C's new type versus those of C++ and how to get them playing together - nicely is -<a class="ulink" href="http://david.tribble.com/text/cdiffs.htm#C99-complex" target="_top">here</a>. - </p><p><code class="code">complex<></code> is intended to be instantiated with a - floating-point type. As long as you meet that and some other basic - requirements, then the resulting instantiation has all of the usual - math operators defined, as well as definitions of <code class="code">op<<</code> - and <code class="code">op>></code> that work with iostreams: <code class="code">op<<</code> - prints <code class="code">(u,v)</code> and <code class="code">op>></code> can read <code class="code">u</code>, - <code class="code">(u)</code>, and <code class="code">(u,v)</code>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part X. - Numerics - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 22. Generalized Operations</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/concurrency.html b/libstdc++-v3/doc/html/manual/concurrency.html new file mode 100644 index 00000000000..8a51c7c5c17 --- /dev/null +++ b/libstdc++-v3/doc/html/manual/concurrency.html @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library , mutex , thread , future , condition_variable " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="atomics.html" title="Chapter 14. Atomics" /><link rel="next" href="extensions.html" title="Part III. Extensions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. + Concurrency + +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="atomics.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 15. Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="std.concurrency"></a>Chapter 15. + Concurrency + <a id="id387949" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></div><p> + Facilities for concurrent operation, and control thereof. +</p><div class="sect1" title="API Reference"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.concurrency.api"></a>API Reference</h2></div></div></div><p> + All items are declared in one of four standard header files. + </p><p> + In header <code class="filename">mutex</code>, class + template <code class="classname">mutex</code> and variants, + class <code class="classname">once_flag</code>, and class + template <code class="classname">unique_lock</code>. + </p><p> + In header <code class="filename">condition_variable</code>, + classes <code class="classname">condition_variable</code> + and <code class="classname">condition_variable_any</code>. + </p><p> + In header <code class="filename">thread</code>, + class <code class="classname">thread</code> and + namespace <code class="code">this_thread</code>. + </p><p> + In header <code class="filename">future</code>, class + template <code class="classname">future</code> and class + template <code class="classname">shared_future</code>, class + template <code class="classname">promise</code>, + and <code class="classname">packaged_task</code>. + </p><p> + Full API details. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="atomics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="extensions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 14. + Atomics + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part III. + Extensions + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/configure.html b/libstdc++-v3/doc/html/manual/configure.html index c5ee8c3b546..806cc973819 100644 --- a/libstdc++-v3/doc/html/manual/configure.html +++ b/libstdc++-v3/doc/html/manual/configure.html @@ -19,168 +19,167 @@ available for a given set of libstdc++ sources is to go to the source directory and then type:<span class="command"><strong>./configure --help</strong></span>. </p><div class="variablelist"><dl><dt><span class="term"><code class="code">--enable-multilib</code>[default]</span></dt><dd><p>This is part of the generic multilib support for building cross - compilers. As such, targets like "powerpc-elf" will have - libstdc++ built many different ways: "-msoft-float" - and not, etc. A different libstdc++ will be built for each of - the different multilib versions. This option is on by default. + compilers. As such, targets like "powerpc-elf" will have + libstdc++ built many different ways: "-msoft-float" + and not, etc. A different libstdc++ will be built for each of + the different multilib versions. This option is on by default. </p></dd><dt><span class="term"><code class="code">--enable-sjlj-exceptions</code></span></dt><dd><p>Forces old, set-jump/long-jump exception handling model. If - at all possible, the new, frame unwinding exception handling routines - should be used instead, as they significantly reduce both - runtime memory usage and executable size. This option can - change the library ABI. + at all possible, the new, frame unwinding exception handling routines + should be used instead, as they significantly reduce both + runtime memory usage and executable size. This option can + change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-version-specific-runtime-libs</code></span></dt><dd><p>Specify that run-time libraries should be installed in the - compiler-specific subdirectory (i.e., - <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}</code>) - instead of <code class="code">${libdir}</code>. This option is useful if you - intend to use several versions of gcc in parallel. In addition, - libstdc++'s include files will be installed in - <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>, - unless you also specify + compiler-specific subdirectory (i.e., + <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}</code>) + instead of <code class="code">${libdir}</code>. This option is useful if you + intend to use several versions of gcc in parallel. In addition, + libstdc++'s include files will be installed in + <code class="code">${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>, + unless you also specify <code class="literal">--with-gxx-include-dir=<code class="filename">dirname</code></code> during configuration. </p></dd><dt><span class="term"><code class="code">--with-gxx-include-dir=<include-files dir></code></span></dt><dd><p>Adds support for named libstdc++ include directory. For instance, - the following puts all the libstdc++ headers into a directory - called "4.4-20090404" instead of the usual - "c++/(version)". + the following puts all the libstdc++ headers into a directory + called "4.4-20090404" instead of the usual + "c++/(version)". </p><pre class="programlisting"> --with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404</pre></dd><dt><span class="term"><code class="code">--enable-cstdio</code></span></dt><dd><p>This is an abbreviated form of <code class="code">'--enable-cstdio=stdio'</code> - (described next). + (described next). </p></dd><dt><span class="term"><code class="code">--enable-cstdio=OPTION</code></span></dt><dd><p>Select a target-specific I/O package. At the moment, the only - choice is to use 'stdio', a generic "C" abstraction. - The default is 'stdio'. This option can change the library ABI. + choice is to use 'stdio', a generic "C" abstraction. + The default is 'stdio'. This option can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-clocale</code></span></dt><dd><p>This is an abbreviated form of <code class="code">'--enable-clocale=generic'</code> - (described next). + (described next). </p></dd><dt><span class="term"><code class="code">--enable-clocale=OPTION</code></span></dt><dd><p>Select a target-specific underlying locale package. The - choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix - (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, - 'gnu' to specify a model based on functionality from the GNU C - library (langinfo/iconv/gettext) (from <a class="ulink" href="http://sources.redhat.com/glibc/" target="_top">glibc</a>, the GNU C - library), or 'generic' to use a generic "C" - abstraction which consists of "C" locale info. + choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix + (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, + 'gnu' to specify a model based on functionality from the GNU C + library (langinfo/iconv/gettext) (from <a class="ulink" href="http://sources.redhat.com/glibc/" target="_top">glibc</a>, the GNU C + library), or 'generic' to use a generic "C" + abstraction which consists of "C" locale info. </p><p>If not explicitly specified, the configure proccess tries to guess the most suitable package from the choices above. The default is 'generic'. On glibc-based systems of sufficient - vintage (2.2.5 and newer) and capability (with installed DE and - FR locale data), 'gnu' is automatically selected. This option + vintage (2.3 and newer), 'gnu' is automatically selected. This option can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-allocator</code></span></dt><dd><p>This is an abbreviated form of - <code class="code">'--enable-libstdcxx-allocator=auto'</code> (described - next). + <code class="code">'--enable-libstdcxx-allocator=auto'</code> (described + next). </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-allocator=OPTION </code></span></dt><dd><p>Select a target-specific underlying std::allocator. The - choices are 'new' to specify a wrapper for new, 'malloc' to - specify a wrapper for malloc, 'mt' for a fixed power of two allocator, + choices are 'new' to specify a wrapper for new, 'malloc' to + specify a wrapper for malloc, 'mt' for a fixed power of two allocator, 'pool' for the SGI pooled allocator or 'bitmap' for a bitmap allocator. - See this page for more information on allocator - <a class="link" href="memory.html#allocator.ext" title="Extension Allocators">extensions</a>. This option - can change the library ABI. + See this page for more information on allocator + <a class="link" href="memory.html#allocator.ext" title="Extension Allocators">extensions</a>. This option + can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-cheaders=OPTION</code></span></dt><dd><p>This allows the user to define the approach taken for C header - compatibility with C++. Options are c, c_std, and c_global. - These correspond to the source directory's include/c, - include/c_std, and include/c_global, and may also include - include/c_compatibility. The default is 'c_global'. + compatibility with C++. Options are c, c_std, and c_global. + These correspond to the source directory's include/c, + include/c_std, and include/c_global, and may also include + include/c_compatibility. The default is 'c_global'. </p></dd><dt><span class="term"><code class="code">--enable-threads</code></span></dt><dd><p>This is an abbreviated form of <code class="code">'--enable-threads=yes'</code> - (described next). + (described next). </p></dd><dt><span class="term"><code class="code">--enable-threads=OPTION</code></span></dt><dd><p>Select a threading library. A full description is - given in the - general <a class="ulink" href="http://gcc.gnu.org/install/configure.html" target="_top">compiler - configuration instructions</a>. This option can change the - library ABI. + given in the + general <a class="ulink" href="http://gcc.gnu.org/install/configure.html" target="_top">compiler + configuration instructions</a>. This option can change the + library ABI. </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-debug</code></span></dt><dd><p>Build separate debug libraries in addition to what is normally built. - By default, the debug libraries are compiled with - <code class="code"> CXXFLAGS='-g3 -O0 -fno-inline'</code> - , are installed in <code class="code">${libdir}/debug</code>, and have the - same names and versioning information as the non-debug - libraries. This option is off by default. + By default, the debug libraries are compiled with + <code class="code"> CXXFLAGS='-g3 -O0 -fno-inline'</code> + , are installed in <code class="code">${libdir}/debug</code>, and have the + same names and versioning information as the non-debug + libraries. This option is off by default. </p><p>Note this make command, executed in - the build directory, will do much the same thing, without the - configuration difference and without building everything twice: - <code class="code">make CXXFLAGS='-g3 -O0 -fno-inline' all</code> + the build directory, will do much the same thing, without the + configuration difference and without building everything twice: + <code class="code">make CXXFLAGS='-g3 -O0 -fno-inline' all</code> </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-debug-flags=FLAGS</code></span></dt><dd><p>This option is only valid when <code class="code"> --enable-debug </code> - is also specified, and applies to the debug builds only. With - this option, you can pass a specific string of flags to the - compiler to use when building the debug versions of libstdc++. - FLAGS is a quoted string of options, like + is also specified, and applies to the debug builds only. With + this option, you can pass a specific string of flags to the + compiler to use when building the debug versions of libstdc++. + FLAGS is a quoted string of options, like </p><pre class="programlisting"> --enable-libstdcxx-debug-flags='-g3 -O1 -fno-inline'</pre></dd><dt><span class="term"><code class="code">--enable-cxx-flags=FLAGS</code></span></dt><dd><p>With this option, you can pass a string of -f (functionality) - flags to the compiler to use when building libstdc++. This - option can change the library ABI. FLAGS is a quoted string of - options, like + flags to the compiler to use when building libstdc++. This + option can change the library ABI. FLAGS is a quoted string of + options, like </p><pre class="programlisting"> --enable-cxx-flags='-fvtable-gc -fomit-frame-pointer -ansi'</pre><p> - Note that the flags don't necessarily have to all be -f flags, - as shown, but usually those are the ones that will make sense - for experimentation and configure-time overriding. + Note that the flags don't necessarily have to all be -f flags, + as shown, but usually those are the ones that will make sense + for experimentation and configure-time overriding. </p><p>The advantage of --enable-cxx-flags over setting CXXFLAGS in - the 'make' environment is that, if files are automatically - rebuilt, the same flags will be used when compiling those files - as well, so that everything matches. + the 'make' environment is that, if files are automatically + rebuilt, the same flags will be used when compiling those files + as well, so that everything matches. </p><p>Fun flags to try might include combinations of </p><pre class="programlisting"> -fstrict-aliasing -fno-exceptions -ffunction-sections -fvtable-gc</pre><p>and opposite forms (-fno-) of the same. Tell us (the libstdc++ - mailing list) if you discover more! + mailing list) if you discover more! </p></dd><dt><span class="term"><code class="code">--enable-c99</code></span></dt><dd><p>The "long long" type was introduced in C99, along - with many other functions for wide characters, and math - classification macros, etc. If enabled, all C99 functions not - specified by the C++ standard will be put into <code class="code">namespace - __gnu_cxx</code>, and then all these names will - be injected into namespace std, so that C99 functions can be - used "as if" they were in the C++ standard (as they - will eventually be in some future revision of the standard, - without a doubt). By default, C99 support is on, assuming the - configure probes find all the necessary functions and bits - necessary. This option can change the library ABI. + with many other functions for wide characters, and math + classification macros, etc. If enabled, all C99 functions not + specified by the C++ standard will be put into <code class="code">namespace + __gnu_cxx</code>, and then all these names will + be injected into namespace std, so that C99 functions can be + used "as if" they were in the C++ standard (as they + will eventually be in some future revision of the standard, + without a doubt). By default, C99 support is on, assuming the + configure probes find all the necessary functions and bits + necessary. This option can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-wchar_t</code>[default]</span></dt><dd><p>Template specializations for the "wchar_t" type are - required for wide character conversion support. Disabling - wide character specializations may be expedient for initial - porting efforts, but builds only a subset of what is required by - ISO, and is not recommended. By default, this option is on. - This option can change the library ABI. + required for wide character conversion support. Disabling + wide character specializations may be expedient for initial + porting efforts, but builds only a subset of what is required by + ISO, and is not recommended. By default, this option is on. + This option can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-long-long </code></span></dt><dd><p>The "long long" type was introduced in C99. It is - provided as a GNU extension to C++98 in g++. This flag builds - support for "long long" into the library (specialized - templates and the like for iostreams). This option is on by default: - if enabled, users will have to either use the new-style "C" - headers by default (i.e., <cmath> not <math.h>) - or add appropriate compile-time flags to all compile lines to - allow "C" visibility of this feature (on GNU/Linux, - the flag is -D_ISOC99_SOURCE, which is added automatically via - CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). - This option can change the library ABI. + provided as a GNU extension to C++98 in g++. This flag builds + support for "long long" into the library (specialized + templates and the like for iostreams). This option is on by default: + if enabled, users will have to either use the new-style "C" + headers by default (i.e., <cmath> not <math.h>) + or add appropriate compile-time flags to all compile lines to + allow "C" visibility of this feature (on GNU/Linux, + the flag is -D_ISOC99_SOURCE, which is added automatically via + CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). + This option can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-fully-dynamic-string</code></span></dt><dd><p>This option enables a special version of basic_string avoiding - the optimization that allocates empty objects in static memory. + the optimization that allocates empty objects in static memory. Mostly useful together with shared memory allocators, see PR libstdc++/16612 for details. </p></dd><dt><span class="term"><code class="code">--enable-concept-checks</code></span></dt><dd><p>This turns on additional compile-time checks for instantiated - library templates, in the form of specialized templates, - <a class="link" href="bk01pt03ch08.html" title="Chapter 8. Concept Checking">described here</a>. They - can help users discover when they break the rules of the STL, before - their programs run. + library templates, in the form of specialized templates, + <a class="link" href="bk01pt02ch05s02.html" title="Concept Checking">described here</a>. They + can help users discover when they break the rules of the STL, before + their programs run. </p></dd><dt><span class="term"><code class="code">--enable-symvers[=style]</code></span></dt><dd><p>In 3.1 and later, tries to turn on symbol versioning in the - shared library (if a shared library has been - requested). Values for 'style' that are currently supported - are 'gnu', 'gnu-versioned-namespace', 'darwin', and - 'darwin-export'. Both gnu- options require that a recent - version of the GNU linker be in use. Both darwin options are - equivalent. With no style given, the configure script will try - to guess correct defaults for the host system, probe to see if - additional requirements are necessary and present for - activation, and if so, will turn symbol versioning on. This - option can change the library ABI. + shared library (if a shared library has been + requested). Values for 'style' that are currently supported + are 'gnu', 'gnu-versioned-namespace', 'darwin', + 'darwin-export', and 'sun'. Both gnu- options require that a recent + version of the GNU linker be in use. Both darwin options are + equivalent. With no style given, the configure script will try + to guess correct defaults for the host system, probe to see if + additional requirements are necessary and present for + activation, and if so, will turn symbol versioning on. This + option can change the library ABI. </p></dd><dt><span class="term"><code class="code">--enable-visibility</code></span></dt><dd><p> In 4.2 and later, enables or disables visibility attributes. - If enabled (as by default), and the compiler seems capable of - passing the simple sanity checks thrown at it, adjusts items - in namespace std, namespace std::tr1, and namespace __gnu_cxx - so that -fvisibility options work. + If enabled (as by default), and the compiler seems capable of + passing the simple sanity checks thrown at it, adjusts items + in namespace std, namespace std::tr1, and namespace __gnu_cxx + so that -fvisibility options work. </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-pch</code></span></dt><dd><p>In 3.4 and later, tries to turn on the generation of - stdc++.h.gch, a pre-compiled file including all the standard - C++ includes. If enabled (as by default), and the compiler - seems capable of passing the simple sanity checks thrown at - it, try to build stdc++.h.gch as part of the make process. - In addition, this generated file is used later on (by appending <code class="code"> - --include bits/stdc++.h </code> to CXXFLAGS) when running the - testsuite. + stdc++.h.gch, a pre-compiled file including all the standard + C++ includes. If enabled (as by default), and the compiler + seems capable of passing the simple sanity checks thrown at + it, try to build stdc++.h.gch as part of the make process. + In addition, this generated file is used later on (by appending <code class="code"> + --include bits/stdc++.h </code> to CXXFLAGS) when running the + testsuite. </p></dd><dt><span class="term"><code class="code">--disable-hosted-libstdcxx</code></span></dt><dd><p> By default, a complete <span class="emphasis"><em>hosted</em></span> C++ library is built. The C++ Standard also describes a @@ -188,17 +187,17 @@ minimal set of headers are provided. This option builds such an environment. </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time</code></span></dt><dd><p>This is an abbreviated form of - <code class="code">'--enable-libstdcxx-time=yes'</code>(described next). + <code class="code">'--enable-libstdcxx-time=yes'</code>(described next). </p></dd><dt><span class="term"><code class="code">--enable-libstdcxx-time=OPTION</code></span></dt><dd><p>Enables link-type checks for the availability of the - clock_gettime clocks, used in the implementation of [time.clock], - and of the nanosleep and sched_yield functions, used in the - implementation of [thread.thread.this] of the current C++0x draft. - The choice OPTION=yes checks for the availability of the facilities - in libc and libposix4. In case of need the latter is also linked - to libstdc++ as part of the build process. OPTION=rt also searches - (and, in case, links) librt. Note that the latter is not always - desirable because, in glibc, for example, in turn it triggers the - linking of libpthread too, which activates locking, a large overhead - for single-thread programs. OPTION=no skips the tests completely. - The default is OPTION=no. + clock_gettime clocks, used in the implementation of [time.clock], + and of the nanosleep and sched_yield functions, used in the + implementation of [thread.thread.this] of the current C++0x draft. + The choice OPTION=yes checks for the availability of the facilities + in libc and libposix4. In case of need the latter is also linked + to libstdc++ as part of the build process. OPTION=rt also searches + (and, in case, links) librt. Note that the latter is not always + desirable because, in glibc, for example, in turn it triggers the + linking of libpthread too, which activates locking, a large overhead + for single-thread programs. OPTION=no skips the tests completely. + The default is OPTION=no. </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="setup.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="make.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Setup </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Make</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/containers.html b/libstdc++-v3/doc/html/manual/containers.html index ff94f4751e5..bdf518c024f 100644 --- a/libstdc++-v3/doc/html/manual/containers.html +++ b/libstdc++-v3/doc/html/manual/containers.html @@ -1,9 +1,55 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VII. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="messages.html" title="messages" /><link rel="next" href="sequences.html" title="Chapter 16. Sequences" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="facets.html" title="Facets" /><link rel="next" href="associative.html" title="Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. Containers -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="sequences.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part VII. Containers"><div class="titlepage"><div><div><h1 class="title"><a id="manual.containers"></a>Part VII. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 9. Containers"><div class="titlepage"><div><div><h2 class="title"><a id="std.containers"></a>Chapter 9. Containers - <a id="id611655" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="messages.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="sequences.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">messages </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Sequences</td></tr></table></div></body></html> + <a id="id479957" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="sect2"><a href="containers.html#containers.sequences.list">list</a></span></dt><dt><span class="sect2"><a href="containers.html#containers.sequences.vector">vector</a></span></dt></dl></dd><dt><span class="sect1"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="sect2"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect2"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt></dl></dd><dt><span class="sect1"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></div><div class="sect1" title="Sequences"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.sequences"></a>Sequences</h2></div></div></div><div class="sect2" title="list"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.list"></a>list</h3></div></div></div><div class="sect3" title="list::size() is O(n)"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h4></div></div></div><p> + Yes it is, and that's okay. This is a decision that we preserved + when we imported SGI's STL implementation. The following is + quoted from <a class="ulink" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>: + </p><div class="blockquote"><blockquote class="blockquote"><p> + The size() member function, for list and slist, takes time + proportional to the number of elements in the list. This was a + deliberate tradeoff. The only way to get a constant-time + size() for linked lists would be to maintain an extra member + variable containing the list's size. This would require taking + extra time to update that variable (it would make splice() a + linear time operation, for example), and it would also make the + list larger. Many list algorithms don't require that extra + word (algorithms that do require it might do better with + vectors than with lists), and, when it is necessary to maintain + an explicit size count, it's something that users can do + themselves. + </p><p> + This choice is permitted by the C++ standard. The standard says + that size() <span class="quote">“<span class="quote">should</span>”</span> be constant time, and + <span class="quote">“<span class="quote">should</span>”</span> does not mean the same thing as + <span class="quote">“<span class="quote">shall</span>”</span>. This is the officially recommended ISO + wording for saying that an implementation is supposed to do + something unless there is a good reason not to. + </p><p> + One implication of linear time size(): you should never write + </p><pre class="programlisting"> + if (L.size() == 0) + ... + </pre><p> + Instead, you should write + </p><pre class="programlisting"> + if (L.empty()) + ... + </pre></blockquote></div></div></div><div class="sect2" title="vector"><div class="titlepage"><div><div><h3 class="title"><a id="containers.sequences.vector"></a>vector</h3></div></div></div><p> + </p><div class="sect3" title="Space Overhead Management"><div class="titlepage"><div><div><h4 class="title"><a id="sequences.vector.management"></a>Space Overhead Management</h4></div></div></div><p> + In <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html" target="_top">this + message to the list</a>, Daniel Kostecky announced work on an + alternate form of <code class="code">std::vector</code> that would support + hints on the number of elements to be over-allocated. The design + was also described, along with possible implementation choices. + </p><p> + The first two alpha releases were announced <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html" target="_top">here</a> + and <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html" target="_top">here</a>. + </p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Facets </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Associative</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/containers_and_c.html b/libstdc++-v3/doc/html/manual/containers_and_c.html index 3f658590f44..4967255c4ce 100644 --- a/libstdc++-v3/doc/html/manual/containers_and_c.html +++ b/libstdc++-v3/doc/html/manual/containers_and_c.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="bitset.html" title="bitset" /><link rel="next" href="iterators.html" title="Part VIII. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><th width="60%" align="center">Part VII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Chapter 9. Containers" /><link rel="prev" href="associative.html" title="Associative" /><link rel="next" href="iterators.html" title="Chapter 10. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><th width="60%" align="center">Chapter 9. Containers -</th><td width="20%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 18. Interacting with C"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.c"></a>Chapter 18. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></div><div class="sect1" title="Containers vs. Arrays"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.c.vs_array"></a>Containers vs. Arrays</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Interacting with C"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.containers.c"></a>Interacting with C</h2></div></div></div><div class="sect2" title="Containers vs. Arrays"><div class="titlepage"><div><div><h3 class="title"><a id="containers.c.vs_array"></a>Containers vs. Arrays</h3></div></div></div><p> You're writing some code and can't decide whether to use builtin arrays or some kind of container. There are compelling reasons to use one of the container classes, but you're afraid that @@ -18,7 +18,7 @@ container classes, these are iterators (usually <code class="code">begin()</code> and <code class="code">end()</code>, but not always). For builtin arrays, these are the address of the first element - and the <a class="link" href="bk01pt08ch19s02.html" title="One Past the End">past-the-end</a> element. + and the <a class="link" href="iterators.html#iterators.predefined.end" title="One Past the End">past-the-end</a> element. </p><p> Some very simple wrapper functions can hide all of that from the rest of the code. For example, a pair of functions called @@ -48,27 +48,27 @@ template<typename T> { return v.begin(); } template<typename T, unsigned int sz> - inline T* + inline T* beginof(T (&array)[sz]) { return array; } // endof template<typename T> - inline typename vector<T>::iterator + inline typename vector<T>::iterator endof(vector<T> &v) { return v.end(); } template<typename T, unsigned int sz> - inline T* + inline T* endof(T (&array)[sz]) { return array + sz; } // lengthof template<typename T> - inline typename vector<T>::size_type + inline typename vector<T>::size_type lengthof(vector<T> &v) { return v.size(); } template<typename T, unsigned int sz> - inline unsigned int + inline unsigned int lengthof(T (&)[sz]) { return sz; } </pre><p> Astute readers will notice two things at once: first, that the @@ -81,10 +81,10 @@ template<typename T, unsigned int sz> </p><p> Second, the line </p><pre class="programlisting"> - inline unsigned int lengthof (T (&)[sz]) { return sz; } + inline unsigned int lengthof (T (&)[sz]) { return sz; } </pre><p> looks just weird! Hint: unused parameters can be left nameless. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VIII. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="associative.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Associative </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. Iterators </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/debug.html b/libstdc++-v3/doc/html/manual/debug.html index e05fb66b802..9a16afd14d2 100644 --- a/libstdc++-v3/doc/html/manual/debug.html +++ b/libstdc++-v3/doc/html/manual/debug.html @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Debugging Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_exceptions.html" title="Exceptions" /><link rel="next" href="support.html" title="Part II. Support" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Debugging Support"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.debug"></a>Debugging Support</h2></div></div></div><p> +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Debugging Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="using.html" title="Chapter 3. Using" /><link rel="prev" href="using_exceptions.html" title="Exceptions" /><link rel="next" href="bk01pt02.html" title="Part II. Standard Contents" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Debugging Support</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Using</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Debugging Support"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.using.debug"></a>Debugging Support</h2></div></div></div><p> There are numerous things that can be done to improve the ease with which C++ binaries are debugged when using the GNU tool chain. Here are some of them. -</p><div class="sect2" title="Using g++"><div class="titlepage"><div><div><h3 class="title"><a id="debug.compiler"></a>Using <span class="command"><strong>g++</strong></span></h3></div></div></div><p> +</p><div class="sect2" title="Using g++"><div class="titlepage"><div><div><h3 class="title"><a id="debug.compiler"></a>Using <span class="command"><strong>g++</strong></span></h3></div></div></div><p> Compiler flags determine how debug information is transmitted between compilation and debug or analysis tools. </p><p> @@ -46,13 +46,13 @@ separate directory tree, in <code class="code">(prefix)/lib/debug</code>. For more information, look at the <a class="link" href="configure.html" title="Configure">configuration</a> section. </p><p> - A second approach is to use the configuration flags + A second approach is to use the configuration flags </p><pre class="programlisting"> make CXXFLAGS='-g3 -fno-inline -O0' all </pre><p> This quick and dirty approach is often sufficient for quick debugging tasks, when you cannot or don't want to recompile your - application to use the <a class="link" href="debug_mode.html" title="Chapter 30. Debug Mode">debug mode</a>.</p></div><div class="sect2" title="Memory Leak Hunting"><div class="titlepage"><div><div><h3 class="title"><a id="debug.memory"></a>Memory Leak Hunting</h3></div></div></div><p> + application to use the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>.</p></div><div class="sect2" title="Memory Leak Hunting"><div class="titlepage"><div><div><h3 class="title"><a id="debug.memory"></a>Memory Leak Hunting</h3></div></div></div><p> There are various third party memory tracing and debug utilities that can be used to provide detailed memory allocation information about C++ code. An exhaustive list of tools is not going to be @@ -111,17 +111,17 @@ int main() { extern void* __dso_handle __attribute__ ((__weak__)); - __cxa_atexit((void (*) (void *)) __libc_freeres, NULL, - &__dso_handle ? __dso_handle : NULL); + __cxa_atexit((void (*) (void *)) __libc_freeres, NULL, + &__dso_handle ? __dso_handle : NULL); do_test(); return 0; } </pre><p> Suggested valgrind flags, given the suggestions above about setting up the runtime environment, library, and test file, might be: -</p><pre class="programlisting"> +</p><pre class="programlisting"> valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out -</pre></div><div class="sect2" title="Using gdb"><div class="titlepage"><div><div><h3 class="title"><a id="debug.gdb"></a>Using <span class="command"><strong>gdb</strong></span></h3></div></div></div><p> +</pre></div><div class="sect2" title="Using gdb"><div class="titlepage"><div><div><h3 class="title"><a id="debug.gdb"></a>Using <span class="command"><strong>gdb</strong></span></h3></div></div></div><p> </p><p> Many options are available for gdb itself: please see <a class="ulink" href="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125" target="_top"> "GDB features for C++" </a> in the gdb documentation. Also @@ -145,7 +145,7 @@ To enable these printers, check-out the latest printers to a local directory: </p><pre class="programlisting"> - svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python + svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python </pre><p> Next, add the following section to your ~/.gdbinit The path must match the location where the Python module above was checked-out. @@ -175,18 +175,17 @@ <a class="ulink" href="http://sourceware.org/gdb/" target="_top"> "GDB: The GNU Project Debugger" </a>. </p></div><div class="sect2" title="Tracking uncaught exceptions"><div class="titlepage"><div><div><h3 class="title"><a id="debug.exceptions"></a>Tracking uncaught exceptions</h3></div></div></div><p> - The <a class="link" href="verbose_termination.html" title="Verbose Terminate Handler">verbose + The <a class="link" href="termination.html#support.termination.verbose" title="Verbose Terminate Handler">verbose termination handler</a> gives information about uncaught exceptions which are killing the program. It is described in the linked-to page. -</p></div><div class="sect2" title="Debug Mode"><div class="titlepage"><div><div><h3 class="title"><a id="debug.debug_mode"></a>Debug Mode</h3></div></div></div><p> The <a class="link" href="debug_mode.html" title="Chapter 30. Debug Mode">Debug Mode</a> +</p></div><div class="sect2" title="Debug Mode"><div class="titlepage"><div><div><h3 class="title"><a id="debug.debug_mode"></a>Debug Mode</h3></div></div></div><p> The <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">Debug Mode</a> has compile and run-time checks for many containers. - </p></div><div class="sect2" title="Compile Time Checking"><div class="titlepage"><div><div><h3 class="title"><a id="debug.compile_time_checks"></a>Compile Time Checking</h3></div></div></div><p> The <a class="link" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks">Compile-Time + </p></div><div class="sect2" title="Compile Time Checking"><div class="titlepage"><div><div><h3 class="title"><a id="debug.compile_time_checks"></a>Compile Time Checking</h3></div></div></div><p> The <a class="link" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks">Compile-Time Checks</a> Extension has compile-time checks for many algorithms. - </p></div><div class="sect2" title="Profile-based Performance Analysis"><div class="titlepage"><div><div><h3 class="title"><a id="debug.profile_mode"></a>Profile-based Performance Analysis</h3></div></div></div><p> The <a class="link" href="profile_mode.html" title="Chapter 32. Profile Mode">Profile-based - Performance Analysis</a> Extension has performance checks for many + </p></div><div class="sect2" title="Profile-based Performance Analysis"><div class="titlepage"><div><div><h3 class="title"><a id="debug.profile_mode"></a>Profile-based Performance Analysis</h3></div></div></div><p> The <a class="link" href="profile_mode.html" title="Chapter 19. Profile Mode">Profile-based + Performance Analysis</a> Extension has performance checks for many algorithms. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="support.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. - Support - + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_exceptions.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. + Standard Contents </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/debug_mode.html b/libstdc++-v3/doc/html/manual/debug_mode.html index 9231ca944b7..fcaeb9c5209 100644 --- a/libstdc++-v3/doc/html/manual/debug_mode.html +++ b/libstdc++-v3/doc/html/manual/debug_mode.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 30. Debug Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks" /><link rel="next" href="bk01pt12ch30s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 30. Debug Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 17. Debug Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , debug " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks" /><link rel="next" href="bk01pt03ch17s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 17. Debug Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch30s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 30. Debug Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"></a>Chapter 30. Debug Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.intro"></a>Intro</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch17s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 17. Debug Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.debug_mode"></a>Chapter 17. Debug Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></div><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.debug_mode.intro"></a>Intro</h2></div></div></div><p> By default, libstdc++ is built with efficiency in mind, and therefore performs little or no error checking that is not required by the C++ standard. This means that programs that @@ -15,7 +15,7 @@ library facilities, and will report errors in the use of libstdc++ as soon as they can be detected by emitting a description of the problem to standard error and aborting the program. This debug - mode is available with GCC 3.4.0 and later versions. + mode is available with GCC 3.4.0 and later versions. </p><p> The libstdc++ debug mode performs checking for many areas of the C++ standard, but the focus is on checking interactions among @@ -34,4 +34,4 @@ the same predicate that was passed to <code class="code">set_intersection</code>; the libstdc++ debug mode will detect an error if the sequence is not sorted or was sorted by a - different predicate.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch30s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 29. Compile Time Checks </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Semantics</td></tr></table></div></body></html> + different predicate.</p></li></ul></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_compile_checks.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch17s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 16. Compile Time Checks </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Semantics</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/diagnostics.html b/libstdc++-v3/doc/html/manual/diagnostics.html index 746a9f4185a..eac71964898 100644 --- a/libstdc++-v3/doc/html/manual/diagnostics.html +++ b/libstdc++-v3/doc/html/manual/diagnostics.html @@ -1,9 +1,43 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Diagnostics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="verbose_termination.html" title="Verbose Terminate Handler" /><link rel="next" href="exceptions.html" title="Chapter 7. Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Diagnostics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="termination.html" title="Termination" /><link rel="next" href="bk01pt02ch05s02.html" title="Concept Checking" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Diagnostics -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part III. Diagnostics"><div class="titlepage"><div><div><h1 class="title"><a id="manual.diagnostics"></a>Part III. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 5. Diagnostics"><div class="titlepage"><div><div><h2 class="title"><a id="std.diagnostics"></a>Chapter 5. Diagnostics - <a id="id622040" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="verbose_termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="exceptions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Verbose Terminate Handler </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Exceptions</td></tr></table></div></body></html> + <a id="id392593" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="sect2"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></div><div class="sect1" title="Exceptions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.diagnostics.exceptions"></a>Exceptions</h2></div></div></div><div class="sect2" title="API Reference"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.api"></a>API Reference</h3></div></div></div><p> + All exception objects are defined in one of the standard header + files: <code class="filename">exception</code>, + <code class="filename">stdexcept</code>, <code class="filename">new</code>, and + <code class="filename">typeinfo</code>. + </p><p> + The base exception object is <code class="classname">exception</code>, + located in <code class="filename">exception</code>. This object has no + <code class="classname">string</code> member. + </p><p> + Derived from this are several classes that may have a + <code class="classname">string</code> member: a full hierarchy can be + found in the source documentation. + </p><p> + Full API details. + </p></div><div class="sect2" title="Adding Data to exception"><div class="titlepage"><div><div><h3 class="title"><a id="std.diagnostics.exceptions.data"></a>Adding Data to <code class="classname">exception</code></h3></div></div></div><p> + The standard exception classes carry with them a single string as + data (usually describing what went wrong or where the 'throw' took + place). It's good to remember that you can add your own data to + these exceptions when extending the hierarchy: + </p><pre class="programlisting"> + struct My_Exception : public std::runtime_error + { + public: + My_Exception (const string& whatarg) + : std::runtime_error(whatarg), e(errno), id(GetDataBaseID()) { } + int errno_at_time_of_throw() const { return e; } + DBID id_of_thing_that_threw() const { return id; } + protected: + int e; + DBID id; // some user-defined type + }; + </pre></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch05s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Termination </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Concept Checking</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/documentation_style.html b/libstdc++-v3/doc/html/manual/documentation_style.html index 39c0b446a97..cc233580612 100644 --- a/libstdc++-v3/doc/html/manual/documentation_style.html +++ b/libstdc++-v3/doc/html/manual/documentation_style.html @@ -4,25 +4,29 @@ Contributing </th><td width="20%" align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Documentation Style"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="contrib.doc_style"></a>Documentation Style</h2></div></div></div><div class="sect2" title="Doxygen"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.doxygen"></a>Doxygen</h3></div></div></div><div class="sect3" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.prereq"></a>Prerequisites</h4></div></div></div><p> - Prerequisite tools are Bash 2.x, + Prerequisite tools are Bash 2.0 or later, <a class="ulink" href="http://www.doxygen.org/" target="_top">Doxygen</a>, and the <a class="ulink" href="http://www.gnu.org/software/coreutils/" target="_top">GNU coreutils</a>. (GNU versions of find, xargs, and possibly sed and grep are used, just because the GNU versions make - things very easy.) + things very easy.) </p><p> To generate the pretty pictures and hierarchy graphs, the - <a class="ulink" href="http://www.graphviz.org" target="_top">Graphviz</a> - package will need to be installed. + <a class="ulink" href="http://www.graphviz.org" target="_top">Graphviz</a> package + will need to be installed. For PDF + output, <a class="ulink" href="http://www.tug.org/applications/pdftex/" target="_top"> + pdflatex</a> is required. </p></div><div class="sect3" title="Generating the Doxygen Files"><div class="titlepage"><div><div><h4 class="title"><a id="doxygen.rules"></a>Generating the Doxygen Files</h4></div></div></div><p> The following Makefile rules run Doxygen to generate HTML - docs, XML docs, and the man pages. + docs, XML docs, PDF docs, and the man pages. </p><p> </p><pre class="screen"><strong class="userinput"><code>make doc-html-doxygen</code></strong></pre><p> </p><p> </p><pre class="screen"><strong class="userinput"><code>make doc-xml-doxygen</code></strong></pre><p> </p><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-pdf-doxygen</code></strong></pre><p> + </p><p> </p><pre class="screen"><strong class="userinput"><code>make doc-man-doxygen</code></strong></pre><p> </p><p> Careful observers will see that the Makefile rules simply call @@ -64,7 +68,7 @@ ...not the Qt style. The intermediate *'s are preferred. </p></li><li class="listitem"><p> Use the triple-slash style only for one-line comments (the - <span class="quote">“<span class="quote">brief</span>”</span> mode). + <span class="quote">“<span class="quote">brief</span>”</span> mode). </p></li><li class="listitem"><p> This is disgusting. Don't do this. </p></li></ol></div><p> @@ -95,7 +99,7 @@ * @brief A model of a linear congruential random number generator.<br /> *<br /> * @f[<br /> - * x_{i+1}\leftarrow(ax_{i} + c) \bmod m <br /> + * x_{i+1}\leftarrow(ax_{i} + c) \bmod m<br /> * @f]<br /> */<br /> </p></div><p> @@ -104,7 +108,7 @@ writing Doxygen comments. Single and double quotes, and separators in filenames are two common trouble spots. When in doubt, consult the following table. - </p><div class="table"><a id="id645775"></a><p class="title"><b>Table A.1. HTML to Doxygen markup comparison</b></p><div class="table-contents"><table summary="HTML to Doxygen markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Doxygen</th></tr></thead><tbody><tr><td align="left">\</td><td align="left">\\</td></tr><tr><td align="left">"</td><td align="left">\"</td></tr><tr><td align="left">'</td><td align="left">\'</td></tr><tr><td align="left"><i></td><td align="left">@a word</td></tr><tr><td align="left"><b></td><td align="left">@b word</td></tr><tr><td align="left"><code></td><td align="left">@c word</td></tr><tr><td align="left"><em></td><td align="left">@a word</td></tr><tr><td align="left"><em></td><td align="left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="sect2" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.docbook"></a>Docbook</h3></div></div></div><div class="sect3" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><p> + </p><div class="table"><a id="id419590"></a><p class="title"><b>Table A.1. HTML to Doxygen Markup Comparison</b></p><div class="table-contents"><table summary="HTML to Doxygen Markup Comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Doxygen</th></tr></thead><tbody><tr><td align="left">\</td><td align="left">\\</td></tr><tr><td align="left">"</td><td align="left">\"</td></tr><tr><td align="left">'</td><td align="left">\'</td></tr><tr><td align="left"><i></td><td align="left">@a word</td></tr><tr><td align="left"><b></td><td align="left">@b word</td></tr><tr><td align="left"><code></td><td align="left">@c word</td></tr><tr><td align="left"><em></td><td align="left">@a word</td></tr><tr><td align="left"><em></td><td align="left"><em>two words or more</em></td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="sect2" title="Docbook"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.docbook"></a>Docbook</h3></div></div></div><div class="sect3" title="Prerequisites"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.prereq"></a>Prerequisites</h4></div></div></div><p> Editing the DocBook sources requires an XML editor. Many exist: some notable options include <span class="command"><strong>emacs</strong></span>, <span class="application">Kate</span>, @@ -139,33 +143,35 @@ by a vendor package like <code class="filename">libxml2</code>. </p><p> For PDF output, something that transforms valid XML to PDF is - required. Possible solutions include <span class="command"><strong>xmlto</strong></span>, - <a class="ulink" href="http://xmlgraphics.apache.org/fop/" target="_top">Apache - FOP</a>, or <span class="command"><strong>prince</strong></span>. Other options are - listed on the DocBook web <a class="ulink" href="http://wiki.docbook.org/topic/DocBookPublishingTools" target="_top">pages</a>. Please + required. Possible solutions include + <a class="ulink" href="http://dblatex.sourceforge.net" target="_top">dblatex</a>, + <span class="command"><strong>xmlto</strong></span>, or <span class="command"><strong>prince</strong></span>. Other + options are listed on the DocBook + web <a class="ulink" href="http://wiki.docbook.org/topic/DocBookPublishingTools" target="_top">pages</a>. Please consult the <code class="email"><<a class="email" href="mailto:libstdc++@gcc.gnu.org">libstdc++@gcc.gnu.org</a>></code> list when - preparing printed manuals for current best practice and suggestions. + preparing printed manuals for current best practice and + suggestions. </p><p> Make sure that the XML documentation and markup is valid for any change. This can be done easily, with the validation rules - in the <code class="filename">Makefile</code>, which is equivalent to doing: + in the <code class="filename">Makefile</code>, which is equivalent to doing: </p><pre class="screen"> <strong class="userinput"><code> xmllint --noout --valid <code class="filename">xml/index.xml</code> </code></strong> </pre></div><div class="sect3" title="Generating the DocBook Files"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.rules"></a>Generating the DocBook Files</h4></div></div></div><p> The following Makefile rules generate (in order): an HTML - version of all the documentation, a PDF version of the same, a + version of all the DocBook documentation, a PDF version of the same, a single XML document, and the result of validating the entire XML document. </p><p> - </p><pre class="screen"><strong class="userinput"><code>make doc-html</code></strong></pre><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-html-docbook</code></strong></pre><p> </p><p> - </p><pre class="screen"><strong class="userinput"><code>make doc-pdf</code></strong></pre><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-pdf-docbook</code></strong></pre><p> </p><p> - </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single</code></strong></pre><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-xml-single-docbook</code></strong></pre><p> </p><p> - </p><pre class="screen"><strong class="userinput"><code>make doc-xml-validate</code></strong></pre><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-xml-validate-docbook</code></strong></pre><p> </p></div><div class="sect3" title="File Organization and Basics"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.examples"></a>File Organization and Basics</h4></div></div></div><div class="literallayout"><p><br /> <span class="emphasis"><em>Which files are important</em></span><br /> <br /> @@ -173,11 +179,11 @@ xmllint --noout --valid <code class="filename">xml/index.xml</code> libstdc++-v3/doc/xml<br /> <br /> Inside this directory, the files of importance:<br /> - spine.xml - index to documentation set<br /> + spine.xml - index to documentation set<br /> manual/spine.xml - index to manual<br /> manual/*.xml - individual chapters and sections of the manual<br /> faq.xml - index to FAQ<br /> - api.xml - index to source level / API <br /> + api.xml - index to source level / API<br /> <br /> All *.txml files are template xml files, i.e., otherwise empty files with<br /> the correct structure, suitable for filling in with new information.<br /> @@ -205,7 +211,7 @@ xmllint --noout --valid <code class="filename">xml/index.xml</code> </chapter><br /> </book><br /> <br /> - <book> <br /> + <book><br /> <part><br /> <chapter><br /> <section><br /> @@ -222,20 +228,21 @@ xmllint --noout --valid <code class="filename">xml/index.xml</code> <br /> <chapter><br /> </chapter><br /> - </part> <br /> + </part><br /> </book><br /> <br /> </set><br /> </p></div></div><div class="sect3" title="Markup By Example"><div class="titlepage"><div><div><h4 class="title"><a id="docbook.markup"></a>Markup By Example</h4></div></div></div><p> -Complete details on Docbook markup can be found in the DocBook Element -Reference, <a class="ulink" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>. An -incomplete reference for HTML to Docbook conversion is detailed in the -table below. -</p><div class="table"><a id="id724766"></a><p class="title"><b>Table A.2. HTML to Docbook XML markup comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML markup comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>, + Complete details on Docbook markup can be found in the DocBook + Element Reference, + <a class="ulink" href="http://www.docbook.org/tdg/en/html/part2.html" target="_top">online</a>. + An incomplete reference for HTML to Docbook conversion is + detailed in the table below. + </p><div class="table"><a id="id502132"></a><p class="title"><b>Table A.2. HTML to Docbook XML Markup Comparison</b></p><div class="table-contents"><table summary="HTML to Docbook XML Markup Comparison" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">HTML</th><th align="left">Docbook</th></tr></thead><tbody><tr><td align="left"><p></td><td align="left"><para></td></tr><tr><td align="left"><pre></td><td align="left"><computeroutput>, <programlisting>, <literallayout></td></tr><tr><td align="left"><ul></td><td align="left"><itemizedlist></td></tr><tr><td align="left"><ol></td><td align="left"><orderedlist></td></tr><tr><td align="left"><il></td><td align="left"><listitem></td></tr><tr><td align="left"><dl></td><td align="left"><variablelist></td></tr><tr><td align="left"><dt></td><td align="left"><term></td></tr><tr><td align="left"><dd></td><td align="left"><listitem></td></tr><tr><td align="left"><a href=""></td><td align="left"><ulink url=""></td></tr><tr><td align="left"><code></td><td align="left"><literal>, <programlisting></td></tr><tr><td align="left"><strong></td><td align="left"><emphasis></td></tr><tr><td align="left"><em></td><td align="left"><emphasis></td></tr><tr><td align="left">"</td><td align="left"><quote></td></tr></tbody></table></div></div><br class="table-break" /><p> And examples of detailed markup for which there are no real HTML equivalents are listed in the table below. -</p><div class="table"><a id="id631420"></a><p class="title"><b>Table A.3. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><structname></td><td align="left"><structname>char_traits</structname></td></tr><tr><td align="left"><classname></td><td align="left"><classname>string</classname></td></tr><tr><td align="left"><function></td><td align="left"> +</p><div class="table"><a id="id502333"></a><p class="title"><b>Table A.3. Docbook XML Element Use</b></p><div class="table-contents"><table summary="Docbook XML Element Use" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Element</th><th align="left">Use</th></tr></thead><tbody><tr><td align="left"><structname></td><td align="left"><structname>char_traits</structname></td></tr><tr><td align="left"><classname></td><td align="left"><classname>string</classname></td></tr><tr><td align="left"><function></td><td align="left"> <p><function>clear()</function></p> <p><function>fs.clear()</function></p> </td></tr><tr><td align="left"><type></td><td align="left"><type>long long</type></td></tr><tr><td align="left"><varname></td><td align="left"><varname>fs</varname></td></tr><tr><td align="left"><literal></td><td align="left"> @@ -248,4 +255,13 @@ table below. <p><filename class="headerfile">ctype.h</filename></p> <p><filename class="directory">/home/gcc/build</filename></p> <p><filename class="libraryfile">libstdc++.so</filename></p> - </td></tr></tbody></table></div></div><br class="table-break" /></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Coding Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design Notes</td></tr></table></div></body></html> + </td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="sect2" title="Combines"><div class="titlepage"><div><div><h3 class="title"><a id="doc_style.combines"></a>Combines</h3></div></div></div><div class="sect3" title="Generating Combines and Assemblages"><div class="titlepage"><div><div><h4 class="title"><a id="combines.rules"></a>Generating Combines and Assemblages</h4></div></div></div><p> + The following Makefile rules are defaults, and are usually + aliased to variable rules. + </p><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-html</code></strong></pre><p> + </p><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-man</code></strong></pre><p> + </p><p> + </p><pre class="screen"><strong class="userinput"><code>make doc-pdf</code></strong></pre><p> + </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_code_style.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="source_design_notes.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Coding Style </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design Notes</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/dynamic_memory.html b/libstdc++-v3/doc/html/manual/dynamic_memory.html index e23fdf5c272..4403ae80a5a 100644 --- a/libstdc++-v3/doc/html/manual/dynamic_memory.html +++ b/libstdc++-v3/doc/html/manual/dynamic_memory.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 5. Dynamic Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02ch04s03.html" title="NULL" /><link rel="next" href="termination.html" title="Chapter 6. Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><th width="60%" align="center">Part II. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Dynamic Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Chapter 4. Support" /><link rel="prev" href="support.html" title="Chapter 4. Support" /><link rel="next" href="termination.html" title="Termination" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Dynamic Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Support -</th><td width="20%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 5. Dynamic Memory"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.memory"></a>Chapter 5. Dynamic Memory</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Dynamic Memory"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.support.memory"></a>Dynamic Memory</h2></div></div></div><p> There are six flavors each of <code class="function">new</code> and <code class="function">delete</code>, so make certain that you're using the right ones. Here are quickie descriptions of <code class="function">new</code>: @@ -51,8 +51,8 @@ { delete[] safety; popup_window ("Dude, you are running low on heap memory. You - should, like, close some windows, or something. - The next time you run out, we're gonna burn!"); + should, like, close some windows, or something. + The next time you run out, we're gonna burn!"); set_new_handler (old_handler); return; } @@ -65,5 +65,8 @@ } </pre><p> <code class="classname">bad_alloc</code> is derived from the base <code class="classname">exception</code> - class defined in Chapter 19. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch04s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">NULL </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Termination</td></tr></table></div></body></html> + class defined in Sect1 19. + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="support.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="termination.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. + Support + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Termination</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/exceptions.html b/libstdc++-v3/doc/html/manual/exceptions.html deleted file mode 100644 index 3e6b12b93e4..00000000000 --- a/libstdc++-v3/doc/html/manual/exceptions.html +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Exceptions</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="prev" href="diagnostics.html" title="Part III. Diagnostics" /><link rel="next" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Exceptions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><th width="60%" align="center">Part III. - Diagnostics - -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 7. Exceptions"><div class="titlepage"><div><div><h2 class="title"><a id="manual.diagnostics.exceptions"></a>Chapter 7. Exceptions</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></div><div class="sect1" title="Exception Classes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.diagnostics.exceptions.hierarchy"></a>Exception Classes</h2></div></div></div><p> - All exception objects are defined in one of the standard header - files: <code class="filename">exception</code>, - <code class="filename">stdexcept</code>, <code class="filename">new</code>, and - <code class="filename">typeinfo</code>. - </p><p> - The base exception object is <code class="classname">exception</code>, - located in <code class="filename">exception</code>. This object has no - <code class="classname">string</code> member. - </p><p> - Derived from this are several classes that may have a - <code class="classname">string</code> member: a full hierarchy can be - found in the <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00460.html" target="_top">source documentation</a>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="diagnostics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="diagnostics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch07s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part III. - Diagnostics - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Adding Data to Exceptions</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_algorithms.html b/libstdc++-v3/doc/html/manual/ext_algorithms.html index 02231d43e4d..1b42f7da28e 100644 --- a/libstdc++-v3/doc/html/manual/ext_algorithms.html +++ b/libstdc++-v3/doc/html/manual/ext_algorithms.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 36. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_utilities.html" title="Chapter 35. Utilities" /><link rel="next" href="ext_numerics.html" title="Chapter 37. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 36. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. Algorithms</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_utilities.html" title="Chapter 22. Utilities" /><link rel="next" href="ext_numerics.html" title="Chapter 24. Numerics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Algorithms</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 36. Algorithms"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"></a>Chapter 36. Algorithms</h2></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count +</th><td width="20%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 23. Algorithms"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.algorithms"></a>Chapter 23. Algorithms</h2></div></div></div><p>25.1.6 (count, count_if) is extended with two more versions of count and count_if. The standard versions return their results. The additional signatures return void, but take a final parameter by reference to which they assign their results, e.g., @@ -16,8 +16,8 @@ </p><p>25.3 (sorting 'n' heaps 'n' stuff) is extended with some helper predicates. Look in the doxygen-generated pages for notes on these. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">is_heap</code> tests whether or not a range is a heap.</p></li><li class="listitem"><p><code class="code">is_sorted</code> tests whether or not a range is sorted in - nondescending order.</p></li></ul></div><p>25.3.8 (lexicographical_compare) is extended with + nondescending order.</p></li></ul></div><p>25.3.8 (lexicographical_compare) is extended with </p><pre class="programlisting"> lexicographical_compare_3way(_InputIter1 first1, _InputIter1 last1, - _InputIter2 first2, _InputIter2 last2)</pre><p>which does... what? -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 35. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 37. Numerics</td></tr></table></div></body></html> + _InputIter2 first2, _InputIter2 last2)</pre><p>which does... what? +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_numerics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 22. Utilities </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 24. Numerics</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_allocators.html b/libstdc++-v3/doc/html/manual/ext_allocators.html index bbb5300fb2b..37bed0b14f7 100644 --- a/libstdc++-v3/doc/html/manual/ext_allocators.html +++ b/libstdc++-v3/doc/html/manual/ext_allocators.html @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 33. Allocators</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch32s07.html" title="Diagnostics" /><link rel="next" href="bitmap_allocator.html" title="bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 33. Allocators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch32s07.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 20. Allocators</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bk01pt03ch19s07.html" title="Diagnostics" /><link rel="next" href="bitmap_allocator.html" title="bitmap_allocator" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 20. Allocators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch19s07.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 33. Allocators"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator"></a>Chapter 33. Allocators</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="sect1" title="mt_allocator"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.mt"></a>mt_allocator</h2></div></div></div><p> -</p><div class="sect2" title="Intro"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.intro"></a>Intro</h3></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 20. Allocators"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.allocator"></a>Chapter 20. Allocators</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></div><div class="sect1" title="mt_allocator"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.allocator.mt"></a>mt_allocator</h2></div></div></div><p> +</p><div class="sect2" title="Intro"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.intro"></a>Intro</h3></div></div></div><p> The mt allocator [hereinafter referred to simply as "the allocator"] is a fixed size (power of two) allocator that was initially developed specifically to suit the needs of multi threaded @@ -25,7 +25,7 @@ describing the characteristics of the memory pool, a policy class containing this pool that links instantiation types to common or individual pools, and a class inheriting from the policy class that is the actual allocator. -</p><p>The datum describing pools characteristics is +</p><p>The datum describing pools characteristics is </p><pre class="programlisting"> template<bool _Thread> class __pool @@ -82,9 +82,9 @@ int main() tune_type t_single(16, 5120, 32, 5120, 1, 10, false); tune_type t; - t = allocator_type::_M_get_options(); + t = allocator_type::_M_get_options(); allocator_type::_M_set_options(t_opt); - t = allocator_type::_M_get_options(); + t = allocator_type::_M_get_options(); allocator_type a; allocator_type::pointer p1 = a.allocate(128); @@ -111,18 +111,18 @@ The _S_initialize() function: allocate() to return memory directly from a new() call, and deallocate will only do a delete() call. </p><p> -- If the GLIBCXX_FORCE_NEW environment variable is not set, both ST and MT +- If the GLIBCXX_FORCE_NEW environment variable is not set, both ST and MT applications will: - Calculate the number of bins needed. A bin is a specific power of two size - of bytes. I.e., by default the allocator will deal with requests of up to - 128 bytes (or whatever the value of _S_max_bytes is when _S_init() is - called). This means that there will be bins of the following sizes - (in bytes): 1, 2, 4, 8, 16, 32, 64, 128. + of bytes. I.e., by default the allocator will deal with requests of up to + 128 bytes (or whatever the value of _S_max_bytes is when _S_init() is + called). This means that there will be bins of the following sizes + (in bytes): 1, 2, 4, 8, 16, 32, 64, 128. - - Create the _S_binmap array. All requests are rounded up to the next - "large enough" bin. I.e., a request for 29 bytes will cause a block from - the "32 byte bin" to be returned to the application. The purpose of - _S_binmap is to speed up the process of finding out which bin to use. + - Create the _S_binmap array. All requests are rounded up to the next + "large enough" bin. I.e., a request for 29 bytes will cause a block from + the "32 byte bin" to be returned to the application. The purpose of + _S_binmap is to speed up the process of finding out which bin to use. I.e., the value of _S_binmap[ 29 ] is initialized to 5 (bin 5 = 32 bytes). </p><p> - Create the _S_bin array. This array consists of bin_records. There will be @@ -130,35 +130,35 @@ The _S_initialize() function: earlier. I.e., if _S_max_bytes = 128 there will be 8 entries. Each bin_record is then initialized: - bin_record->first = An array of pointers to block_records. There will be - as many block_records pointers as there are maximum number of threads - (in a ST application there is only 1 thread, in a MT application there + as many block_records pointers as there are maximum number of threads + (in a ST application there is only 1 thread, in a MT application there are _S_max_threads). This holds the pointer to the first free block for each thread in this bin. I.e., if we would like to know where the first free block of size 32 for thread number 3 is we would look this up by: _S_bin[ 5 ].first[ 3 ] - The above created block_record pointers members are now initialized to + The above created block_record pointers members are now initialized to their initial values. I.e. _S_bin[ n ].first[ n ] = NULL; </p><p> - Additionally a MT application will: - Create a list of free thread id's. The pointer to the first entry - is stored in _S_thread_freelist_first. The reason for this approach is - that the __gthread_self() call will not return a value that corresponds to + is stored in _S_thread_freelist_first. The reason for this approach is + that the __gthread_self() call will not return a value that corresponds to the maximum number of threads allowed but rather a process id number or something else. So what we do is that we create a list of thread_records. This list is _S_max_threads long and each entry holds a size_t thread_id which is initialized to 1, 2, 3, 4, 5 and so on up to _S_max_threads. - Each time a thread calls allocate() or deallocate() we call + Each time a thread calls allocate() or deallocate() we call _S_get_thread_id() which looks at the value of _S_thread_key which is a thread local storage pointer. If this is NULL we know that this is a newly created thread and we pop the first entry from this list and saves the - pointer to this record in the _S_thread_key variable. The next time - we will get the pointer to the thread_record back and we use the - thread_record->thread_id as identification. I.e., the first thread that + pointer to this record in the _S_thread_key variable. The next time + we will get the pointer to the thread_record back and we use the + thread_record->thread_id as identification. I.e., the first thread that calls allocate will get the first record in this list and thus be thread number 1 and will then find the pointer to its first free 32 byte block in _S_bin[ 5 ].first[ 1 ] - When we create the _S_thread_key we also define a destructor + When we create the _S_thread_key we also define a destructor (_S_thread_key_destr) which means that when the thread dies, this thread_record is returned to the front of this list and the thread id can then be reused if a new thread is created. @@ -176,7 +176,7 @@ The _S_initialize() function: has made 678 requests (and no deallocations...) of 32-byte blocks this counter will read 678. - The above created arrays are now initialized with their initial values. + The above created arrays are now initialized with their initial values. I.e. _S_bin[ n ].free[ n ] = 0; </p><p> - Initialize the mutex of each bin_record: The bin_record->mutex @@ -260,39 +260,39 @@ This is the first two blocks in freelist for thread id 3 in bin 3 (8 bytes): +----------------+ </pre><p> With this in mind we simplify things a bit for a while and say that there is -only one thread (a ST application). In this case all operations are made to +only one thread (a ST application). In this case all operations are made to what is referred to as the global pool - thread id 0 (No thread may be assigned this id since they span from 1 to _S_max_threads in a MT application). </p><p> When the application requests memory (calling allocate()) we first look at the requested size and if this is > _S_max_bytes we call new() directly and return. </p><p> -If the requested size is within limits we start by finding out from which +If the requested size is within limits we start by finding out from which bin we should serve this request by looking in _S_binmap. </p><p> A quick look at _S_bin[ bin ].first[ 0 ] tells us if there are any blocks of this size on the freelist (0). If this is not NULL - fine, just remove the -block that _S_bin[ bin ].first[ 0 ] points to from the list, +block that _S_bin[ bin ].first[ 0 ] points to from the list, update _S_bin[ bin ].first[ 0 ] and return a pointer to that blocks data. </p><p> -If the freelist is empty (the pointer is NULL) we must get memory from the +If the freelist is empty (the pointer is NULL) we must get memory from the system and build us a freelist within this memory. All requests for new memory -is made in chunks of _S_chunk_size. Knowing the size of a block_record and -the bytes that this bin stores we then calculate how many blocks we can create +is made in chunks of _S_chunk_size. Knowing the size of a block_record and +the bytes that this bin stores we then calculate how many blocks we can create within this chunk, build the list, remove the first block, update the pointer -(_S_bin[ bin ].first[ 0 ]) and return a pointer to that blocks data. +(_S_bin[ bin ].first[ 0 ]) and return a pointer to that blocks data. </p><p> Deallocation is equally simple; the pointer is casted back to a block_record -pointer, lookup which bin to use based on the size, add the block to the front -of the global freelist and update the pointer as needed +pointer, lookup which bin to use based on the size, add the block to the front +of the global freelist and update the pointer as needed (_S_bin[ bin ].first[ 0 ]). </p><p> The decision to add deallocated blocks to the front of the freelist was made after a set of performance measurements that showed that this is roughly 10% faster than maintaining a set of "last pointers" as well. </p></div><div class="sect2" title="Multiple Thread Example"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.mt.example_multi"></a>Multiple Thread Example</h3></div></div></div><p> -In the ST example we never used the thread_id variable present in each block. -Let's start by explaining the purpose of this in a MT application. +In the ST example we never used the thread_id variable present in each block. +Let's start by explaining the purpose of this in a MT application. </p><p> The concept of "ownership" was introduced since many MT applications allocate and deallocate memory to shared containers from different @@ -321,10 +321,10 @@ When the application requests memory (calling allocate()) we first look at the requested size and if this is >_S_max_bytes we call new() directly and return. </p><p> -If the requested size is within limits we start by finding out from which +If the requested size is within limits we start by finding out from which bin we should serve this request by looking in _S_binmap. </p><p> -A call to _S_get_thread_id() returns the thread id for the calling thread +A call to _S_get_thread_id() returns the thread id for the calling thread (and if no value has been set in _S_thread_key, a new id is assigned and returned). </p><p> @@ -394,4 +394,4 @@ mutex to be locked) this operation is also made in chunks of blocks a threads freelist mentioned above). The "formula" used can probably be improved to further reduce the risk of blocks being "bounced back and forth" between freelists. -</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch32s07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Diagnostics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitmap_allocator</td></tr></table></div></body></html> +</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch19s07.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bitmap_allocator.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Diagnostics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> bitmap_allocator</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_compile_checks.html b/libstdc++-v3/doc/html/manual/ext_compile_checks.html index 104d81a9908..e99452bdb59 100644 --- a/libstdc++-v3/doc/html/manual/ext_compile_checks.html +++ b/libstdc++-v3/doc/html/manual/ext_compile_checks.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 29. Compile Time Checks</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12pr03.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 30. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 29. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12pr03.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Compile Time Checks</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bk01pt03pr01.html" title="" /><link rel="next" href="debug_mode.html" title="Chapter 17. Debug Mode" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Compile Time Checks</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03pr01.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 29. Compile Time Checks"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter 29. Compile Time Checks</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 16. Compile Time Checks"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.compile_checks"></a>Chapter 16. Compile Time Checks</h2></div></div></div><p> Also known as concept checking. </p><p>In 1999, SGI added <span class="emphasis"><em>concept checkers</em></span> to their implementation of the STL: code which checked the template parameters of @@ -37,4 +37,4 @@ support for template parameter constraints based on concepts in the core language. This will obviate the need for the library-simulated concept checking described above. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12pr03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 30. Debug Mode</td></tr></table></div></body></html> + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03pr01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug_mode.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 17. Debug Mode</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_concurrency.html b/libstdc++-v3/doc/html/manual/ext_concurrency.html index 0d660c7402c..c9922a9b6bc 100644 --- a/libstdc++-v3/doc/html/manual/ext_concurrency.html +++ b/libstdc++-v3/doc/html/manual/ext_concurrency.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 41. Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_demangling.html" title="Chapter 40. Demangling" /><link rel="next" href="bk01pt12ch41s02.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 41. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 28. Concurrency</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_demangling.html" title="Chapter 27. Demangling" /><link rel="next" href="bk01pt03ch28s02.html" title="Implementation" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Concurrency</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch41s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 41. Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 41. Concurrency</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s03.html">Use</a></span></dt></dl></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="sect2" title="Interface to Locks and Mutexes"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file <ext/concurrence.h> contains all the higher-level +</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch28s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 28. Concurrency"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.concurrency"></a>Chapter 28. Concurrency</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></div><div class="sect1" title="Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.concurrency.design"></a>Design</h2></div></div></div><div class="sect2" title="Interface to Locks and Mutexes"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.threads"></a>Interface to Locks and Mutexes</h3></div></div></div><p>The file <ext/concurrence.h> contains all the higher-level constructs for playing with threads. In contrast to the atomics layer, the concurrence layer consists largely of types. All types are defined within <code class="code">namespace __gnu_cxx</code>. </p><p> @@ -31,7 +31,7 @@ locks it during construction of <code class="code">__scoped_locke</code> and unlocks it during destruction. This is an efficient way of locking critical sections, while retaining exception-safety. </p></div><div class="sect2" title="Interface to Atomic Functions"><div class="titlepage"><div><div><h3 class="title"><a id="manual.ext.concurrency.design.atomics"></a>Interface to Atomic Functions</h3></div></div></div><p> -Two functions and one type form the base of atomic support. +Two functions and one type form the base of atomic support. </p><p>The type <code class="code">_Atomic_word</code> is a signed integral type supporting atomic operations. </p><p> @@ -56,7 +56,7 @@ __atomic_add_dispatch </p><p>Adds the second argument's value to the first argument. Has no return value. </p></li></ul></div><p> These functions forward to one of several specialized helper -functions, depending on the circumstances. For instance, +functions, depending on the circumstances. For instance, </p><p> <code class="code"> __exchange_and_add_dispatch @@ -67,7 +67,7 @@ Calls through to either of: </p><p>Multi-thread version. Inlined if compiler-generated builtin atomics can be used, otherwise resolved at link time to a non-builtin code sequence. -</p></li><li class="listitem"><p><code class="code">__exchange_and_add_single</code> +</p></li><li class="listitem"><p><code class="code">__exchange_and_add_single</code> </p><p>Single threaded version. Inlined.</p></li></ul></div><p>However, only <code class="code">__exchange_and_add_dispatch</code> and <code class="code">__atomic_add_dispatch</code> should be used. These functions can be used in a portable manner, regardless of the specific @@ -79,13 +79,13 @@ operations.) In addition, there are two macros </p><p> <code class="code"> -_GLIBCXX_READ_MEM_BARRIER +_GLIBCXX_READ_MEM_BARRIER </code> </p><p> <code class="code"> -_GLIBCXX_WRITE_MEM_BARRIER +_GLIBCXX_WRITE_MEM_BARRIER </code> </p><p> Which expand to the appropriate write and read barrier required by the host hardware and operating system. -</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch41s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 40. Demangling </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation</td></tr></table></div></body></html> +</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_demangling.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch28s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 27. Demangling </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Implementation</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_containers.html b/libstdc++-v3/doc/html/manual/ext_containers.html index 5b767d27922..79fe759fcd9 100644 --- a/libstdc++-v3/doc/html/manual/ext_containers.html +++ b/libstdc++-v3/doc/html/manual/ext_containers.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 34. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator" /><link rel="next" href="bk01pt12ch34s02.html" title="HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 34. Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 21. Containers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bitmap_allocator.html" title="bitmap_allocator" /><link rel="next" href="bk01pt03ch21s02.html" title="HP/SGI" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 21. Containers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch34s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 34. Containers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 34. Containers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch21s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 21. Containers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.containers"></a>Chapter 21. Containers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></div><p> </p><div class="sect1" title="Policy Based Data Structures"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.containers.pbds"></a>Policy Based Data Structures</h2></div></div></div><p> <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html" target="_top">More details here</a>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch34s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitmap_allocator </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> HP/SGI</td></tr></table></div></body></html> + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitmap_allocator.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch21s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitmap_allocator </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> HP/SGI</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_demangling.html b/libstdc++-v3/doc/html/manual/ext_demangling.html index 9214423d3b5..4a991d0313d 100644 --- a/libstdc++-v3/doc/html/manual/ext_demangling.html +++ b/libstdc++-v3/doc/html/manual/ext_demangling.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 40. Demangling</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_io.html" title="Chapter 39. Input and Output" /><link rel="next" href="ext_concurrency.html" title="Chapter 41. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 40. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. Demangling</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_io.html" title="Chapter 26. Input and Output" /><link rel="next" href="ext_concurrency.html" title="Chapter 28. Concurrency" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. Demangling</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 40. Demangling"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"></a>Chapter 40. Demangling</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 27. Demangling"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.demangle"></a>Chapter 27. Demangling</h2></div></div></div><p> Transforming C++ ABI identifiers (like RTTI symbols) into the original C++ source identifiers is called <span class="quote">“<span class="quote">demangling.</span>”</span> @@ -63,7 +63,7 @@ int main() </p><pre class="screen"> <code class="computeroutput"> St13bad_exception => std::bad_exception : 0 - 3barI5emptyLi17EE => bar<empty, 17> : 0 + 3barI5emptyLi17EE => bar<empty, 17> : 0 </code> </pre><p> The demangler interface is described in the source documentation @@ -71,4 +71,4 @@ int main() be writing C++ in order to demangle C++. (That also means we have to use crummy memory management facilities, so don't forget to free() the returned char array.) - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 39. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 41. Concurrency</td></tr></table></div></body></html> + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_concurrency.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 26. Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 28. Concurrency</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_io.html b/libstdc++-v3/doc/html/manual/ext_io.html index 0afa23ddf96..0c67bf6a2e5 100644 --- a/libstdc++-v3/doc/html/manual/ext_io.html +++ b/libstdc++-v3/doc/html/manual/ext_io.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 39. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_iterators.html" title="Chapter 38. Iterators" /><link rel="next" href="ext_demangling.html" title="Chapter 40. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 39. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_iterators.html" title="Chapter 25. Iterators" /><link rel="next" href="ext_demangling.html" title="Chapter 27. Demangling" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Input and Output</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 39. Input and Output"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 39. Input and Output</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 26. Input and Output"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.io"></a>Chapter 26. Input and Output</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></div><p> Extensions allowing <code class="code">filebuf</code>s to be constructed from "C" types like FILE*s and file descriptors. </p><div class="sect1" title="Derived filebufs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.io.filebuf_derived"></a>Derived filebufs</h2></div></div></div><p>The v2 library included non-standard extensions to construct @@ -13,38 +13,38 @@ IOStreams is via the <code class="code">stdio_filebuf</code> class (see below), but earlier releases provided slightly different mechanisms. </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>3.0.x <code class="code">filebuf</code>s have another ctor with this signature: - <code class="code">basic_filebuf(__c_file_type*, ios_base::openmode, int_type); + <code class="code">basic_filebuf(__c_file_type*, ios_base::openmode, int_type); </code> - This comes in very handy in a number of places, such as - attaching Unix sockets, pipes, and anything else which uses file - descriptors, into the IOStream buffering classes. The three - arguments are as follows: - </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p><code class="code">__c_file_type* F </code> - // the __c_file_type typedef usually boils down to stdio's FILE - </p></li><li class="listitem"><p><code class="code">ios_base::openmode M </code> - // same as all the other uses of openmode - </p></li><li class="listitem"><p><code class="code">int_type B </code> - // buffer size, defaults to BUFSIZ if not specified - </p></li></ul></div><p> - For those wanting to use file descriptors instead of FILE*'s, I - invite you to contemplate the mysteries of C's <code class="code">fdopen()</code>. + This comes in very handy in a number of places, such as + attaching Unix sockets, pipes, and anything else which uses file + descriptors, into the IOStream buffering classes. The three + arguments are as follows: + </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p><code class="code">__c_file_type* F </code> + // the __c_file_type typedef usually boils down to stdio's FILE + </p></li><li class="listitem"><p><code class="code">ios_base::openmode M </code> + // same as all the other uses of openmode + </p></li><li class="listitem"><p><code class="code">int_type B </code> + // buffer size, defaults to BUFSIZ if not specified + </p></li></ul></div><p> + For those wanting to use file descriptors instead of FILE*'s, I + invite you to contemplate the mysteries of C's <code class="code">fdopen()</code>. </p></li><li class="listitem"><p>In library snapshot 3.0.95 and later, <code class="code">filebuf</code>s bring - back an old extension: the <code class="code">fd()</code> member function. The - integer returned from this function can be used for whatever file - descriptors can be used for on your platform. Naturally, the - library cannot track what you do on your own with a file descriptor, - so if you perform any I/O directly, don't expect the library to be - aware of it. + back an old extension: the <code class="code">fd()</code> member function. The + integer returned from this function can be used for whatever file + descriptors can be used for on your platform. Naturally, the + library cannot track what you do on your own with a file descriptor, + so if you perform any I/O directly, don't expect the library to be + aware of it. </p></li><li class="listitem"><p>Beginning with 3.1, the extra <code class="code">filebuf</code> constructor and - the <code class="code">fd()</code> function were removed from the standard - filebuf. Instead, <code class="code"><ext/stdio_filebuf.h></code> contains - a derived class called - <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html" target="_top"><code class="code">__gnu_cxx::stdio_filebuf</code></a>. - This class can be constructed from a C <code class="code">FILE*</code> or a file - descriptor, and provides the <code class="code">fd()</code> function. + the <code class="code">fd()</code> function were removed from the standard + filebuf. Instead, <code class="code"><ext/stdio_filebuf.h></code> contains + a derived class called + <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html" target="_top"><code class="code">__gnu_cxx::stdio_filebuf</code></a>. + This class can be constructed from a C <code class="code">FILE*</code> or a file + descriptor, and provides the <code class="code">fd()</code> function. </p></li></ul></div><p>If you want to access a <code class="code">filebuf</code>'s file descriptor to implement file locking (e.g. using the <code class="code">fcntl()</code> system call) then you might be interested in Henry Suter's RWLock class. </p><p> - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 38. Iterators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 40. Demangling</td></tr></table></div></body></html> + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_iterators.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_demangling.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 25. Iterators </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 27. Demangling</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_iterators.html b/libstdc++-v3/doc/html/manual/ext_iterators.html index 88259a8ace9..5f5a5348547 100644 --- a/libstdc++-v3/doc/html/manual/ext_iterators.html +++ b/libstdc++-v3/doc/html/manual/ext_iterators.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 38. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_numerics.html" title="Chapter 37. Numerics" /><link rel="next" href="ext_io.html" title="Chapter 39. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 38. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_numerics.html" title="Chapter 24. Numerics" /><link rel="next" href="ext_io.html" title="Chapter 26. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Iterators</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 38. Iterators"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"></a>Chapter 38. Iterators</h2></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the +</th><td width="20%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 25. Iterators"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.iterators"></a>Chapter 25. Iterators</h2></div></div></div><p>24.3.2 describes <code class="code">struct iterator</code>, which didn't exist in the original HP STL implementation (the language wasn't rich enough at the time). For backwards compatibility, base classes are provided which declare the same nested typedefs: @@ -11,4 +11,4 @@ two iterators and returns a result. It is extended by another signature which takes two iterators and a reference to a result. The result is modified, and the function returns nothing. -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 37. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 39. Input and Output</td></tr></table></div></body></html> +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 24. Numerics </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 26. Input and Output</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_numerics.html b/libstdc++-v3/doc/html/manual/ext_numerics.html index e8f86678a7c..3316ec1d0ea 100644 --- a/libstdc++-v3/doc/html/manual/ext_numerics.html +++ b/libstdc++-v3/doc/html/manual/ext_numerics.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 37. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="ext_algorithms.html" title="Chapter 36. Algorithms" /><link rel="next" href="ext_iterators.html" title="Chapter 38. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 37. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="ext_algorithms.html" title="Chapter 23. Algorithms" /><link rel="next" href="ext_iterators.html" title="Chapter 25. Iterators" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Numerics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 37. Numerics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"></a>Chapter 37. Numerics</h2></div></div></div><p>26.4, the generalized numeric operations such as accumulate, are extended +</th><td width="20%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 24. Numerics"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.numerics"></a>Chapter 24. Numerics</h2></div></div></div><p>26.4, the generalized numeric operations such as accumulate, are extended with the following functions: </p><pre class="programlisting"> power (x, n); @@ -17,4 +17,4 @@ That is, it assigns value to *first, value + 1 to *(first + 1) and so on." Quoted from SGI documentation. </p><pre class="programlisting"> - void iota(_ForwardIter first, _ForwardIter last, _Tp value);</pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 36. Algorithms </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 38. Iterators</td></tr></table></div></body></html> + void iota(_ForwardIter first, _ForwardIter last, _Tp value);</pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ext_algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_iterators.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 23. Algorithms </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 25. Iterators</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/ext_utilities.html b/libstdc++-v3/doc/html/manual/ext_utilities.html index 2685de374b9..3485222aa4b 100644 --- a/libstdc++-v3/doc/html/manual/ext_utilities.html +++ b/libstdc++-v3/doc/html/manual/ext_utilities.html @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 35. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch34s03.html" title="Deprecated HP/SGI" /><link rel="next" href="ext_algorithms.html" title="Chapter 36. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 35. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch34s03.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bk01pt03ch21s03.html" title="Deprecated HP/SGI" /><link rel="next" href="ext_algorithms.html" title="Chapter 23. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Utilities</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch21s03.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 35. Utilities"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"></a>Chapter 35. Utilities</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 22. Utilities"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.util"></a>Chapter 22. Utilities</h2></div></div></div><p> The <functional> header contains many additional functors and helper functions, extending section 20.3. They are implemented in the file stl_function.h: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">identity_element</code> for addition and multiplication. * + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">identity_element</code> for addition and multiplication. * </p></li><li class="listitem"><p>The functor <code class="code">identity</code>, whose <code class="code">operator()</code> - returns the argument unchanged. * + returns the argument unchanged. * </p></li><li class="listitem"><p>Composition functors <code class="code">unary_function</code> and <code class="code">binary_function</code>, and their helpers <code class="code">compose1</code> - and <code class="code">compose2</code>. * - </p></li><li class="listitem"><p><code class="code">select1st</code> and <code class="code">select2nd</code>, to strip pairs. * + and <code class="code">compose2</code>. * + </p></li><li class="listitem"><p><code class="code">select1st</code> and <code class="code">select2nd</code>, to strip pairs. * </p></li><li class="listitem"><p><code class="code">project1st</code> and <code class="code">project2nd</code>. * </p></li><li class="listitem"><p>A set of functors/functions which always return the same result. They are <code class="code">constant_void_fun</code>, <code class="code">constant_binary_fun</code>, <code class="code">constant_unary_fun</code>, <code class="code">constant0</code>, @@ -38,4 +38,4 @@ get_temporary_buffer(5, (int*)0); </p><p> The specialized algorithms of section 20.4.4 are extended with <code class="code">uninitialized_copy_n</code>. * -</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch34s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Deprecated HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 36. Algorithms</td></tr></table></div></body></html> +</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch21s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ext_algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Deprecated HP/SGI </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Algorithms</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/extensions.html b/libstdc++-v3/doc/html/manual/extensions.html index f441d4c8ad8..33f854a19f5 100644 --- a/libstdc++-v3/doc/html/manual/extensions.html +++ b/libstdc++-v3/doc/html/manual/extensions.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part XII. Extensions</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt11ch28s02.html" title="Performance" /><link rel="next" href="bk01pt12pr03.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part III. Extensions</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="facets.html" title="Facets" /><link rel="next" href="bk01pt03pr01.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. Extensions -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part XII. Extensions"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"></a>Part XII. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part III. Extensions"><div class="titlepage"><div><div><h1 class="title"><a id="manual.ext"></a>Part III. Extensions - <a id="id606344" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">32. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">33. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">34. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">35. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">36. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">37. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">38. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">39. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">40. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">41. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch28s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12pr03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Performance </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> + <a id="id468288" class="indexterm"></a> +</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt03pr01.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">20. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">21. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">22. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">23. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">24. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">25. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">26. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">27. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">28. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="facets.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Facets </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/facets.html b/libstdc++-v3/doc/html/manual/facets.html index ba3728e93d1..ee52b350618 100644 --- a/libstdc++-v3/doc/html/manual/facets.html +++ b/libstdc++-v3/doc/html/manual/facets.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 15. Facets aka Categories</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI. Localization" /><link rel="prev" href="locales.html" title="Chapter 14. Locales" /><link rel="next" href="codecvt.html" title="codecvt" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Facets aka Categories</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="locales.html">Prev</a> </td><th width="60%" align="center">Part VI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Facets</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Chapter 8. Localization" /><link rel="prev" href="localization.html" title="Chapter 8. Localization" /><link rel="next" href="containers.html" title="Chapter 9. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Facets</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Chapter 8. Localization -</th><td width="20%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 15. Facets aka Categories"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.facet"></a>Chapter 15. Facets aka Categories</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" title="ctype"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.ctype"></a>ctype</h2></div></div></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.impl"></a>Implementation</h3></div></div></div><div class="sect3" title="Specializations"><div class="titlepage"><div><div><h4 class="title"><a id="id602134"></a>Specializations</h4></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="section" title="Facets"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.facet"></a>Facets</h2></div></div></div><div class="section" title="ctype"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.ctype"></a>ctype</h3></div></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.impl"></a>Implementation</h4></div></div></div><div class="section" title="Specializations"><div class="titlepage"><div><div><h5 class="title"><a id="id422690"></a>Specializations</h5></div></div></div><p> For the required specialization codecvt<wchar_t, char, mbstate_t> , conversions are made between the internal character set (always UCS4 on GNU/Linux) and whatever the currently selected locale for the @@ -28,50 +28,725 @@ to wchar_t and wcsrtombs for conversions between wchar_t and char. </p><p> Neither of these two required specializations deals with Unicode characters. -</p></div></div><div class="sect2" title="Future"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.future"></a>Future</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - How to deal with the global locale issue? - </p></li><li class="listitem"><p> +</p></div></div><div class="section" title="Future"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.future"></a>Future</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + How to deal with the global locale issue? + </p></li><li class="listitem"><p> How to deal with different types than char, wchar_t? </p></li><li class="listitem"><p> - Overlap between codecvt/ctype: narrow/widen - </p></li><li class="listitem"><p> + Overlap between codecvt/ctype: narrow/widen + </p></li><li class="listitem"><p> Mask typedef in codecvt_base, argument types in codecvt. what - is know about this type? - </p></li><li class="listitem"><p> + is know about this type? + </p></li><li class="listitem"><p> Why mask* argument in codecvt? </p></li><li class="listitem"><p> Can this be made (more) generic? is there a simple way to straighten out the configure-time mess that is a by-product of - this class? - </p></li><li class="listitem"><p> + this class? + </p></li><li class="listitem"><p> Get the ctype<wchar_t>::mask stuff under control. Need to make some kind of static table, and not do lookup every time somebody hits the do_is... functions. Too bad we can't just - redefine mask for ctype<wchar_t> - </p></li><li class="listitem"><p> + redefine mask for ctype<wchar_t> + </p></li><li class="listitem"><p> Rename abstract base class. See if just smash-overriding is a better approach. Clarify, add sanity to naming. - </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id721212"></a><p><span class="title"><i> + </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.ctype.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id442703"></a><p><span class="title"><i> The GNU C Library - </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry" title="Correspondence"><a id="id611041"></a><p><span class="title"><i> + </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry" title="Correspondence"><a id="id426343"></a><p><span class="title"><i> Correspondence - </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id612309"></a><p><span class="title"><i> + </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id468198"></a><p><span class="title"><i> ISO/IEC 14882:1998 Programming languages - C++ - </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id612328"></a><p><span class="title"><i> + </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id468216"></a><p><span class="title"><i> ISO/IEC 9899:1999 Programming languages - C - </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)"><a id="id626861"></a><p><span class="title"><i> - The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) - </i>. </span><span class="copyright">Copyright © 1999 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid"> + </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id398382"></a><p><span class="biblioid"> <a class="ulink" href="http://www.unix.org/version3/ieee_std.html" target="_top"> + <em class="citetitle"> + The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) + </em> + </a> + . </span><span class="copyright">Copyright © 1999 + The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id398412"></a><p><span class="title"><i> + The C++ Programming Language, Special Edition + </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> + Addison Wesley + . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id395406"></a><p><span class="title"><i> + Standard C++ IOStreams and Locales + </i>. </span><span class="subtitle"> + Advanced Programmer's Guide and Reference + . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> + Addison Wesley Longman + . </span></span></p></div></div></div><div class="section" title="codecvt"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.facet.codecvt"></a>codecvt</h3></div></div></div><p> +The standard class codecvt attempts to address conversions between +different character encoding schemes. In particular, the standard +attempts to detail conversions between the implementation-defined wide +characters (hereafter referred to as wchar_t) and the standard type +char that is so beloved in classic <span class="quote">“<span class="quote">C</span>”</span> (which can now be +referred to as narrow characters.) This document attempts to describe +how the GNU libstdc++ implementation deals with the conversion between +wide and narrow characters, and also presents a framework for dealing +with the huge number of other encodings that iconv can convert, +including Unicode and UTF8. Design issues and requirements are +addressed, and examples of correct usage for both the required +specializations for wide and narrow characters and the +implementation-provided extended functionality are given. +</p><div class="section" title="Requirements"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.req"></a>Requirements</h4></div></div></div><p> +Around page 425 of the C++ Standard, this charming heading comes into view: +</p><div class="blockquote"><blockquote class="blockquote"><p> +22.2.1.5 - Template class codecvt +</p></blockquote></div><p> +The text around the codecvt definition gives some clues: +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +-1- The class codecvt<internT,externT,stateT> is for use when +converting from one codeset to another, such as from wide characters +to multibyte characters, between wide character encodings such as +Unicode and EUC. +</em></span> +</p></blockquote></div><p> +Hmm. So, in some unspecified way, Unicode encodings and +translations between other character sets should be handled by this +class. +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +-2- The stateT argument selects the pair of codesets being mapped between. +</em></span> +</p></blockquote></div><p> +Ah ha! Another clue... +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +-3- The instantiations required in the Table ?? +(lib.locale.category), namely codecvt<wchar_t,char,mbstate_t> and +codecvt<char,char,mbstate_t>, convert the implementation-defined +native character set. codecvt<char,char,mbstate_t> implements a +degenerate conversion; it does not convert at +all. codecvt<wchar_t,char,mbstate_t> converts between the native +character sets for tiny and wide characters. Instantiations on +mbstate_t perform conversion between encodings known to the library +implementor. Other encodings can be converted by specializing on a +user-defined stateT type. The stateT object can contain any state that +is useful to communicate to or from the specialized do_convert member. +</em></span> +</p></blockquote></div><p> +At this point, a couple points become clear: +</p><p> +One: The standard clearly implies that attempts to add non-required +(yet useful and widely used) conversions need to do so through the +third template parameter, stateT.</p><p> +Two: The required conversions, by specifying mbstate_t as the third +template parameter, imply an implementation strategy that is mostly +(or wholly) based on the underlying C library, and the functions +mcsrtombs and wcsrtombs in particular.</p></div><div class="section" title="Design"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.design"></a>Design</h4></div></div></div><div class="section" title="wchar_t Size"><div class="titlepage"><div><div><h5 class="title"><a id="codecvt.design.wchar_t_size"></a><span class="type">wchar_t</span> Size</h5></div></div></div><p> + The simple implementation detail of wchar_t's size seems to + repeatedly confound people. Many systems use a two byte, + unsigned integral type to represent wide characters, and use an + internal encoding of Unicode or UCS2. (See AIX, Microsoft NT, + Java, others.) Other systems, use a four byte, unsigned integral + type to represent wide characters, and use an internal encoding + of UCS4. (GNU/Linux systems using glibc, in particular.) The C + programming language (and thus C++) does not specify a specific + size for the type wchar_t. + </p><p> + Thus, portable C++ code cannot assume a byte size (or endianness) either. + </p></div><div class="section" title="Support for Unicode"><div class="titlepage"><div><div><h5 class="title"><a id="codecvt.design.unicode"></a>Support for Unicode</h5></div></div></div><p> + Probably the most frequently asked question about code conversion + is: "So dudes, what's the deal with Unicode strings?" + The dude part is optional, but apparently the usefulness of + Unicode strings is pretty widely appreciated. Sadly, this specific + encoding (And other useful encodings like UTF8, UCS4, ISO 8859-10, + etc etc etc) are not mentioned in the C++ standard. + </p><p> + A couple of comments: + </p><p> + The thought that all one needs to convert between two arbitrary + codesets is two types and some kind of state argument is + unfortunate. In particular, encodings may be stateless. The naming + of the third parameter as stateT is unfortunate, as what is really + needed is some kind of generalized type that accounts for the + issues that abstract encodings will need. The minimum information + that is required includes: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + Identifiers for each of the codesets involved in the + conversion. For example, using the iconv family of functions + from the Single Unix Specification (what used to be called + X/Open) hosted on the GNU/Linux operating system allows + bi-directional mapping between far more than the following + tantalizing possibilities: + </p><p> + (An edited list taken from <code class="code">`iconv --list`</code> on a + Red Hat 6.2/Intel system: + </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting"> +8859_1, 8859_9, 10646-1:1993, 10646-1:1993/UCS4, ARABIC, ARABIC7, +ASCII, EUC-CN, EUC-JP, EUC-KR, EUC-TW, GREEK-CCIcode, GREEK, GREEK7-OLD, +GREEK7, GREEK8, HEBREW, ISO-8859-1, ISO-8859-2, ISO-8859-3, +ISO-8859-4, ISO-8859-5, ISO-8859-6, ISO-8859-7, ISO-8859-8, +ISO-8859-9, ISO-8859-10, ISO-8859-11, ISO-8859-13, ISO-8859-14, +ISO-8859-15, ISO-10646, ISO-10646/UCS2, ISO-10646/UCS4, +ISO-10646/UTF-8, ISO-10646/UTF8, SHIFT-JIS, SHIFT_JIS, UCS-2, UCS-4, +UCS2, UCS4, UNICODE, UNICODEBIG, UNICODELIcodeLE, US-ASCII, US, UTF-8, +UTF-16, UTF8, UTF16). +</pre></blockquote></div><p> +For iconv-based implementations, string literals for each of the +encodings (i.e. "UCS-2" and "UTF-8") are necessary, +although for other, +non-iconv implementations a table of enumerated values or some other +mechanism may be required. +</p></li><li class="listitem"><p> + Maximum length of the identifying string literal. +</p></li><li class="listitem"><p> + Some encodings require explicit endian-ness. As such, some kind + of endian marker or other byte-order marker will be necessary. See + "Footnotes for C/C++ developers" in Haible for more information on + UCS-2/Unicode endian issues. (Summary: big endian seems most likely, + however implementations, most notably Microsoft, vary.) +</p></li><li class="listitem"><p> + Types representing the conversion state, for conversions involving + the machinery in the "C" library, or the conversion descriptor, for + conversions using iconv (such as the type iconv_t.) Note that the + conversion descriptor encodes more information than a simple encoding + state type. +</p></li><li class="listitem"><p> + Conversion descriptors for both directions of encoding. (i.e., both + UCS-2 to UTF-8 and UTF-8 to UCS-2.) +</p></li><li class="listitem"><p> + Something to indicate if the conversion requested if valid. +</p></li><li class="listitem"><p> + Something to represent if the conversion descriptors are valid. +</p></li><li class="listitem"><p> + Some way to enforce strict type checking on the internal and + external types. As part of this, the size of the internal and + external types will need to be known. +</p></li></ul></div></div><div class="section" title="Other Issues"><div class="titlepage"><div><div><h5 class="title"><a id="codecvt.design.issues"></a>Other Issues</h5></div></div></div><p> +In addition, multi-threaded and multi-locale environments also impact +the design and requirements for code conversions. In particular, they +affect the required specialization codecvt<wchar_t, char, mbstate_t> +when implemented using standard "C" functions. +</p><p> +Three problems arise, one big, one of medium importance, and one small. +</p><p> +First, the small: mcsrtombs and wcsrtombs may not be multithread-safe +on all systems required by the GNU tools. For GNU/Linux and glibc, +this is not an issue. +</p><p> +Of medium concern, in the grand scope of things, is that the functions +used to implement this specialization work on null-terminated +strings. Buffers, especially file buffers, may not be null-terminated, +thus giving conversions that end prematurely or are otherwise +incorrect. Yikes! +</p><p> +The last, and fundamental problem, is the assumption of a global +locale for all the "C" functions referenced above. For something like +C++ iostreams (where codecvt is explicitly used) the notion of +multiple locales is fundamental. In practice, most users may not run +into this limitation. However, as a quality of implementation issue, +the GNU C++ library would like to offer a solution that allows +multiple locales and or simultaneous usage with computationally +correct results. In short, libstdc++ is trying to offer, as an +option, a high-quality implementation, damn the additional complexity! +</p><p> +For the required specialization codecvt<wchar_t, char, mbstate_t> , +conversions are made between the internal character set (always UCS4 +on GNU/Linux) and whatever the currently selected locale for the +LC_CTYPE category implements. +</p></div></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.impl"></a>Implementation</h4></div></div></div><p> +The two required specializations are implemented as follows: +</p><p> +<code class="code"> +codecvt<char, char, mbstate_t> +</code> +</p><p> +This is a degenerate (i.e., does nothing) specialization. Implementing +this was a piece of cake. +</p><p> +<code class="code"> +codecvt<char, wchar_t, mbstate_t> +</code> +</p><p> +This specialization, by specifying all the template parameters, pretty +much ties the hands of implementors. As such, the implementation is +straightforward, involving mcsrtombs for the conversions between char +to wchar_t and wcsrtombs for conversions between wchar_t and char. +</p><p> +Neither of these two required specializations deals with Unicode +characters. As such, libstdc++ implements a partial specialization +of the codecvt class with and iconv wrapper class, encoding_state as the +third template parameter. +</p><p> +This implementation should be standards conformant. First of all, the +standard explicitly points out that instantiations on the third +template parameter, stateT, are the proper way to implement +non-required conversions. Second of all, the standard says (in Chapter +17) that partial specializations of required classes are a-ok. Third +of all, the requirements for the stateT type elsewhere in the standard +(see 21.1.2 traits typedefs) only indicate that this type be copy +constructible. +</p><p> +As such, the type encoding_state is defined as a non-templatized, POD +type to be used as the third type of a codecvt instantiation. This +type is just a wrapper class for iconv, and provides an easy interface +to iconv functionality. +</p><p> +There are two constructors for encoding_state: +</p><p> +<code class="code"> +encoding_state() : __in_desc(0), __out_desc(0) +</code> +</p><p> +This default constructor sets the internal encoding to some default +(currently UCS4) and the external encoding to whatever is returned by +nl_langinfo(CODESET). +</p><p> +<code class="code"> +encoding_state(const char* __int, const char* __ext) +</code> +</p><p> +This constructor takes as parameters string literals that indicate the +desired internal and external encoding. There are no defaults for +either argument. +</p><p> +One of the issues with iconv is that the string literals identifying +conversions are not standardized. Because of this, the thought of +mandating and or enforcing some set of pre-determined valid +identifiers seems iffy: thus, a more practical (and non-migraine +inducing) strategy was implemented: end-users can specify any string +(subject to a pre-determined length qualifier, currently 32 bytes) for +encodings. It is up to the user to make sure that these strings are +valid on the target system. +</p><p> +<code class="code"> +void +_M_init() +</code> +</p><p> +Strangely enough, this member function attempts to open conversion +descriptors for a given encoding_state object. If the conversion +descriptors are not valid, the conversion descriptors returned will +not be valid and the resulting calls to the codecvt conversion +functions will return error. +</p><p> +<code class="code"> +bool +_M_good() +</code> +</p><p> +Provides a way to see if the given encoding_state object has been +properly initialized. If the string literals describing the desired +internal and external encoding are not valid, initialization will +fail, and this will return false. If the internal and external +encodings are valid, but iconv_open could not allocate conversion +descriptors, this will also return false. Otherwise, the object is +ready to convert and will return true. +</p><p> +<code class="code"> +encoding_state(const encoding_state&) +</code> +</p><p> +As iconv allocates memory and sets up conversion descriptors, the copy +constructor can only copy the member data pertaining to the internal +and external code conversions, and not the conversion descriptors +themselves. +</p><p> +Definitions for all the required codecvt member functions are provided +for this specialization, and usage of codecvt<internal character type, +external character type, encoding_state> is consistent with other +codecvt usage. +</p></div><div class="section" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.use"></a>Use</h4></div></div></div><p>A conversions involving string literal.</p><pre class="programlisting"> + typedef codecvt_base::result result; + typedef unsigned short unicode_t; + typedef unicode_t int_type; + typedef char ext_type; + typedef encoding_state state_type; + typedef codecvt<int_type, ext_type, state_type> unicode_codecvt; + + const ext_type* e_lit = "black pearl jasmine tea"; + int size = strlen(e_lit); + int_type i_lit_base[24] = + { 25088, 27648, 24832, 25344, 27392, 8192, 28672, 25856, 24832, 29184, + 27648, 8192, 27136, 24832, 29440, 27904, 26880, 28160, 25856, 8192, 29696, + 25856, 24832, 2560 + }; + const int_type* i_lit = i_lit_base; + const ext_type* efrom_next; + const int_type* ifrom_next; + ext_type* e_arr = new ext_type[size + 1]; + ext_type* eto_next; + int_type* i_arr = new int_type[size + 1]; + int_type* ito_next; + + // construct a locale object with the specialized facet. + locale loc(locale::classic(), new unicode_codecvt); + // sanity check the constructed locale has the specialized facet. + VERIFY( has_facet<unicode_codecvt>(loc) ); + const unicode_codecvt& cvt = use_facet<unicode_codecvt>(loc); + // convert between const char* and unicode strings + unicode_codecvt::state_type state01("UNICODE", "ISO_8859-1"); + initialize_state(state01); + result r1 = cvt.in(state01, e_lit, e_lit + size, efrom_next, + i_arr, i_arr + size, ito_next); + VERIFY( r1 == codecvt_base::ok ); + VERIFY( !int_traits::compare(i_arr, i_lit, size) ); + VERIFY( efrom_next == e_lit + size ); + VERIFY( ito_next == i_arr + size ); +</pre></div><div class="section" title="Future"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.future"></a>Future</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + a. things that are sketchy, or remain unimplemented: + do_encoding, max_length and length member functions + are only weakly implemented. I have no idea how to do + this correctly, and in a generic manner. Nathan? +</p></li><li class="listitem"><p> + b. conversions involving std::string + </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> + how should operators != and == work for string of + different/same encoding? + </p></li><li class="listitem"><p> + what is equal? A byte by byte comparison or an + encoding then byte comparison? + </p></li><li class="listitem"><p> + conversions between narrow, wide, and unicode strings + </p></li></ul></div></li><li class="listitem"><p> + c. conversions involving std::filebuf and std::ostream +</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> + how to initialize the state object in a + standards-conformant manner? + </p></li><li class="listitem"><p> + how to synchronize the "C" and "C++" + conversion information? + </p></li><li class="listitem"><p> + wchar_t/char internal buffers and conversions between + internal/external buffers? + </p></li></ul></div></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.codecvt.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id388454"></a><p><span class="title"><i> + The GNU C Library + </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums"> + Chapters 6 Character Set Handling and 7 Locales and Internationalization + . </span></p></div><div class="biblioentry" title="Correspondence"><a id="id387509"></a><p><span class="title"><i> + Correspondence + </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id387538"></a><p><span class="title"><i> + ISO/IEC 14882:1998 Programming languages - C++ + </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id406312"></a><p><span class="title"><i> + ISO/IEC 9899:1999 Programming languages - C + </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id406331"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.opengroup.org/austin" target="_top"> + <em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em> + </a> + . </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. + . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id408136"></a><p><span class="title"><i> + The C++ Programming Language, Special Edition + </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> + Addison Wesley + . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id393924"></a><p><span class="title"><i> + Standard C++ IOStreams and Locales + </i>. </span><span class="subtitle"> + Advanced Programmer's Guide and Reference + . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> + Addison Wesley Longman + . </span></span></p></div><div class="biblioentry"><a id="id446609"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.lysator.liu.se/c/na1.html" target="_top"> + <em class="citetitle"> + A brief description of Normative Addendum 1 + </em> </a> - . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id626888"></a><p><span class="title"><i> + . </span><span class="author"><span class="firstname">Clive</span> <span class="surname">Feather</span>. </span><span class="pagenums">Extended Character Sets. </span></p></div><div class="biblioentry"><a id="id331499"></a><p><span class="biblioid"> + <a class="ulink" href="http://tldp.org/HOWTO/Unicode-HOWTO.html" target="_top"> + <em class="citetitle"> + The Unicode HOWTO + </em> + </a> + . </span><span class="author"><span class="firstname">Bruno</span> <span class="surname">Haible</span>. </span></p></div><div class="biblioentry"><a id="id331529"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" target="_top"> + <em class="citetitle"> + UTF-8 and Unicode FAQ for Unix/Linux + </em> + </a> + . </span><span class="author"><span class="firstname">Markus</span> <span class="surname">Khun</span>. </span></p></div></div></div><div class="section" title="messages"><div class="titlepage"><div><div><h3 class="title"><a id="manual.localization.facet.messages"></a>messages</h3></div></div></div><p> +The std::messages facet implements message retrieval functionality +equivalent to Java's java.text.MessageFormat .using either GNU gettext +or IEEE 1003.1-200 functions. +</p><div class="section" title="Requirements"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.req"></a>Requirements</h4></div></div></div><p> +The std::messages facet is probably the most vaguely defined facet in +the standard library. It's assumed that this facility was built into +the standard library in order to convert string literals from one +locale to the other. For instance, converting the "C" locale's +<code class="code">const char* c = "please"</code> to a German-localized <code class="code">"bitte"</code> +during program execution. +</p><div class="blockquote"><blockquote class="blockquote"><p> +22.2.7.1 - Template class messages [lib.locale.messages] +</p></blockquote></div><p> +This class has three public member functions, which directly +correspond to three protected virtual member functions. +</p><p> +The public member functions are: +</p><p> +<code class="code">catalog open(const string&, const locale&) const</code> +</p><p> +<code class="code">string_type get(catalog, int, int, const string_type&) const</code> +</p><p> +<code class="code">void close(catalog) const</code> +</p><p> +While the virtual functions are: +</p><p> +<code class="code">catalog do_open(const string&, const locale&) const</code> +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +-1- Returns: A value that may be passed to get() to retrieve a +message, from the message catalog identified by the string name +according to an implementation-defined mapping. The result can be used +until it is passed to close(). Returns a value less than 0 if no such +catalog can be opened. +</em></span> +</p></blockquote></div><p> +<code class="code">string_type do_get(catalog, int, int, const string_type&) const</code> +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +-3- Requires: A catalog cat obtained from open() and not yet closed. +-4- Returns: A message identified by arguments set, msgid, and dfault, +according to an implementation-defined mapping. If no such message can +be found, returns dfault. +</em></span> +</p></blockquote></div><p> +<code class="code">void do_close(catalog) const</code> +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +-5- Requires: A catalog cat obtained from open() and not yet closed. +-6- Effects: Releases unspecified resources associated with cat. +-7- Notes: The limit on such resources, if any, is implementation-defined. +</em></span> +</p></blockquote></div></div><div class="section" title="Design"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.design"></a>Design</h4></div></div></div><p> +A couple of notes on the standard. +</p><p> +First, why is <code class="code">messages_base::catalog</code> specified as a typedef +to int? This makes sense for implementations that use +<code class="code">catopen</code>, but not for others. Fortunately, it's not heavily +used and so only a minor irritant. +</p><p> +Second, by making the member functions <code class="code">const</code>, it is +impossible to save state in them. Thus, storing away information used +in the 'open' member function for use in 'get' is impossible. This is +unfortunate. +</p><p> +The 'open' member function in particular seems to be oddly +designed. The signature seems quite peculiar. Why specify a <code class="code">const +string& </code> argument, for instance, instead of just <code class="code">const +char*</code>? Or, why specify a <code class="code">const locale&</code> argument that is +to be used in the 'get' member function? How, exactly, is this locale +argument useful? What was the intent? It might make sense if a locale +argument was associated with a given default message string in the +'open' member function, for instance. Quite murky and unclear, on +reflection. +</p><p> +Lastly, it seems odd that messages, which explicitly require code +conversion, don't use the codecvt facet. Because the messages facet +has only one template parameter, it is assumed that ctype, and not +codecvt, is to be used to convert between character sets. +</p><p> +It is implicitly assumed that the locale for the default message +string in 'get' is in the "C" locale. Thus, all source code is assumed +to be written in English, so translations are always from "en_US" to +other, explicitly named locales. +</p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.impl"></a>Implementation</h4></div></div></div><div class="section" title="Models"><div class="titlepage"><div><div><h5 class="title"><a id="messages.impl.models"></a>Models</h5></div></div></div><p> + This is a relatively simple class, on the face of it. The standard + specifies very little in concrete terms, so generic + implementations that are conforming yet do very little are the + norm. Adding functionality that would be useful to programmers and + comparable to Java's java.text.MessageFormat takes a bit of work, + and is highly dependent on the capabilities of the underlying + operating system. + </p><p> + Three different mechanisms have been provided, selectable via + configure flags: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + generic + </p><p> + This model does very little, and is what is used by default. + </p></li><li class="listitem"><p> + gnu + </p><p> + The gnu model is complete and fully tested. It's based on the + GNU gettext package, which is part of glibc. It uses the + functions <code class="code">textdomain, bindtextdomain, gettext</code> to + implement full functionality. Creating message catalogs is a + relatively straight-forward process and is lightly documented + below, and fully documented in gettext's distributed + documentation. + </p></li><li class="listitem"><p> + ieee_1003.1-200x + </p><p> + This is a complete, though untested, implementation based on + the IEEE standard. The functions <code class="code">catopen, catgets, + catclose</code> are used to retrieve locale-specific messages + given the appropriate message catalogs that have been + constructed for their use. Note, the script <code class="code"> + po2msg.sed</code> that is part of the gettext distribution can + convert gettext catalogs into catalogs that + <code class="code">catopen</code> can use. + </p></li></ul></div><p> +A new, standards-conformant non-virtual member function signature was +added for 'open' so that a directory could be specified with a given +message catalog. This simplifies calling conventions for the gnu +model. +</p></div><div class="section" title="The GNU Model"><div class="titlepage"><div><div><h5 class="title"><a id="messages.impl.gnu"></a>The GNU Model</h5></div></div></div><p> + The messages facet, because it is retrieving and converting + between characters sets, depends on the ctype and perhaps the + codecvt facet in a given locale. In addition, underlying "C" + library locale support is necessary for more than just the + <code class="code">LC_MESSAGES</code> mask: <code class="code">LC_CTYPE</code> is also + necessary. To avoid any unpleasantness, all bits of the "C" mask + (i.e. <code class="code">LC_ALL</code>) are set before retrieving messages. + </p><p> + Making the message catalogs can be initially tricky, but become + quite simple with practice. For complete info, see the gettext + documentation. Here's an idea of what is required: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + Make a source file with the required string literals that need + to be translated. See <code class="code">intl/string_literals.cc</code> for + an example. + </p></li><li class="listitem"><p> + Make initial catalog (see "4 Making the PO Template File" from + the gettext docs).</p><p> + <code class="code"> xgettext --c++ --debug string_literals.cc -o libstdc++.pot </code> + </p></li><li class="listitem"><p>Make language and country-specific locale catalogs.</p><p> + <code class="code">cp libstdc++.pot fr_FR.po</code> + </p><p> + <code class="code">cp libstdc++.pot de_DE.po</code> + </p></li><li class="listitem"><p> + Edit localized catalogs in emacs so that strings are + translated. + </p><p> + <code class="code">emacs fr_FR.po</code> + </p></li><li class="listitem"><p>Make the binary mo files.</p><p> + <code class="code">msgfmt fr_FR.po -o fr_FR.mo</code> + </p><p> + <code class="code">msgfmt de_DE.po -o de_DE.mo</code> + </p></li><li class="listitem"><p>Copy the binary files into the correct directory structure.</p><p> + <code class="code">cp fr_FR.mo (dir)/fr_FR/LC_MESSAGES/libstdc++.mo</code> + </p><p> + <code class="code">cp de_DE.mo (dir)/de_DE/LC_MESSAGES/libstdc++.mo</code> + </p></li><li class="listitem"><p>Use the new message catalogs.</p><p> + <code class="code">locale loc_de("de_DE");</code> + </p><p> + <code class="code"> + use_facet<messages<char> >(loc_de).open("libstdc++", locale(), dir); + </code> + </p></li></ul></div></div></div><div class="section" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.use"></a>Use</h4></div></div></div><p> + A simple example using the GNU model of message conversion. + </p><pre class="programlisting"> +#include <iostream> +#include <locale> +using namespace std; + +void test01() +{ + typedef messages<char>::catalog catalog; + const char* dir = + "/mnt/egcs/build/i686-pc-linux-gnu/libstdc++/po/share/locale"; + const locale loc_de("de_DE"); + const messages<char>& mssg_de = use_facet<messages<char> >(loc_de); + + catalog cat_de = mssg_de.open("libstdc++", loc_de, dir); + string s01 = mssg_de.get(cat_de, 0, 0, "please"); + string s02 = mssg_de.get(cat_de, 0, 0, "thank you"); + cout << "please in german:" << s01 << '\n'; + cout << "thank you in german:" << s02 << '\n'; + mssg_de.close(cat_de); +} +</pre></div><div class="section" title="Future"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.future"></a>Future</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + Things that are sketchy, or remain unimplemented: + </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> + _M_convert_from_char, _M_convert_to_char are in flux, + depending on how the library ends up doing character set + conversions. It might not be possible to do a real character + set based conversion, due to the fact that the template + parameter for messages is not enough to instantiate the + codecvt facet (1 supplied, need at least 2 but would prefer + 3). + </p></li><li class="listitem"><p> + There are issues with gettext needing the global locale set + to extract a message. This dependence on the global locale + makes the current "gnu" model non MT-safe. Future versions + of glibc, i.e. glibc 2.3.x will fix this, and the C++ library + bits are already in place. + </p></li></ul></div></li><li class="listitem"><p> + Development versions of the GNU "C" library, glibc 2.3 will allow + a more efficient, MT implementation of std::messages, and will + allow the removal of the _M_name_messages data member. If this is + done, it will change the library ABI. The C++ parts to support + glibc 2.3 have already been coded, but are not in use: once this + version of the "C" library is released, the marked parts of the + messages implementation can be switched over to the new "C" + library functionality. + </p></li><li class="listitem"><p> + At some point in the near future, std::numpunct will probably use + std::messages facilities to implement truename/falsename + correctly. This is currently not done, but entries in + libstdc++.pot have already been made for "true" and "false" string + literals, so all that remains is the std::numpunct coding and the + configure/make hassles to make the installed library search its + own catalog. Currently the libstdc++.mo catalog is only searched + for the testsuite cases involving messages members. + </p></li><li class="listitem"><p> The following member functions:</p><p> + <code class="code"> + catalog + open(const basic_string<char>& __s, const locale& __loc) const + </code> + </p><p> + <code class="code"> + catalog + open(const basic_string<char>&, const locale&, const char*) const; + </code> + </p><p> + Don't actually return a "value less than 0 if no such catalog + can be opened" as required by the standard in the "gnu" + model. As of this writing, it is unknown how to query to see + if a specified message catalog exists using the gettext + package. + </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="facet.messages.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id504136"></a><p><span class="title"><i> + The GNU C Library + </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling, and 7 Locales and Internationalization + . </span></p></div><div class="biblioentry" title="Correspondence"><a id="id416147"></a><p><span class="title"><i> + Correspondence + </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id416175"></a><p><span class="title"><i> + ISO/IEC 14882:1998 Programming languages - C++ + </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id456221"></a><p><span class="title"><i> + ISO/IEC 9899:1999 Programming languages - C + </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id456239"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.opengroup.org/austin" target="_top"> + <em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em> + </a> + . </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. + . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id445827"></a><p><span class="title"><i> The C++ Programming Language, Special Edition </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> Addison Wesley - . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id655841"></a><p><span class="title"><i> + . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id455920"></a><p><span class="title"><i> Standard C++ IOStreams and Locales </i>. </span><span class="subtitle"> Advanced Programmer's Guide and Reference . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> Addison Wesley Longman - . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="locales.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="codecvt.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 14. Locales </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> codecvt</td></tr></table></div></body></html> + . </span></span></p></div><div class="biblioentry"><a id="id467395"></a><p><span class="biblioid"> + <a class="ulink" href="http://java.sun.com/reference/api/index.html" target="_top"> + <em class="citetitle"> + API Specifications, Java Platform + </em> + </a> + . </span><span class="pagenums">java.util.Properties, java.text.MessageFormat, +java.util.Locale, java.util.ResourceBundle + . </span></p></div><div class="biblioentry"><a id="id467417"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.gnu.org/software/gettext/" target="_top"> + <em class="citetitle"> + GNU gettext tools, version 0.10.38, Native Language Support +Library and Tools. + </em> + </a> + . </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 8. + Localization + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. + Containers + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/fstreams.html b/libstdc++-v3/doc/html/manual/fstreams.html index 6b0a06bca32..0795443b26d 100644 --- a/libstdc++-v3/doc/html/manual/fstreams.html +++ b/libstdc++-v3/doc/html/manual/fstreams.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 27. File Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="stringstreams.html" title="Chapter 26. Memory Based Streams" /><link rel="next" href="bk01pt11ch27s02.html" title="Binary Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 27. File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Part XI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>File Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="stringstreams.html" title="Memory Based Streams" /><link rel="next" href="io_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">File Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13. Input and Output -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 27. File Based Streams"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.filestreams"></a>Chapter 27. File Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt></dl></div><div class="sect1" title="Copying a File"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.filestreams.copying_a_file"></a>Copying a File</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="File Based Streams"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.filestreams"></a>File Based Streams</h2></div></div></div><div class="sect2" title="Copying a File"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.filestreams.copying_a_file"></a>Copying a File</h3></div></div></div><p> </p><p>So you want to copy a file quickly and easily, and most important, completely portably. And since this is C++, you have an open ifstream (call it IN) and an open ofstream (call it OUT): @@ -22,7 +22,7 @@ of "output_file" may surprise you. </p><p>Seriously, go do it. Get surprised, then come back. It's worth it. </p><p>The thing to remember is that the <code class="code">basic_[io]stream</code> classes - handle formatting, nothing else. In particular, they break up on + handle formatting, nothing else. In chaptericular, they break up on whitespace. The actual reading, writing, and storing of data is handled by the <code class="code">basic_streambuf</code> family. Fortunately, the <code class="code">operator<<</code> is overloaded to take an ostream and @@ -31,13 +31,13 @@ </p><p>Why a <span class="emphasis"><em>pointer</em></span> to streambuf and not just a streambuf? Well, the [io]streams hold pointers (or references, depending on the implementation) to their buffers, not the actual - buffers. This allows polymorphic behavior on the part of the buffers + buffers. This allows polymorphic behavior on the chapter of the buffers as well as the streams themselves. The pointer is easily retrieved using the <code class="code">rdbuf()</code> member function. Therefore, the easiest way to copy the file is: </p><pre class="programlisting"> OUT << IN.rdbuf();</pre><p>So what <span class="emphasis"><em>was</em></span> happening with OUT<<IN? Undefined - behavior, since that particular << isn't defined by the Standard. + behavior, since that chaptericular << isn't defined by the Standard. I have seen instances where it is implemented, but the character extraction process removes all the whitespace, leaving you with no blank lines and only "Thequickbrownfox...". With @@ -45,8 +45,106 @@ member pointers) sometimes gets converted to a void*, and the output file then contains a perfect text representation of a hexadecimal address (quite a big surprise). Others don't compile at all. - </p><p>Also note that none of this is specific to o<span class="emphasis"><em>*f*</em></span>streams. - The operators shown above are all defined in the parent + </p><p>Also note that none of this is specific to o<span class="emphasis"><em>*f*</em></span>streams. + The operators shown above are all defined in the parent basic_ostream class and are therefore available with all possible descendants. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch27s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 26. Memory Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Binary Input and Output</td></tr></table></div></body></html> + </p></div><div class="sect2" title="Binary Input and Output"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.filestreams.binary"></a>Binary Input and Output</h3></div></div></div><p> + </p><p>The first and most important thing to remember about binary I/O is + that opening a file with <code class="code">ios::binary</code> is not, repeat + <span class="emphasis"><em>not</em></span>, the only thing you have to do. It is not a silver + bullet, and will not allow you to use the <code class="code"><</>></code> + operators of the normal fstreams to do binary I/O. + </p><p>Sorry. Them's the breaks. + </p><p>This isn't going to try and be a complete tutorial on reading and + writing binary files (because "binary" + covers a lot of ground), but we will try and clear + up a couple of misconceptions and common errors. + </p><p>First, <code class="code">ios::binary</code> has exactly one defined effect, no more + and no less. Normal text mode has to be concerned with the newline + characters, and the runtime system will translate between (for + example) '\n' and the appropriate end-of-line sequence (LF on Unix, + CRLF on DOS, CR on Macintosh, etc). (There are other things that + normal mode does, but that's the most obvious.) Opening a file in + binary mode disables this conversion, so reading a CRLF sequence + under Windows won't accidentally get mapped to a '\n' character, etc. + Binary mode is not supposed to suddenly give you a bitstream, and + if it is doing so in your program then you've discovered a bug in + your vendor's compiler (or some other chapter of the C++ implementation, + possibly the runtime system). + </p><p>Second, using <code class="code"><<</code> to write and <code class="code">>></code> to + read isn't going to work with the standard file stream classes, even + if you use <code class="code">skipws</code> during reading. Why not? Because + ifstream and ofstream exist for the purpose of <span class="emphasis"><em>formatting</em></span>, + not reading and writing. Their job is to interpret the data into + text characters, and that's exactly what you don't want to happen + during binary I/O. + </p><p>Third, using the <code class="code">get()</code> and <code class="code">put()/write()</code> member + functions still aren't guaranteed to help you. These are + "unformatted" I/O functions, but still character-based. + (This may or may not be what you want, see below.) + </p><p>Notice how all the problems here are due to the inappropriate use + of <span class="emphasis"><em>formatting</em></span> functions and classes to perform something + which <span class="emphasis"><em>requires</em></span> that formatting not be done? There are a + seemingly infinite number of solutions, and a few are listed here: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="quote">“<span class="quote">Derive your own fstream-type classes and write your own + <</>> operators to do binary I/O on whatever data + types you're using.</span>”</span> + </p><p> + This is a Bad Thing, because while + the compiler would probably be just fine with it, other humans + are going to be confused. The overloaded bitshift operators + have a well-defined meaning (formatting), and this breaks it. + </p></li><li class="listitem"><p> + <span class="quote">“<span class="quote">Build the file structure in memory, then + <code class="code">mmap()</code> the file and copy the + structure. + </span>”</span> + </p><p> + Well, this is easy to make work, and easy to break, and is + pretty equivalent to using <code class="code">::read()</code> and + <code class="code">::write()</code> directly, and makes no use of the + iostream library at all... + </p></li><li class="listitem"><p> + <span class="quote">“<span class="quote">Use streambufs, that's what they're there for.</span>”</span> + </p><p> + While not trivial for the beginner, this is the best of all + solutions. The streambuf/filebuf layer is the layer that is + responsible for actual I/O. If you want to use the C++ + library for binary I/O, this is where you start. + </p></li></ul></div><p>How to go about using streambufs is a bit beyond the scope of this + document (at least for now), but while streambufs go a long way, + they still leave a couple of things up to you, the programmer. + As an example, byte ordering is completely between you and the + operating system, and you have to handle it yourself. + </p><p>Deriving a streambuf or filebuf + class from the standard ones, one that is specific to your data + types (or an abstraction thereof) is probably a good idea, and + lots of examples exist in journals and on Usenet. Using the + standard filebufs directly (either by declaring your own or by + using the pointer returned from an fstream's <code class="code">rdbuf()</code>) + is certainly feasible as well. + </p><p>One area that causes problems is trying to do bit-by-bit operations + with filebufs. C++ is no different from C in this respect: I/O + must be done at the byte level. If you're trying to read or write + a few bits at a time, you're going about it the wrong way. You + must read/write an integral number of bytes and then process the + bytes. (For example, the streambuf functions take and return + variables of type <code class="code">int_type</code>.) + </p><p>Another area of problems is opening text files in binary mode. + Generally, binary mode is intended for binary files, and opening + text files in binary mode means that you now have to deal with all of + those end-of-line and end-of-file problems that we mentioned before. + </p><p> + An instructive thread from comp.lang.c++.moderated delved off into + this topic starting more or less at + <a class="ulink" href="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d" target="_top">this</a> + post and continuing to the end of the thread. (The subject heading is "binary iostreams" on both comp.std.c++ + and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl. + </p><p>Briefly, the problems of byte ordering and type sizes mean that + the unformatted functions like <code class="code">ostream::put()</code> and + <code class="code">istream::get()</code> cannot safely be used to communicate + between arbitrary programs, or across a network, or from one + invocation of a program to another invocation of the same program + on a different platform, etc. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="stringstreams.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Memory Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Interacting with C</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/functors.html b/libstdc++-v3/doc/html/manual/functors.html deleted file mode 100644 index eca77856530..00000000000 --- a/libstdc++-v3/doc/html/manual/functors.html +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 9. Functors</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="utilities.html" title="Part IV. Utilities" /><link rel="next" href="pairs.html" title="Chapter 10. Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. Functors</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Part IV. - Utilities - -</th><td width="20%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 9. Functors"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.functors"></a>Chapter 9. Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people - get slightly the wrong idea. In the interest of not reinventing - the wheel, we will refer you to the introduction to the functor - concept written by SGI as part of their STL, in - <a class="ulink" href="http://www.sgi.com/tech/stl/functors.html" target="_top">their - http://www.sgi.com/tech/stl/functors.html</a>. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part IV. - Utilities - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. Pairs</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/fundamental_types.html b/libstdc++-v3/doc/html/manual/fundamental_types.html deleted file mode 100644 index 0196e5a8dec..00000000000 --- a/libstdc++-v3/doc/html/manual/fundamental_types.html +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Types</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="bk01pt02pr01.html" title="" /><link rel="next" href="bk01pt02ch04s02.html" title="Numeric Properties" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Types</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02pr01.html">Prev</a> </td><th width="60%" align="center">Part II. - Support - -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02ch04s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 4. Types"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.types"></a>Chapter 4. Types</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></div><div class="sect1" title="Fundamental Types"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.support.types.fundamental"></a>Fundamental Types</h2></div></div></div><p> - C++ has the following builtin types: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - char - </p></li><li class="listitem"><p> - signed char - </p></li><li class="listitem"><p> - unsigned char - </p></li><li class="listitem"><p> - signed short - </p></li><li class="listitem"><p> - signed int - </p></li><li class="listitem"><p> - signed long - </p></li><li class="listitem"><p> - unsigned short - </p></li><li class="listitem"><p> - unsigned int - </p></li><li class="listitem"><p> - unsigned long - </p></li><li class="listitem"><p> - bool - </p></li><li class="listitem"><p> - wchar_t - </p></li><li class="listitem"><p> - float - </p></li><li class="listitem"><p> - double - </p></li><li class="listitem"><p> - long double - </p></li></ul></div><p> - These fundamental types are always available, without having to - include a header file. These types are exactly the same in - either C++ or in C. - </p><p> - Specializing parts of the library on these types is prohibited: - instead, use a POD. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02pr01.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02ch04s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Numeric Properties</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html b/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html index 74e54b47d44..7047824afa3 100644 --- a/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html +++ b/libstdc++-v3/doc/html/manual/generalized_numeric_operations.html @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 22. Generalized Operations</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="complex.html" title="Chapter 21. Complex" /><link rel="next" href="numerics_and_c.html" title="Chapter 23. Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 22. Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="complex.html">Prev</a> </td><th width="60%" align="center">Part X. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Generalized Operations</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Chapter 12. Numerics" /><link rel="prev" href="numerics.html" title="Chapter 12. Numerics" /><link rel="next" href="numerics_and_c.html" title="Interacting with C" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Generalized Operations</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><th width="60%" align="center">Chapter 12. Numerics -</th><td width="20%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 22. Generalized Operations"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.generalized_ops"></a>Chapter 22. Generalized Operations</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Generalized Operations"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.generalized_ops"></a>Generalized Operations</h2></div></div></div><p> </p><p>There are four generalized functions in the <numeric> header that follow the same conventions as those in <algorithm>. Each of them is overloaded: one signature for common default operations, and a second for fully general operations. Their names are self-explanatory to anyone who works with numerics on a regular basis: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">accumulate</code></p></li><li class="listitem"><p><code class="code">inner_product</code></p></li><li class="listitem"><p><code class="code">partial_sum</code></p></li><li class="listitem"><p><code class="code">adjacent_difference</code></p></li></ul></div><p>Here is a simple example of the two forms of <code class="code">accumulate</code>. + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="code">accumulate</code></p></li><li class="listitem"><p><code class="code">inner_product</code></p></li><li class="listitem"><p><code class="code">chapterial_sum</code></p></li><li class="listitem"><p><code class="code">adjacent_difference</code></p></li></ul></div><p>Here is a simple example of the two forms of <code class="code">accumulate</code>. </p><pre class="programlisting"> int ar[50]; int someval = somefunction(); @@ -26,4 +26,7 @@ and multiplies all the members of the array; here we must obviously use 1 as a starting value instead of 0. </p><p>The other three functions have similar dual-signature forms. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="complex.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 21. Complex </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 23. Interacting with C</td></tr></table></div></body></html> + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="numerics_and_c.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 12. + Numerics + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Interacting with C</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/internals.html b/libstdc++-v3/doc/html/manual/internals.html index cc6df8ba72c..1512752fa74 100644 --- a/libstdc++-v3/doc/html/manual/internals.html +++ b/libstdc++-v3/doc/html/manual/internals.html @@ -41,7 +41,7 @@ in <code class="code">sparc-sun-solaris2.8</code>. If the new directory is name OS portion of the triplet (the default), then nothing needs to be changed. </p><p>The first file to create in this directory, should be called <code class="code">os_defines.h</code>. This file contains basic macro definitions -that are required to allow the C++ library to work with your C library. +that are required to allow the C++ library to work with your C library. </p><p>Several libstdc++ source files unconditionally define the macro <code class="code">_POSIX_SOURCE</code>. On many systems, defining this macro causes large portions of the C library header files to be eliminated @@ -91,7 +91,7 @@ are exposing proper support for the related set of functions. If defined, it must be 0 while bootstrapping the compiler/rebuilding the library. </p><p>Finally, you should bracket the entire file in an include-guard, like this: - </p><pre class="programlisting"> + </p><pre class="programlisting"> #ifndef _GLIBCXX_OS_DEFINES #define _GLIBCXX_OS_DEFINES @@ -131,7 +131,7 @@ upper-case, lower-case, alphabetic, etc. The <code class="code">ctype_base.h</c file gives the type of the integer, and the values of the various bit masks. You will have to peer at your own <code class="code"><ctype.h></code> to figure out how to define the values required by this file. - </p><p>The <code class="code">ctype_base.h</code> header file does not need include guards. + </p><p>The <code class="code">ctype_base.h</code> header file does not need include guards. It should contain a single <code class="code">struct</code> definition called <code class="code">ctype_base</code>. This <code class="code">struct</code> should contain two type declarations, and one enumeration declaration, like this example, taken @@ -141,20 +141,20 @@ from the IRIX configuration: { typedef unsigned int mask; typedef int* __to_type; - + enum { - space = _ISspace, - print = _ISprint, - cntrl = _IScntrl, - upper = _ISupper, - lower = _ISlower, - alpha = _ISalpha, - digit = _ISdigit, - punct = _ISpunct, - xdigit = _ISxdigit, - alnum = _ISalnum, - graph = _ISgraph + space = _ISspace, + print = _ISprint, + cntrl = _IScntrl, + upper = _ISupper, + lower = _ISlower, + alpha = _ISalpha, + digit = _ISdigit, + punct = _ISpunct, + xdigit = _ISxdigit, + alnum = _ISalnum, + graph = _ISgraph }; }; </pre><p>The <code class="code">mask</code> type is the type of the elements in the table. If your @@ -176,14 +176,14 @@ function that must be written is the <code class="code">ctype<char>::ctype constructor. Here is the IRIX example: </p><pre class="programlisting"> ctype<char>::ctype(const mask* __table = 0, bool __del = false, - size_t __refs = 0) + size_t __refs = 0) : _Ctype_nois<char>(__refs), _M_del(__table != 0 && __del), - _M_toupper(NULL), - _M_tolower(NULL), - _M_ctable(NULL), - _M_table(!__table - ? (const mask*) (__libc_attr._ctype_tbl->_class + 1) - : __table) + _M_toupper(NULL), + _M_tolower(NULL), + _M_ctable(NULL), + _M_table(!__table + ? (const mask*) (__libc_attr._ctype_tbl->_class + 1) + : __table) { } </pre><p>There are two parts of this that you might choose to alter. The first, and most important, is the line involving <code class="code">__libc_attr</code>. That is @@ -199,7 +199,7 @@ lower-case, and vice versa. Here are the IRIX versions: char ctype<char>::do_toupper(char __c) const { return _toupper(__c); } - + char ctype<char>::do_tolower(char __c) const { return _tolower(__c); } @@ -215,21 +215,21 @@ machinery to do that on your system: ctype<char>::do_toupper(char* __low, const char* __high) const { while (__low < __high) - { - *__low = do_toupper(*__low); - ++__low; - } + { + *__low = do_toupper(*__low); + ++__low; + } return __high; } - + const char* ctype<char>::do_tolower(char* __low, const char* __high) const { while (__low < __high) - { - *__low = do_tolower(*__low); - ++__low; - } + { + *__low = do_tolower(*__low); + ++__low; + } return __high; } </pre><p>You must also provide the <code class="code">ctype_inline.h</code> file, which @@ -244,7 +244,7 @@ properties; they are analogous to the functions like <code class="code">isalpha< ctype<char>:: is(mask __m, char __c) const throw() { return (_M_table)[(unsigned char)(__c)] & __m; } -</pre><p>The <code class="code">_M_table</code> is the table passed in above, in the constructor. +</pre><p>The <code class="code">_M_table</code> is the table passed in above, in the constructor. This is the table that contains the bitmasks for each character. The implementation here should work on all systems. </p><p>The next function is: @@ -254,7 +254,7 @@ implementation here should work on all systems. is(const char* __low, const char* __high, mask* __vec) const throw() { while (__low < __high) - *__vec++ = (_M_table)[(unsigned char)(*__low++)]; + *__vec++ = (_M_table)[(unsigned char)(*__low++)]; return __high; } </pre><p>This function is similar; it copies the masks for all the characters @@ -267,16 +267,16 @@ from <code class="code">__low</code> up until <code class="code">__high</code> i scan_is(mask __m, const char* __low, const char* __high) const throw() { while (__low < __high && !this->is(__m, *__low)) - ++__low; + ++__low; return __low; } - + const char* ctype<char>:: scan_not(mask __m, const char* __low, const char* __high) const throw() { while (__low < __high && this->is(__m, *__low)) - ++__low; + ++__low; return __low; } </pre></div><div class="sect2" title="Thread Safety"><div class="titlepage"><div><div><h3 class="title"><a id="internals.thread_safety"></a>Thread Safety</h3></div></div></div><p>The C++ library string functionality requires a couple of atomic @@ -312,7 +312,7 @@ type, and two functions. </p><p>The type is <code class="code">_Atomic_word</code>. Here is the version used on IRIX: </p><pre class="programlisting"> typedef long _Atomic_word; -</pre><p>This type must be a signed integral type supporting atomic operations. +</pre><p>This type must be a signed integral type supporting atomic operations. If you're using the OS approach, use the same type used by your system's primitives. Otherwise, use the type for which your CPU provides atomic primitives. @@ -327,7 +327,7 @@ must be equivalent to those provided here, but using atomic operations: *__mem += __val; return __result; } - + static inline void __attribute__ ((__unused__)) __atomic_add (_Atomic_word* __mem, int __val) @@ -335,18 +335,18 @@ must be equivalent to those provided here, but using atomic operations: *__mem += __val; } </pre></div><div class="sect2" title="Numeric Limits"><div class="titlepage"><div><div><h3 class="title"><a id="internals.numeric_limits"></a>Numeric Limits</h3></div></div></div><p>The C++ library requires information about the fundamental data types, -such as the minimum and maximum representable values of each type. +such as the minimum and maximum representable values of each type. You can define each of these values individually, but it is usually easiest just to indicate how many bits are used in each of the data types and let the library do the rest. For information about the macros to define, see the top of <code class="code">include/bits/std_limits.h</code>. -</p><p>If you need to define any macros, you can do so in <code class="code">os_defines.h</code>. +</p><p>If you need to define any macros, you can do so in <code class="code">os_defines.h</code>. However, if all operating systems for your CPU are likely to use the same values, you can provide a CPU-specific file instead so that you -do not have to provide the same definitions for each operating system. +do not have to provide the same definitions for each operating system. To take that approach, create a new file called <code class="code">cpu_limits.h</code> in your CPU configuration directory (see <a class="link" href="internals.html#internals.cpu" title="CPU">CPU</a>). - </p></div><div class="sect2" title="Libtool"><div class="titlepage"><div><div><h3 class="title"><a id="internals.libtool"></a>Libtool</h3></div></div></div><p>The C++ library is compiled, archived and linked with libtool. + </p></div><div class="sect2" title="Libtool"><div class="titlepage"><div><div><h3 class="title"><a id="internals.libtool"></a>Libtool</h3></div></div></div><p>The C++ library is compiled, archived and linked with libtool. Explaining the full workings of libtool is beyond the scope of this document, but there are a few, particular bits that are necessary for porting. diff --git a/libstdc++-v3/doc/html/manual/intro.html b/libstdc++-v3/doc/html/manual/intro.html index 690722ffdf9..ecdb0653316 100644 --- a/libstdc++-v3/doc/html/manual/intro.html +++ b/libstdc++-v3/doc/html/manual/intro.html @@ -5,5 +5,5 @@ </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part I. Introduction"><div class="titlepage"><div><div><h1 class="title"><a id="manual.intro"></a>Part I. Introduction - <a id="id683991" class="indexterm"></a> + <a id="id460662" class="indexterm"></a> </h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="sect2"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="spine.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="status.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. Status</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/io.html b/libstdc++-v3/doc/html/manual/io.html index 90dbc6c5271..d089bccc4cb 100644 --- a/libstdc++-v3/doc/html/manual/io.html +++ b/libstdc++-v3/doc/html/manual/io.html @@ -1,9 +1,121 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part XI. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt10ch23s02.html" title="C99" /><link rel="next" href="iostream_objects.html" title="Chapter 24. Iostream Objects" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part XI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 13. Input and Output</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="numerics_and_c.html" title="Interacting with C" /><link rel="next" href="streambufs.html" title="Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. Input and Output -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="iostream_objects.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part XI. Input and Output"><div class="titlepage"><div><div><h1 class="title"><a id="manual.io"></a>Part XI. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 13. Input and Output"><div class="titlepage"><div><div><h2 class="title"><a id="std.io"></a>Chapter 13. Input and Output - <a id="id592157" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt10ch23s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="iostream_objects.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">C99 </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 24. Iostream Objects</td></tr></table></div></body></html> + <a id="id404072" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="sect1"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="sect2"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect2"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="sect1"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="sect1"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect2"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="sect1"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect2"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></div><div class="sect1" title="Iostream Objects"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.objects"></a>Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to + only include the headers you really need. Many people simply include + <iostream> when they don't need to -- and that can <span class="emphasis"><em>penalize + your runtime as well.</em></span> Here are some tips on which header to use + for which situations, starting with the simplest. + </p><p><span class="emphasis"><em><iosfwd></em></span> should be included whenever you simply + need the <span class="emphasis"><em>name</em></span> of an I/O-related class, such as + "ofstream" or "basic_streambuf". Like the name + implies, these are forward declarations. (A word to all you fellow + old school programmers: trying to forward declare classes like + "class istream;" won't work. Look in the iosfwd header if + you'd like to know why.) For example, + </p><pre class="programlisting"> + #include <iosfwd> + + class MyClass + { + .... + std::ifstream& input_file; + }; + + extern std::ostream& operator<< (std::ostream&, MyClass&); + </pre><p><span class="emphasis"><em><ios></em></span> declares the base classes for the entire + I/O stream hierarchy, std::ios_base and std::basic_ios<charT>, the + counting types std::streamoff and std::streamsize, the file + positioning type std::fpos, and the various manipulators like + std::hex, std::fixed, std::noshowbase, and so forth. + </p><p>The ios_base class is what holds the format flags, the state flags, + and the functions which change them (setf(), width(), precision(), + etc). You can also store extra data and register callback functions + through ios_base, but that has been historically underused. Anything + which doesn't depend on the type of characters stored is consolidated + here. + </p><p>The template class basic_ios is the highest template class in the + hierarchy; it is the first one depending on the character type, and + holds all general state associated with that type: the pointer to the + polymorphic stream buffer, the facet information, etc. + </p><p><span class="emphasis"><em><streambuf></em></span> declares the template class + basic_streambuf, and two standard instantiations, streambuf and + wstreambuf. If you need to work with the vastly useful and capable + stream buffer classes, e.g., to create a new form of storage + transport, this header is the one to include. + </p><p><span class="emphasis"><em><istream></em></span>/<span class="emphasis"><em><ostream></em></span> are + the headers to include when you are using the >>/<< + interface, or any of the other abstract stream formatting functions. + For example, + </p><pre class="programlisting"> + #include <istream> + + std::ostream& operator<< (std::ostream& os, MyClass& c) + { + return os << c.data1() << c.data2(); + } + </pre><p>The std::istream and std::ostream classes are the abstract parents of + the various concrete implementations. If you are only using the + interfaces, then you only need to use the appropriate interface header. + </p><p><span class="emphasis"><em><iomanip></em></span> provides "extractors and inserters + that alter information maintained by class ios_base and its derived + classes," such as std::setprecision and std::setw. If you need + to write expressions like <code class="code">os << setw(3);</code> or + <code class="code">is >> setbase(8);</code>, you must include <iomanip>. + </p><p><span class="emphasis"><em><sstream></em></span>/<span class="emphasis"><em><fstream></em></span> + declare the six stringstream and fstream classes. As they are the + standard concrete descendants of istream and ostream, you will already + know about them. + </p><p>Finally, <span class="emphasis"><em><iostream></em></span> provides the eight standard + global objects (cin, cout, etc). To do this correctly, this header + also provides the contents of the <istream> and <ostream> + headers, but nothing else. The contents of this header look like + </p><pre class="programlisting"> + #include <ostream> + #include <istream> + + namespace std + { + extern istream cin; + extern ostream cout; + .... + + // this is explained below + <span class="emphasis"><em>static ios_base::Init __foo;</em></span> // not its real name + } + </pre><p>Now, the runtime penalty mentioned previously: the global objects + must be initialized before any of your own code uses them; this is + guaranteed by the standard. Like any other global object, they must + be initialized once and only once. This is typically done with a + construct like the one above, and the nested class ios_base::Init is + specified in the standard for just this reason. + </p><p>How does it work? Because the header is included before any of your + code, the <span class="emphasis"><em>__foo</em></span> object is constructed before any of + your objects. (Global objects are built in the order in which they + are declared, and destroyed in reverse order.) The first time the + constructor runs, the eight stream objects are set up. + </p><p>The <code class="code">static</code> keyword means that each object file compiled + from a source file containing <iostream> will have its own + private copy of <span class="emphasis"><em>__foo</em></span>. There is no specified order + of construction across object files (it's one of those pesky NP + problems that make life so interesting), so one copy in each object + file means that the stream objects are guaranteed to be set up before + any of your code which uses them could run, thereby meeting the + requirements of the standard. + </p><p>The penalty, of course, is that after the first copy of + <span class="emphasis"><em>__foo</em></span> is constructed, all the others are just wasted + processor time. The time spent is merely for an increment-and-test + inside a function call, but over several dozen or hundreds of object + files, that time can add up. (It's not in a tight loop, either.) + </p><p>The lesson? Only include <iostream> when you need to use one of + the standard objects in that source file; you'll pay less startup + time. Only include the header files you need to in general; your + compile times will go down when there's less parsing work to do. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="numerics_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Stream Buffers</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/io_and_c.html b/libstdc++-v3/doc/html/manual/io_and_c.html index 33b5796ca27..f7a99e6ada0 100644 --- a/libstdc++-v3/doc/html/manual/io_and_c.html +++ b/libstdc++-v3/doc/html/manual/io_and_c.html @@ -1,11 +1,57 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 28. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch27s02.html" title="Binary Input and Output" /><link rel="next" href="bk01pt11ch28s02.html" title="Performance" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 28. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch27s02.html">Prev</a> </td><th width="60%" align="center">Part XI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="fstreams.html" title="File Based Streams" /><link rel="next" href="atomics.html" title="Chapter 14. Atomics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><th width="60%" align="center">Chapter 13. Input and Output -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch28s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 28. Interacting with C"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.c"></a>Chapter 28. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></div><div class="sect1" title="Using FILE* and file descriptors"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.c.FILE"></a>Using FILE* and file descriptors</h2></div></div></div><p> - See the <a class="link" href="ext_io.html" title="Chapter 39. Input and Output">extensions</a> for using +</th><td width="20%" align="right"> <a accesskey="n" href="atomics.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Interacting with C"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.c"></a>Interacting with C</h2></div></div></div><div class="sect2" title="Using FILE* and file descriptors"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.c.FILE"></a>Using FILE* and file descriptors</h3></div></div></div><p> + See the <a class="link" href="ext_io.html" title="Chapter 26. Input and Output">extensions</a> for using <span class="type">FILE</span> and <span class="type">file descriptors</span> with <code class="classname">ofstream</code> and <code class="classname">ifstream</code>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch27s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch28s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Binary Input and Output </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Performance</td></tr></table></div></body></html> + </p></div><div class="sect2" title="Performance"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.c.sync"></a>Performance</h3></div></div></div><p> + Pathetic Performance? Ditch C. + </p><p>It sounds like a flame on C, but it isn't. Really. Calm down. + I'm just saying it to get your attention. + </p><p>Because the C++ library includes the C library, both C-style and + C++-style I/O have to work at the same time. For example: + </p><pre class="programlisting"> + #include <iostream> + #include <cstdio> + + std::cout << "Hel"; + std::printf ("lo, worl"); + std::cout << "d!\n"; + </pre><p>This must do what you think it does. + </p><p>Alert members of the audience will immediately notice that buffering + is going to make a hash of the output unless special steps are taken. + </p><p>The special steps taken by libstdc++, at least for version 3.0, + involve doing very little buffering for the standard streams, leaving + most of the buffering to the underlying C library. (This kind of + thing is tricky to get right.) + The upside is that correctness is ensured. The downside is that + writing through <code class="code">cout</code> can quite easily lead to awful + performance when the C++ I/O library is layered on top of the C I/O + library (as it is for 3.0 by default). Some patches have been applied + which improve the situation for 3.1. + </p><p>However, the C and C++ standard streams only need to be kept in sync + when both libraries' facilities are in use. If your program only uses + C++ I/O, then there's no need to sync with the C streams. The right + thing to do in this case is to call + </p><pre class="programlisting"> + #include <span class="emphasis"><em>any of the I/O headers such as ios, iostream, etc</em></span> + + std::ios::sync_with_stdio(false); + </pre><p>You must do this before performing any I/O via the C++ stream objects. + Once you call this, the C++ streams will operate independently of the + (unused) C streams. For GCC 3.x, this means that <code class="code">cout</code> and + company will become fully buffered on their own. + </p><p>Note, by the way, that the synchronization requirement only applies to + the standard streams (<code class="code">cin</code>, <code class="code">cout</code>, + <code class="code">cerr</code>, + <code class="code">clog</code>, and their wide-character counterchapters). File stream + objects that you declare yourself have no such requirement and are fully + buffered. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="fstreams.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="atomics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">File Based Streams </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 14. + Atomics + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/iostream_objects.html b/libstdc++-v3/doc/html/manual/iostream_objects.html deleted file mode 100644 index 1133edec3ab..00000000000 --- a/libstdc++-v3/doc/html/manual/iostream_objects.html +++ /dev/null @@ -1,119 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 24. Iostream Objects</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="io.html" title="Part XI. Input and Output" /><link rel="next" href="streambufs.html" title="Chapter 25. Stream Buffers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 24. Iostream Objects</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Part XI. - Input and Output - -</th><td width="20%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 24. Iostream Objects"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.objects"></a>Chapter 24. Iostream Objects</h2></div></div></div><p>To minimize the time you have to wait on the compiler, it's good to - only include the headers you really need. Many people simply include - <iostream> when they don't need to -- and that can <span class="emphasis"><em>penalize - your runtime as well.</em></span> Here are some tips on which header to use - for which situations, starting with the simplest. - </p><p><span class="emphasis"><em><iosfwd></em></span> should be included whenever you simply - need the <span class="emphasis"><em>name</em></span> of an I/O-related class, such as - "ofstream" or "basic_streambuf". Like the name - implies, these are forward declarations. (A word to all you fellow - old school programmers: trying to forward declare classes like - "class istream;" won't work. Look in the iosfwd header if - you'd like to know why.) For example, - </p><pre class="programlisting"> - #include <iosfwd> - - class MyClass - { - .... - std::ifstream& input_file; - }; - - extern std::ostream& operator<< (std::ostream&, MyClass&); - </pre><p><span class="emphasis"><em><ios></em></span> declares the base classes for the entire - I/O stream hierarchy, std::ios_base and std::basic_ios<charT>, the - counting types std::streamoff and std::streamsize, the file - positioning type std::fpos, and the various manipulators like - std::hex, std::fixed, std::noshowbase, and so forth. - </p><p>The ios_base class is what holds the format flags, the state flags, - and the functions which change them (setf(), width(), precision(), - etc). You can also store extra data and register callback functions - through ios_base, but that has been historically underused. Anything - which doesn't depend on the type of characters stored is consolidated - here. - </p><p>The template class basic_ios is the highest template class in the - hierarchy; it is the first one depending on the character type, and - holds all general state associated with that type: the pointer to the - polymorphic stream buffer, the facet information, etc. - </p><p><span class="emphasis"><em><streambuf></em></span> declares the template class - basic_streambuf, and two standard instantiations, streambuf and - wstreambuf. If you need to work with the vastly useful and capable - stream buffer classes, e.g., to create a new form of storage - transport, this header is the one to include. - </p><p><span class="emphasis"><em><istream></em></span>/<span class="emphasis"><em><ostream></em></span> are - the headers to include when you are using the >>/<< - interface, or any of the other abstract stream formatting functions. - For example, - </p><pre class="programlisting"> - #include <istream> - - std::ostream& operator<< (std::ostream& os, MyClass& c) - { - return os << c.data1() << c.data2(); - } - </pre><p>The std::istream and std::ostream classes are the abstract parents of - the various concrete implementations. If you are only using the - interfaces, then you only need to use the appropriate interface header. - </p><p><span class="emphasis"><em><iomanip></em></span> provides "extractors and inserters - that alter information maintained by class ios_base and its derived - classes," such as std::setprecision and std::setw. If you need - to write expressions like <code class="code">os << setw(3);</code> or - <code class="code">is >> setbase(8);</code>, you must include <iomanip>. - </p><p><span class="emphasis"><em><sstream></em></span>/<span class="emphasis"><em><fstream></em></span> - declare the six stringstream and fstream classes. As they are the - standard concrete descendants of istream and ostream, you will already - know about them. - </p><p>Finally, <span class="emphasis"><em><iostream></em></span> provides the eight standard - global objects (cin, cout, etc). To do this correctly, this header - also provides the contents of the <istream> and <ostream> - headers, but nothing else. The contents of this header look like - </p><pre class="programlisting"> - #include <ostream> - #include <istream> - - namespace std - { - extern istream cin; - extern ostream cout; - .... - - // this is explained below - <span class="emphasis"><em>static ios_base::Init __foo;</em></span> // not its real name - } - </pre><p>Now, the runtime penalty mentioned previously: the global objects - must be initialized before any of your own code uses them; this is - guaranteed by the standard. Like any other global object, they must - be initialized once and only once. This is typically done with a - construct like the one above, and the nested class ios_base::Init is - specified in the standard for just this reason. - </p><p>How does it work? Because the header is included before any of your - code, the <span class="emphasis"><em>__foo</em></span> object is constructed before any of - your objects. (Global objects are built in the order in which they - are declared, and destroyed in reverse order.) The first time the - constructor runs, the eight stream objects are set up. - </p><p>The <code class="code">static</code> keyword means that each object file compiled - from a source file containing <iostream> will have its own - private copy of <span class="emphasis"><em>__foo</em></span>. There is no specified order - of construction across object files (it's one of those pesky NP - problems that make life so interesting), so one copy in each object - file means that the stream objects are guaranteed to be set up before - any of your code which uses them could run, thereby meeting the - requirements of the standard. - </p><p>The penalty, of course, is that after the first copy of - <span class="emphasis"><em>__foo</em></span> is constructed, all the others are just wasted - processor time. The time spent is merely for an increment-and-test - inside a function call, but over several dozen or hundreds of object - files, that time can add up. (It's not in a tight loop, either.) - </p><p>The lesson? Only include <iostream> when you need to use one of - the standard objects in that source file; you'll pay less startup - time. Only include the header files you need to in general; your - compile times will go down when there's less parsing work to do. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="streambufs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part XI. - Input and Output - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 25. Stream Buffers</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/iterators.html b/libstdc++-v3/doc/html/manual/iterators.html index d9a932be228..ee37ef7c713 100644 --- a/libstdc++-v3/doc/html/manual/iterators.html +++ b/libstdc++-v3/doc/html/manual/iterators.html @@ -1,9 +1,130 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VIII. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bitset.html" title="bitset" /><link rel="next" href="bk01pt08ch19.html" title="Chapter 19. Predefined" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VIII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Iterators</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="containers_and_c.html" title="Interacting with C" /><link rel="next" href="algorithms.html" title="Chapter 11. Algorithms" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. Iterators -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part VIII. Iterators"><div class="titlepage"><div><div><h1 class="title"><a id="manual.iterators"></a>Part VIII. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers_and_c.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 10. Iterators"><div class="titlepage"><div><div><h2 class="title"><a id="std.iterators"></a>Chapter 10. Iterators - <a id="id678897" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bitset.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt08ch19.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">bitset </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 19. Predefined</td></tr></table></div></body></html> + <a id="id376166" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="sect2"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect2"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></div><div class="sect1" title="Predefined"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.iterators.predefined"></a>Predefined</h2></div></div></div><div class="sect2" title="Iterators vs. Pointers"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.vs_pointers"></a>Iterators vs. Pointers</h3></div></div></div><p> + The following +FAQ <a class="link" href="../faq.html#faq.iterator_as_pod" title="7.1.">entry</a> points out that +iterators are not implemented as pointers. They are a generalization +of pointers, but they are implemented in libstdc++ as separate +classes. + </p><p> + Keeping that simple fact in mind as you design your code will + prevent a whole lot of difficult-to-understand bugs. + </p><p> + You can think of it the other way 'round, even. Since iterators + are a generalization, that means + that <span class="emphasis"><em>pointers</em></span> are + <span class="emphasis"><em>iterators</em></span>, and that pointers can be used + whenever an iterator would be. All those functions in the + Algorithms sect1 of the Standard will work just as well on plain + arrays and their pointers. + </p><p> + That doesn't mean that when you pass in a pointer, it gets + wrapped into some special delegating iterator-to-pointer class + with a layer of overhead. (If you think that's the case + anywhere, you don't understand templates to begin with...) Oh, + no; if you pass in a pointer, then the compiler will instantiate + that template using T* as a type, and good old high-speed + pointer arithmetic as its operations, so the resulting code will + be doing exactly the same things as it would be doing if you had + hand-coded it yourself (for the 273rd time). + </p><p> + How much overhead <span class="emphasis"><em>is</em></span> there when using an + iterator class? Very little. Most of the layering classes + contain nothing but typedefs, and typedefs are + "meta-information" that simply tell the compiler some + nicknames; they don't create code. That information gets passed + down through inheritance, so while the compiler has to do work + looking up all the names, your runtime code does not. (This has + been a prime concern from the beginning.) + </p></div><div class="sect2" title="One Past the End"><div class="titlepage"><div><div><h3 class="title"><a id="iterators.predefined.end"></a>One Past the End</h3></div></div></div><p>This starts off sounding complicated, but is actually very easy, + especially towards the end. Trust me. + </p><p>Beginners usually have a little trouble understand the whole + 'past-the-end' thing, until they remember their early algebra classes + (see, they <span class="emphasis"><em>told</em></span> you that stuff would come in handy!) and + the concept of half-open ranges. + </p><p>First, some history, and a reminder of some of the funkier rules in + C and C++ for builtin arrays. The following rules have always been + true for both languages: + </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>You can point anywhere in the array, <span class="emphasis"><em>or to the first element + past the end of the array</em></span>. A pointer that points to one + past the end of the array is guaranteed to be as unique as a + pointer to somewhere inside the array, so that you can compare + such pointers safely. + </p></li><li class="listitem"><p>You can only dereference a pointer that points into an array. + If your array pointer points outside the array -- even to just + one past the end -- and you dereference it, Bad Things happen. + </p></li><li class="listitem"><p>Strictly speaking, simply pointing anywhere else invokes + undefined behavior. Most programs won't puke until such a + pointer is actually dereferenced, but the standards leave that + up to the platform. + </p></li></ol></div><p>The reason this past-the-end addressing was allowed is to make it + easy to write a loop to go over an entire array, e.g., + while (*d++ = *s++);. + </p><p>So, when you think of two pointers delimiting an array, don't think + of them as indexing 0 through n-1. Think of them as <span class="emphasis"><em>boundary + markers</em></span>: + </p><pre class="programlisting"> + + beginning end + | | + | | This is bad. Always having to + | | remember to add or subtract one. + | | Off-by-one bugs very common here. + V V + array of N elements + |---|---|--...--|---|---| + | 0 | 1 | ... |N-2|N-1| + |---|---|--...--|---|---| + + ^ ^ + | | + | | This is good. This is safe. This + | | is guaranteed to work. Just don't + | | dereference 'end'. + beginning end + + </pre><p>See? Everything between the boundary markers is chapter of the array. + Simple. + </p><p>Now think back to your junior-high school algebra course, when you + were learning how to draw graphs. Remember that a graph terminating + with a solid dot meant, "Everything up through this point," + and a graph terminating with an open dot meant, "Everything up + to, but not including, this point," respectively called closed + and open ranges? Remember how closed ranges were written with + brackets, <span class="emphasis"><em>[a,b]</em></span>, and open ranges were written with parentheses, + <span class="emphasis"><em>(a,b)</em></span>? + </p><p>The boundary markers for arrays describe a <span class="emphasis"><em>half-open range</em></span>, + starting with (and including) the first element, and ending with (but + not including) the last element: <span class="emphasis"><em>[beginning,end)</em></span>. See, I + told you it would be simple in the end. + </p><p>Iterators, and everything working with iterators, follows this same + time-honored tradition. A container's <code class="code">begin()</code> method returns + an iterator referring to the first element, and its <code class="code">end()</code> + method returns a past-the-end iterator, which is guaranteed to be + unique and comparable against any other iterator pointing into the + middle of the container. + </p><p>Container constructors, container methods, and algorithms, all take + pairs of iterators describing a range of values on which to operate. + All of these ranges are half-open ranges, so you pass the beginning + iterator as the starting parameter, and the one-past-the-end iterator + as the finishing parameter. + </p><p>This generalizes very well. You can operate on sub-ranges quite + easily this way; functions accepting a <span class="emphasis"><em>[first,last)</em></span> range + don't know or care whether they are the boundaries of an entire {array, + sequence, container, whatever}, or whether they only enclose a few + elements from the center. This approach also makes zero-length + sequences very simple to recognize: if the two endpoints compare + equal, then the {array, sequence, container, whatever} is empty. + </p><p>Just don't dereference <code class="code">end()</code>. + </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers_and_c.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="algorithms.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Interacting with C </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 11. + Algorithms + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/license.html b/libstdc++-v3/doc/html/manual/license.html index f660ff378a0..9029df21735 100644 --- a/libstdc++-v3/doc/html/manual/license.html +++ b/libstdc++-v3/doc/html/manual/license.html @@ -2,7 +2,7 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>License</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="status.html" title="Chapter 1. Status" /><link rel="prev" href="status.html" title="Chapter 1. Status" /><link rel="next" href="bugs.html" title="Bugs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">License</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="status.html">Prev</a> </td><th width="60%" align="center">Chapter 1. Status</th><td width="20%" align="right"> <a accesskey="n" href="bugs.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="License"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.intro.status.license"></a>License</h2></div></div></div><p> There are two licenses affecting GNU libstdc++: one for the code, - and one for the documentation. + and one for the documentation. </p><p> There is a license section in the FAQ regarding common <a class="link" href="../faq.html#faq.license" title="License">questions</a>. If you have more questions, ask the FSF or the <a class="ulink" href="http://gcc.gnu.org/lists.html" target="_top">gcc mailing list</a>. @@ -92,9 +92,9 @@ requirements of the license of GCC.<br /> the web, excluding the pages generated from source comments, are copyrighted by the Free Software Foundation, and placed under the <a class="link" href="appendix_gfdl.html" title="Appendix E. GNU Free Documentation License"> GNU Free Documentation - License version 1.2</a>. There are no Front-Cover Texts, no + License version 1.3</a>. There are no Front-Cover Texts, no Back-Cover Texts, and no Invariant Sections. - </p><p> + </p><p> 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 diff --git a/libstdc++-v3/doc/html/manual/locales.html b/libstdc++-v3/doc/html/manual/locales.html deleted file mode 100644 index 040f79f2103..00000000000 --- a/libstdc++-v3/doc/html/manual/locales.html +++ /dev/null @@ -1,428 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 14. Locales</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="localization.html" title="Part VI. Localization" /><link rel="prev" href="localization.html" title="Part VI. Localization" /><link rel="next" href="facets.html" title="Chapter 15. Facets aka Categories" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. Locales</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><th width="60%" align="center">Part VI. - Localization - -</th><td width="20%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 14. Locales"><div class="titlepage"><div><div><h2 class="title"><a id="manual.localization.locales"></a>Chapter 14. Locales</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></div><div class="sect1" title="locale"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.locales.locale"></a>locale</h2></div></div></div><p> -Describes the basic locale object, including nested -classes id, facet, and the reference-counted implementation object, -class _Impl. -</p><div class="sect2" title="Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.req"></a>Requirements</h3></div></div></div><p> -Class locale is non-templatized and has two distinct types nested -inside of it: -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> -class facet -22.1.1.1.2 Class locale::facet -</em></span> -</p></blockquote></div><p> -Facets actually implement locale functionality. For instance, a facet -called numpunct is the data object that can be used to query for the -thousands separator in the locale. -</p><p> -Literally, a facet is strictly defined: -</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - Containing the following public data member: - </p><p> - <code class="code">static locale::id id;</code> - </p></li><li class="listitem"><p> - Derived from another facet: - </p><p> - <code class="code">class gnu_codecvt: public std::ctype<user-defined-type></code> - </p></li></ul></div><p> -Of interest in this class are the memory management options explicitly -specified as an argument to facet's constructor. Each constructor of a -facet class takes a std::size_t __refs argument: if __refs == 0, the -facet is deleted when the locale containing it is destroyed. If __refs -== 1, the facet is not destroyed, even when it is no longer -referenced. -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> -class id -22.1.1.1.3 - Class locale::id -</em></span> -</p></blockquote></div><p> -Provides an index for looking up specific facets. -</p></div><div class="sect2" title="Design"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.design"></a>Design</h3></div></div></div><p> -The major design challenge is fitting an object-orientated and -non-global locale design on top of POSIX and other relevant standards, -which include the Single Unix (nee X/Open.) -</p><p> -Because C and earlier versions of POSIX fall down so completely, -portability is an issue. -</p></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.impl"></a>Implementation</h3></div></div></div><div class="sect3" title="Interacting with "C" locales"><div class="titlepage"><div><div><h4 class="title"><a id="locale.impl.c"></a>Interacting with "C" locales</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - <code class="code">`locale -a`</code> displays available locales. - </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting"> -af_ZA -ar_AE -ar_AE.utf8 -ar_BH -ar_BH.utf8 -ar_DZ -ar_DZ.utf8 -ar_EG -ar_EG.utf8 -ar_IN -ar_IQ -ar_IQ.utf8 -ar_JO -ar_JO.utf8 -ar_KW -ar_KW.utf8 -ar_LB -ar_LB.utf8 -ar_LY -ar_LY.utf8 -ar_MA -ar_MA.utf8 -ar_OM -ar_OM.utf8 -ar_QA -ar_QA.utf8 -ar_SA -ar_SA.utf8 -ar_SD -ar_SD.utf8 -ar_SY -ar_SY.utf8 -ar_TN -ar_TN.utf8 -ar_YE -ar_YE.utf8 -be_BY -be_BY.utf8 -bg_BG -bg_BG.utf8 -br_FR -bs_BA -C -ca_ES -ca_ES@euro -ca_ES.utf8 -ca_ES.utf8@euro -cs_CZ -cs_CZ.utf8 -cy_GB -da_DK -da_DK.iso885915 -da_DK.utf8 -de_AT -de_AT@euro -de_AT.utf8 -de_AT.utf8@euro -de_BE -de_BE@euro -de_BE.utf8 -de_BE.utf8@euro -de_CH -de_CH.utf8 -de_DE -de_DE@euro -de_DE.utf8 -de_DE.utf8@euro -de_LU -de_LU@euro -de_LU.utf8 -de_LU.utf8@euro -el_GR -el_GR.utf8 -en_AU -en_AU.utf8 -en_BW -en_BW.utf8 -en_CA -en_CA.utf8 -en_DK -en_DK.utf8 -en_GB -en_GB.iso885915 -en_GB.utf8 -en_HK -en_HK.utf8 -en_IE -en_IE@euro -en_IE.utf8 -en_IE.utf8@euro -en_IN -en_NZ -en_NZ.utf8 -en_PH -en_PH.utf8 -en_SG -en_SG.utf8 -en_US -en_US.iso885915 -en_US.utf8 -en_ZA -en_ZA.utf8 -en_ZW -en_ZW.utf8 -es_AR -es_AR.utf8 -es_BO -es_BO.utf8 -es_CL -es_CL.utf8 -es_CO -es_CO.utf8 -es_CR -es_CR.utf8 -es_DO -es_DO.utf8 -es_EC -es_EC.utf8 -es_ES -es_ES@euro -es_ES.utf8 -es_ES.utf8@euro -es_GT -es_GT.utf8 -es_HN -es_HN.utf8 -es_MX -es_MX.utf8 -es_NI -es_NI.utf8 -es_PA -es_PA.utf8 -es_PE -es_PE.utf8 -es_PR -es_PR.utf8 -es_PY -es_PY.utf8 -es_SV -es_SV.utf8 -es_US -es_US.utf8 -es_UY -es_UY.utf8 -es_VE -es_VE.utf8 -et_EE -et_EE.utf8 -eu_ES -eu_ES@euro -eu_ES.utf8 -eu_ES.utf8@euro -fa_IR -fi_FI -fi_FI@euro -fi_FI.utf8 -fi_FI.utf8@euro -fo_FO -fo_FO.utf8 -fr_BE -fr_BE@euro -fr_BE.utf8 -fr_BE.utf8@euro -fr_CA -fr_CA.utf8 -fr_CH -fr_CH.utf8 -fr_FR -fr_FR@euro -fr_FR.utf8 -fr_FR.utf8@euro -fr_LU -fr_LU@euro -fr_LU.utf8 -fr_LU.utf8@euro -ga_IE -ga_IE@euro -ga_IE.utf8 -ga_IE.utf8@euro -gl_ES -gl_ES@euro -gl_ES.utf8 -gl_ES.utf8@euro -gv_GB -gv_GB.utf8 -he_IL -he_IL.utf8 -hi_IN -hr_HR -hr_HR.utf8 -hu_HU -hu_HU.utf8 -id_ID -id_ID.utf8 -is_IS -is_IS.utf8 -it_CH -it_CH.utf8 -it_IT -it_IT@euro -it_IT.utf8 -it_IT.utf8@euro -iw_IL -iw_IL.utf8 -ja_JP.eucjp -ja_JP.utf8 -ka_GE -kl_GL -kl_GL.utf8 -ko_KR.euckr -ko_KR.utf8 -kw_GB -kw_GB.utf8 -lt_LT -lt_LT.utf8 -lv_LV -lv_LV.utf8 -mi_NZ -mk_MK -mk_MK.utf8 -mr_IN -ms_MY -ms_MY.utf8 -mt_MT -mt_MT.utf8 -nl_BE -nl_BE@euro -nl_BE.utf8 -nl_BE.utf8@euro -nl_NL -nl_NL@euro -nl_NL.utf8 -nl_NL.utf8@euro -nn_NO -nn_NO.utf8 -no_NO -no_NO.utf8 -oc_FR -pl_PL -pl_PL.utf8 -POSIX -pt_BR -pt_BR.utf8 -pt_PT -pt_PT@euro -pt_PT.utf8 -pt_PT.utf8@euro -ro_RO -ro_RO.utf8 -ru_RU -ru_RU.koi8r -ru_RU.utf8 -ru_UA -ru_UA.utf8 -se_NO -sk_SK -sk_SK.utf8 -sl_SI -sl_SI.utf8 -sq_AL -sq_AL.utf8 -sr_YU -sr_YU@cyrillic -sr_YU.utf8 -sr_YU.utf8@cyrillic -sv_FI -sv_FI@euro -sv_FI.utf8 -sv_FI.utf8@euro -sv_SE -sv_SE.iso885915 -sv_SE.utf8 -ta_IN -te_IN -tg_TJ -th_TH -th_TH.utf8 -tl_PH -tr_TR -tr_TR.utf8 -uk_UA -uk_UA.utf8 -ur_PK -uz_UZ -vi_VN -vi_VN.tcvn -wa_BE -wa_BE@euro -yi_US -zh_CN -zh_CN.gb18030 -zh_CN.gbk -zh_CN.utf8 -zh_HK -zh_HK.utf8 -zh_TW -zh_TW.euctw -zh_TW.utf8 -</pre></blockquote></div></li><li class="listitem"><p> - <code class="code">`locale`</code> displays environmental variables that - impact how locale("") will be deduced. - </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting"> -LANG=en_US -LC_CTYPE="en_US" -LC_NUMERIC="en_US" -LC_TIME="en_US" -LC_COLLATE="en_US" -LC_MONETARY="en_US" -LC_MESSAGES="en_US" -LC_PAPER="en_US" -LC_NAME="en_US" -LC_ADDRESS="en_US" -LC_TELEPHONE="en_US" -LC_MEASUREMENT="en_US" -LC_IDENTIFICATION="en_US" -LC_ALL= -</pre></blockquote></div></li></ul></div><p> -From Josuttis, p. 697-698, which says, that "there is only *one* -relation (of the C++ locale mechanism) to the C locale mechanism: the -global C locale is modified if a named C++ locale object is set as the -global locale" (emphasis Paolo), that is: -</p><pre class="programlisting">std::locale::global(std::locale(""));</pre><p>affects the C functions as if the following call was made:</p><pre class="programlisting">std::setlocale(LC_ALL, "");</pre><p> - On the other hand, there is *no* vice versa, that is, calling - setlocale has *no* whatsoever on the C++ locale mechanism, in - particular on the working of locale(""), which constructs the locale - object from the environment of the running program, that is, in - practice, the set of LC_ALL, LANG, etc. variable of the shell. -</p></div></div><div class="sect2" title="Future"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.future"></a>Future</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - Locale initialization: at what point does _S_classic, _S_global - get initialized? Can named locales assume this initialization - has already taken place? - </p></li><li class="listitem"><p> - Document how named locales error check when filling data - members. I.e., a fr_FR locale that doesn't have - numpunct::truename(): does it use "true"? Or is it a blank - string? What's the convention? - </p></li><li class="listitem"><p> - Explain how locale aliasing happens. When does "de_DE" use "de" - information? What is the rule for locales composed of just an - ISO language code (say, "de") and locales with both an ISO - language code and ISO country code (say, "de_DE"). - </p></li><li class="listitem"><p> - What should non-required facet instantiations do? If the - generic implementation is provided, then how to end-users - provide specializations? - </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="locales.locale.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id645730"></a><p><span class="title"><i> - The GNU C Library - </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling and 7 Locales and Internationalization. </span></p></div><div class="biblioentry" title="Correspondence"><a id="id610693"></a><p><span class="title"><i> - Correspondence - </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id638635"></a><p><span class="title"><i> - ISO/IEC 14882:1998 Programming languages - C++ - </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id617195"></a><p><span class="title"><i> - ISO/IEC 9899:1999 Programming languages - C - </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004)"><a id="id617213"></a><p><span class="title"><i> - The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) - </i>. </span><span class="copyright">Copyright © 1999 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid"> - <a class="ulink" href="http://www.unix.org/version3/ieee_std.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id713713"></a><p><span class="title"><i> - The C++ Programming Language, Special Edition - </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> - Addison Wesley - . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id653680"></a><p><span class="title"><i> - Standard C++ IOStreams and Locales - </i>. </span><span class="subtitle"> - Advanced Programmer's Guide and Reference - . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> - Addison Wesley Longman - . </span></span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="localization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="localization.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VI. - Localization - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 15. Facets aka Categories</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/localization.html b/libstdc++-v3/doc/html/manual/localization.html index 76d7c37db95..fa1d5f39945 100644 --- a/libstdc++-v3/doc/html/manual/localization.html +++ b/libstdc++-v3/doc/html/manual/localization.html @@ -1,9 +1,439 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part VI. Localization</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt05ch13s06.html" title="CString (MFC)" /><link rel="next" href="locales.html" title="Chapter 14. Locales" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part VI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 8. Localization</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="strings.html" title="Chapter 7. Strings" /><link rel="next" href="facets.html" title="Facets" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Localization -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="locales.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part VI. Localization"><div class="titlepage"><div><div><h1 class="title"><a id="manual.localization"></a>Part VI. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 8. Localization"><div class="titlepage"><div><div><h2 class="title"><a id="std.localization"></a>Chapter 8. Localization - <a id="id655346" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt05ch13s06.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="locales.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">CString (MFC) </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 14. Locales</td></tr></table></div></body></html> + <a id="id492578" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt></dl></dd></dl></div><div class="section" title="Locales"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.localization.locales"></a>Locales</h2></div></div></div><div class="section" title="locale"><div class="titlepage"><div><div><h3 class="title"><a id="std.localization.locales.locale"></a>locale</h3></div></div></div><p> +Describes the basic locale object, including nested +classes id, facet, and the reference-counted implementation object, +class _Impl. +</p><div class="section" title="Requirements"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.req"></a>Requirements</h4></div></div></div><p> +Class locale is non-templatized and has two distinct types nested +inside of it: +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +class facet +22.1.1.1.2 Class locale::facet +</em></span> +</p></blockquote></div><p> +Facets actually implement locale functionality. For instance, a facet +called numpunct is the data object that can be used to query for the +thousands separator in the locale. +</p><p> +Literally, a facet is strictly defined: +</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + Containing the following public data member: + </p><p> + <code class="code">static locale::id id;</code> + </p></li><li class="listitem"><p> + Derived from another facet: + </p><p> + <code class="code">class gnu_codecvt: public std::ctype<user-defined-type></code> + </p></li></ul></div><p> +Of interest in this class are the memory management options explicitly +specified as an argument to facet's constructor. Each constructor of a +facet class takes a std::size_t __refs argument: if __refs == 0, the +facet is deleted when the locale containing it is destroyed. If __refs +== 1, the facet is not destroyed, even when it is no longer +referenced. +</p><div class="blockquote"><blockquote class="blockquote"><p> +<span class="emphasis"><em> +class id +22.1.1.1.3 - Class locale::id +</em></span> +</p></blockquote></div><p> +Provides an index for looking up specific facets. +</p></div><div class="section" title="Design"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.design"></a>Design</h4></div></div></div><p> +The major design challenge is fitting an object-orientated and +non-global locale design on top of POSIX and other relevant standards, +which include the Single Unix (nee X/Open.) +</p><p> +Because C and earlier versions of POSIX fall down so completely, +portability is an issue. +</p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.impl"></a>Implementation</h4></div></div></div><div class="section" title="Interacting with "C" locales"><div class="titlepage"><div><div><h5 class="title"><a id="locale.impl.c"></a>Interacting with "C" locales</h5></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + <code class="code">`locale -a`</code> displays available locales. + </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting"> +af_ZA +ar_AE +ar_AE.utf8 +ar_BH +ar_BH.utf8 +ar_DZ +ar_DZ.utf8 +ar_EG +ar_EG.utf8 +ar_IN +ar_IQ +ar_IQ.utf8 +ar_JO +ar_JO.utf8 +ar_KW +ar_KW.utf8 +ar_LB +ar_LB.utf8 +ar_LY +ar_LY.utf8 +ar_MA +ar_MA.utf8 +ar_OM +ar_OM.utf8 +ar_QA +ar_QA.utf8 +ar_SA +ar_SA.utf8 +ar_SD +ar_SD.utf8 +ar_SY +ar_SY.utf8 +ar_TN +ar_TN.utf8 +ar_YE +ar_YE.utf8 +be_BY +be_BY.utf8 +bg_BG +bg_BG.utf8 +br_FR +bs_BA +C +ca_ES +ca_ES@euro +ca_ES.utf8 +ca_ES.utf8@euro +cs_CZ +cs_CZ.utf8 +cy_GB +da_DK +da_DK.iso885915 +da_DK.utf8 +de_AT +de_AT@euro +de_AT.utf8 +de_AT.utf8@euro +de_BE +de_BE@euro +de_BE.utf8 +de_BE.utf8@euro +de_CH +de_CH.utf8 +de_DE +de_DE@euro +de_DE.utf8 +de_DE.utf8@euro +de_LU +de_LU@euro +de_LU.utf8 +de_LU.utf8@euro +el_GR +el_GR.utf8 +en_AU +en_AU.utf8 +en_BW +en_BW.utf8 +en_CA +en_CA.utf8 +en_DK +en_DK.utf8 +en_GB +en_GB.iso885915 +en_GB.utf8 +en_HK +en_HK.utf8 +en_IE +en_IE@euro +en_IE.utf8 +en_IE.utf8@euro +en_IN +en_NZ +en_NZ.utf8 +en_PH +en_PH.utf8 +en_SG +en_SG.utf8 +en_US +en_US.iso885915 +en_US.utf8 +en_ZA +en_ZA.utf8 +en_ZW +en_ZW.utf8 +es_AR +es_AR.utf8 +es_BO +es_BO.utf8 +es_CL +es_CL.utf8 +es_CO +es_CO.utf8 +es_CR +es_CR.utf8 +es_DO +es_DO.utf8 +es_EC +es_EC.utf8 +es_ES +es_ES@euro +es_ES.utf8 +es_ES.utf8@euro +es_GT +es_GT.utf8 +es_HN +es_HN.utf8 +es_MX +es_MX.utf8 +es_NI +es_NI.utf8 +es_PA +es_PA.utf8 +es_PE +es_PE.utf8 +es_PR +es_PR.utf8 +es_PY +es_PY.utf8 +es_SV +es_SV.utf8 +es_US +es_US.utf8 +es_UY +es_UY.utf8 +es_VE +es_VE.utf8 +et_EE +et_EE.utf8 +eu_ES +eu_ES@euro +eu_ES.utf8 +eu_ES.utf8@euro +fa_IR +fi_FI +fi_FI@euro +fi_FI.utf8 +fi_FI.utf8@euro +fo_FO +fo_FO.utf8 +fr_BE +fr_BE@euro +fr_BE.utf8 +fr_BE.utf8@euro +fr_CA +fr_CA.utf8 +fr_CH +fr_CH.utf8 +fr_FR +fr_FR@euro +fr_FR.utf8 +fr_FR.utf8@euro +fr_LU +fr_LU@euro +fr_LU.utf8 +fr_LU.utf8@euro +ga_IE +ga_IE@euro +ga_IE.utf8 +ga_IE.utf8@euro +gl_ES +gl_ES@euro +gl_ES.utf8 +gl_ES.utf8@euro +gv_GB +gv_GB.utf8 +he_IL +he_IL.utf8 +hi_IN +hr_HR +hr_HR.utf8 +hu_HU +hu_HU.utf8 +id_ID +id_ID.utf8 +is_IS +is_IS.utf8 +it_CH +it_CH.utf8 +it_IT +it_IT@euro +it_IT.utf8 +it_IT.utf8@euro +iw_IL +iw_IL.utf8 +ja_JP.eucjp +ja_JP.utf8 +ka_GE +kl_GL +kl_GL.utf8 +ko_KR.euckr +ko_KR.utf8 +kw_GB +kw_GB.utf8 +lt_LT +lt_LT.utf8 +lv_LV +lv_LV.utf8 +mi_NZ +mk_MK +mk_MK.utf8 +mr_IN +ms_MY +ms_MY.utf8 +mt_MT +mt_MT.utf8 +nl_BE +nl_BE@euro +nl_BE.utf8 +nl_BE.utf8@euro +nl_NL +nl_NL@euro +nl_NL.utf8 +nl_NL.utf8@euro +nn_NO +nn_NO.utf8 +no_NO +no_NO.utf8 +oc_FR +pl_PL +pl_PL.utf8 +POSIX +pt_BR +pt_BR.utf8 +pt_PT +pt_PT@euro +pt_PT.utf8 +pt_PT.utf8@euro +ro_RO +ro_RO.utf8 +ru_RU +ru_RU.koi8r +ru_RU.utf8 +ru_UA +ru_UA.utf8 +se_NO +sk_SK +sk_SK.utf8 +sl_SI +sl_SI.utf8 +sq_AL +sq_AL.utf8 +sr_YU +sr_YU@cyrillic +sr_YU.utf8 +sr_YU.utf8@cyrillic +sv_FI +sv_FI@euro +sv_FI.utf8 +sv_FI.utf8@euro +sv_SE +sv_SE.iso885915 +sv_SE.utf8 +ta_IN +te_IN +tg_TJ +th_TH +th_TH.utf8 +tl_PH +tr_TR +tr_TR.utf8 +uk_UA +uk_UA.utf8 +ur_PK +uz_UZ +vi_VN +vi_VN.tcvn +wa_BE +wa_BE@euro +yi_US +zh_CN +zh_CN.gb18030 +zh_CN.gbk +zh_CN.utf8 +zh_HK +zh_HK.utf8 +zh_TW +zh_TW.euctw +zh_TW.utf8 +</pre></blockquote></div></li><li class="listitem"><p> + <code class="code">`locale`</code> displays environmental variables that + impact how locale("") will be deduced. + </p><div class="blockquote"><blockquote class="blockquote"><pre class="programlisting"> +LANG=en_US +LC_CTYPE="en_US" +LC_NUMERIC="en_US" +LC_TIME="en_US" +LC_COLLATE="en_US" +LC_MONETARY="en_US" +LC_MESSAGES="en_US" +LC_PAPER="en_US" +LC_NAME="en_US" +LC_ADDRESS="en_US" +LC_TELEPHONE="en_US" +LC_MEASUREMENT="en_US" +LC_IDENTIFICATION="en_US" +LC_ALL= +</pre></blockquote></div></li></ul></div><p> +From Josuttis, p. 697-698, which says, that "there is only *one* +relation (of the C++ locale mechanism) to the C locale mechanism: the +global C locale is modified if a named C++ locale object is set as the +global locale" (emphasis Paolo), that is: +</p><pre class="programlisting">std::locale::global(std::locale(""));</pre><p>affects the C functions as if the following call was made:</p><pre class="programlisting">std::setlocale(LC_ALL, "");</pre><p> + On the other hand, there is *no* vice versa, that is, calling + setlocale has *no* whatsoever on the C++ locale mechanism, in + particular on the working of locale(""), which constructs the locale + object from the environment of the running program, that is, in + practice, the set of LC_ALL, LANG, etc. variable of the shell. +</p></div></div><div class="section" title="Future"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.future"></a>Future</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + Locale initialization: at what point does _S_classic, _S_global + get initialized? Can named locales assume this initialization + has already taken place? + </p></li><li class="listitem"><p> + Document how named locales error check when filling data + members. I.e., a fr_FR locale that doesn't have + numpunct::truename(): does it use "true"? Or is it a blank + string? What's the convention? + </p></li><li class="listitem"><p> + Explain how locale aliasing happens. When does "de_DE" use "de" + information? What is the rule for locales composed of just an + ISO language code (say, "de") and locales with both an ISO + language code and ISO country code (say, "de_DE"). + </p></li><li class="listitem"><p> + What should non-required facet instantiations do? If the + generic implementation is provided, then how to end-users + provide specializations? + </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="locales.locale.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id469670"></a><p><span class="title"><i> + The GNU C Library + </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums"> + Chapters 6 Character Set Handling and 7 Locales and + Internationalization + . </span></p></div><div class="biblioentry" title="Correspondence"><a id="id506284"></a><p><span class="title"><i> + Correspondence + </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id404778"></a><p><span class="title"><i> + ISO/IEC 14882:1998 Programming languages - C++ + </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id404796"></a><p><span class="title"><i> + ISO/IEC 9899:1999 Programming languages - C + </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry"><a id="id415109"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.opengroup.org/austin" target="_top"> + <em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em> + </a> + . </span><span class="copyright">Copyright © 2008 + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. + . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id376691"></a><p><span class="title"><i> + The C++ Programming Language, Special Edition + </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> + Addison Wesley + . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id349259"></a><p><span class="title"><i> + Standard C++ IOStreams and Locales + </i>. </span><span class="subtitle"> + Advanced Programmer's Guide and Reference + . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> + Addison Wesley Longman + . </span></span></p></div></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="strings.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="facets.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 7. + Strings + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Facets</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/make.html b/libstdc++-v3/doc/html/manual/make.html index d3066e93934..fb6d3a3f368 100644 --- a/libstdc++-v3/doc/html/manual/make.html +++ b/libstdc++-v3/doc/html/manual/make.html @@ -4,6 +4,6 @@ <a class="ulink" href="http://gcc.gnu.org/install/" target="_top">GCC Installation Instructions</a> first. Read <span class="emphasis"><em>all of them</em></span>. <span class="emphasis"><em>Twice.</em></span> - </p><p>Then type:<span class="command"><strong>make</strong></span>, and congratulations, you're + </p><p>Then type: <span class="command"><strong>make</strong></span>, and congratulations, you've started to build. </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="configure.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="setup.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Configure </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Using</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/memory.html b/libstdc++-v3/doc/html/manual/memory.html index 18db2d502bf..92e8b7f471e 100644 --- a/libstdc++-v3/doc/html/manual/memory.html +++ b/libstdc++-v3/doc/html/manual/memory.html @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 11. Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="pairs.html" title="Chapter 10. Pairs" /><link rel="next" href="auto_ptr.html" title="auto_ptr" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Part IV. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Memory</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="pairs.html" title="Pairs" /><link rel="next" href="traits.html" title="Traits" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Utilities -</th><td width="20%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 11. Memory"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.memory"></a>Chapter 11. Memory</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr></table><hr /></div><div class="section" title="Memory"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.memory"></a>Memory</h2></div></div></div><p> Memory contains three general areas. First, function and operator calls via <code class="function">new</code> and <code class="function">delete</code> operator or member function calls. Second, allocation via <code class="classname">allocator</code>. And finally, smart pointer and intelligent pointer abstractions. - </p><div class="sect1" title="Allocators"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.allocator"></a>Allocators</h2></div></div></div><p> + </p><div class="section" title="Allocators"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.allocator"></a>Allocators</h3></div></div></div><p> Memory management for Standard Library entities is encapsulated in a class template called <code class="classname">allocator</code>. The <code class="classname">allocator</code> abstraction is used throughout the @@ -17,7 +17,7 @@ algorithms, and parts of iostreams. This class, and base classes of it, are the superset of available free store (<span class="quote">“<span class="quote">heap</span>”</span>) management classes. -</p><div class="sect2" title="Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.req"></a>Requirements</h3></div></div></div><p> +</p><div class="section" title="Requirements"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.req"></a>Requirements</h4></div></div></div><p> The C++ standard only gives a few directives in this area: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> When you add elements to a container, and the container must @@ -32,9 +32,9 @@ container-of-T is <code class="classname">allocator<T></code>. </p></li><li class="listitem"><p> The interface of the <code class="classname">allocator<T></code> class is - extremely simple. It has about 20 public declarations (nested - typedefs, member functions, etc), but the two which concern us most - are: + extremely simple. It has about 20 public declarations (nested + typedefs, member functions, etc), but the two which concern us most + are: </p><pre class="programlisting"> T* allocate (size_type n, const void* hint = 0); void deallocate (T* p, size_type n); @@ -43,18 +43,18 @@ functions is a <span class="emphasis"><em>count</em></span> of the number of <span class="type">T</span>'s to allocate space for, <span class="emphasis"><em>not their total size</em></span>. - (This is a simplification; the real signatures use nested typedefs.) + (This is a simplification; the real signatures use nested typedefs.) </p></li><li class="listitem"><p> The storage is obtained by calling <code class="function">::operator new</code>, but it is unspecified when or how - often this function is called. The use of the + often this function is called. The use of the <code class="varname">hint</code> is unspecified, but intended as an aid to locality if an implementation so desires. <code class="constant">[20.4.1.1]/6</code> - </p></li></ul></div><p> + </p></li></ul></div><p> Complete details can be found in the C++ standard, look in <code class="constant">[20.4 Memory]</code>. - </p></div><div class="sect2" title="Design Issues"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.design_issues"></a>Design Issues</h3></div></div></div><p> + </p></div><div class="section" title="Design Issues"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.design_issues"></a>Design Issues</h4></div></div></div><p> The easiest way of fulfilling the requirements is to call <code class="function">operator new</code> each time a container needs memory, and to call <code class="function">operator delete</code> each time @@ -67,7 +67,7 @@ while <code class="classname">__gnu_cxx::malloc_allocator</code> implements much the same thing, only with the C language functions <code class="function">std::malloc</code> and <code class="function">free</code>. - </p><p> + </p><p> Another approach is to use intelligence within the allocator class to cache allocations. This extra machinery can take a variety of forms: a bitmap index, an index into an exponentially increasing @@ -93,33 +93,33 @@ or loading and unloading shared objects in memory. As such, using caching allocators on systems that do not support <code class="function">abi::__cxa_atexit</code> is not recommended. - </p></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.impl"></a>Implementation</h3></div></div></div><div class="sect3" title="Interface Design"><div class="titlepage"><div><div><h4 class="title"><a id="id630442"></a>Interface Design</h4></div></div></div><p> + </p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.impl"></a>Implementation</h4></div></div></div><div class="section" title="Interface Design"><div class="titlepage"><div><div><h5 class="title"><a id="id377805"></a>Interface Design</h5></div></div></div><p> The only allocator interface that is supported is the standard C++ interface. As such, all STL containers have been adjusted, and all external allocators have - been modified to support this change. - </p><p> + been modified to support this change. + </p><p> The class <code class="classname">allocator</code> just has typedef, constructor, and rebind members. It inherits from one of the high-speed extension allocators, covered below. Thus, all allocation and deallocation depends on the base class. - </p><p> + </p><p> The base class that <code class="classname">allocator</code> is derived from may not be user-configurable. -</p></div><div class="sect3" title="Selecting Default Allocation Policy"><div class="titlepage"><div><div><h4 class="title"><a id="id637894"></a>Selecting Default Allocation Policy</h4></div></div></div><p> +</p></div><div class="section" title="Selecting Default Allocation Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id406368"></a>Selecting Default Allocation Policy</h5></div></div></div><p> It's difficult to pick an allocation strategy that will provide maximum utility, without excessively penalizing some behavior. In fact, it's difficult just deciding which typical actions to measure for speed. - </p><p> + </p><p> Three synthetic benchmarks have been created that provide data that is used to compare different C++ allocators. These tests are: </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> - Insertion. + Insertion. </p><p> Over multiple iterations, various STL container objects have elements inserted to some maximum amount. A variety - of allocators are tested. + of allocators are tested. Test source for <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup" target="_top">sequence</a> and <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup" target="_top">associative</a> containers. @@ -128,22 +128,22 @@ </p><p> This test shows the ability of the allocator to reclaim memory on a per-thread basis, as well as measuring thread contention - for memory resources. - Test source + for memory resources. + Test source <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup" target="_top">here</a>. </p></li><li class="listitem"><p> A threaded producer/consumer model. </p><p> Test source for <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup" target="_top">sequence</a> - and + and <a class="ulink" href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup" target="_top">associative</a> containers. </p></li></ol></div><p> The current default choice for <code class="classname">allocator</code> is <code class="classname">__gnu_cxx::new_allocator</code>. - </p></div><div class="sect3" title="Disabling Memory Caching"><div class="titlepage"><div><div><h4 class="title"><a id="id629596"></a>Disabling Memory Caching</h4></div></div></div><p> + </p></div><div class="section" title="Disabling Memory Caching"><div class="titlepage"><div><div><h5 class="title"><a id="id394979"></a>Disabling Memory Caching</h5></div></div></div><p> In use, <code class="classname">allocator</code> may allocate and deallocate using implementation-specified strategies and heuristics. Because of this, every call to an allocator object's @@ -151,13 +151,13 @@ call the global operator new. This situation is also duplicated for calls to the <code class="function">deallocate</code> member function. - </p><p> - This can be confusing. - </p><p> + </p><p> + This can be confusing. + </p><p> In particular, this can make debugging memory errors more difficult, especially when using third party tools like valgrind or debug versions of <code class="function">new</code>. - </p><p> + </p><p> There are various ways to solve this problem. One would be to use a custom allocator that just called operators <code class="function">new</code> and <code class="function">delete</code> @@ -179,7 +179,7 @@ environment, it likely means that you linked against objects built against the older library (objects which might still using the cached allocations...). - </p></div></div><div class="sect2" title="Using a Specific Allocator"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.using"></a>Using a Specific Allocator</h3></div></div></div><p> + </p></div></div><div class="section" title="Using a Specific Allocator"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.using"></a>Using a Specific Allocator</h4></div></div></div><p> You can specify different memory management schemes on a per-container basis, by overriding the default <span class="type">Allocator</span> template parameter. For example, an easy @@ -190,16 +190,16 @@ Likewise, a debugging form of whichever allocator is currently in use: </p><pre class="programlisting"> std::deque <int, __gnu_cxx::debug_allocator<std::allocator<int> > > debug_deque; - </pre></div><div class="sect2" title="Custom Allocators"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.custom"></a>Custom Allocators</h3></div></div></div><p> + </pre></div><div class="section" title="Custom Allocators"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.custom"></a>Custom Allocators</h4></div></div></div><p> Writing a portable C++ allocator would dictate that the interface would look much like the one specified for <code class="classname">allocator</code>. Additional member functions, but not subtractions, would be permissible. - </p><p> + </p><p> Probably the best place to start would be to copy one of the - extension allocators: say a simple one like + extension allocators: say a simple one like <code class="classname">new_allocator</code>. - </p></div><div class="sect2" title="Extension Allocators"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.ext"></a>Extension Allocators</h3></div></div></div><p> + </p></div><div class="section" title="Extension Allocators"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.ext"></a>Extension Allocators</h4></div></div></div><p> Several other allocators are provided as part of this implementation. The location of the extension allocators and their names have changed, but in all cases, functionality is @@ -237,7 +237,7 @@ startup. For usage examples, please consult the testsuite. </p></li><li class="listitem"><p> <code class="classname">debug_allocator</code> - </p><p> + </p><p> A wrapper around an arbitrary allocator A. It passes on slightly increased size requests to A, and uses the extra memory to store size information. When a pointer is passed @@ -246,13 +246,13 @@ guarantee they match. </p></li><li class="listitem"><p> <code class="classname">throw_allocator</code> - </p><p> + </p><p> Includes memory tracking and marking abilities as well as hooks for throwing exceptions at configurable intervals (including random, - all, none). + all, none). </p></li><li class="listitem"><p> <code class="classname">__pool_alloc</code> - </p><p> + </p><p> A high-performance, single pool allocator. The reusable memory is shared among identical instantiations of this type. It calls through <code class="function">::operator new</code> to @@ -261,7 +261,7 @@ size, then the pool is bypassed, and the allocate/deallocate request is passed to <code class="function">::operator new</code> directly. - </p><p> + </p><p> Older versions of this class take a boolean template parameter, called <code class="varname">thr</code>, and an integer template parameter, called <code class="varname">inst</code>. @@ -308,39 +308,416 @@ A high-performance allocator that uses a bit-map to keep track of the used and unused memory locations. It has its own documentation, found <a class="link" href="bitmap_allocator.html" title="bitmap_allocator">here</a>. - </p></li></ol></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="allocator.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id616986"></a><p><span class="title"><i> - ISO/IEC 14882:1998 Programming languages - C++ + </p></li></ol></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="allocator.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id399256"></a><p><span class="title"><i> + ISO/IEC 14882:1998 Programming languages - C++ </i>. </span> isoc++_1998 - <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry" title="The Standard Librarian: What Are Allocators Good"><a id="id617001"></a><p><span class="title"><i>The Standard Librarian: What Are Allocators Good - </i>. </span> - austernm - <span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> - C/C++ Users Journal - . </span></span><span class="biblioid"> - <a class="ulink" href="http://www.cuj.com/documents/s=8000/cujcexp1812austern/" target="_top"> + <span class="pagenums">20.4 Memory. </span></p></div><div class="biblioentry"><a id="id399271"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.drdobbs.com/cpp/184403759" target="_top"> + <em class="citetitle"> + The Standard Librarian: What Are Allocators Good For? + </em> </a> - . </span></p></div><div class="biblioentry" title="The Hoard Memory Allocator"><a id="id658988"></a><p><span class="title"><i>The Hoard Memory Allocator</i>. </span> - emeryb - <span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> + C/C++ Users Journal + . </span></span></p></div><div class="biblioentry"><a id="id405510"></a><p><span class="biblioid"> <a class="ulink" href="http://www.cs.umass.edu/~emery/hoard/" target="_top"> + <em class="citetitle"> + The Hoard Memory Allocator + </em> </a> - . </span></p></div><div class="biblioentry" title="Reconsidering Custom Memory Allocation"><a id="id620190"></a><p><span class="title"><i>Reconsidering Custom Memory Allocation</i>. </span> - bergerzorn - <span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span></p></div><div class="biblioentry"><a id="id451188"></a><p><span class="biblioid"> <a class="ulink" href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" target="_top"> + <em class="citetitle"> + Reconsidering Custom Memory Allocation + </em> </a> - . </span></p></div><div class="biblioentry" title="Allocator Types"><a id="id598997"></a><p><span class="title"><i>Allocator Types</i>. </span> - kreftlanger - <span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername"> - C/C++ Users Journal - . </span></span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Emery</span> <span class="surname">Berger</span>. </span><span class="author"><span class="firstname">Ben</span> <span class="surname">Zorn</span>. </span><span class="author"><span class="firstname">Kathryn</span> <span class="surname">McKinley</span>. </span><span class="copyright">Copyright © 2002 OOPSLA. </span></p></div><div class="biblioentry"><a id="id387032"></a><p><span class="biblioid"> <a class="ulink" href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html" target="_top"> + <em class="citetitle"> + Allocator Types + </em> </a> - . </span></p></div><div class="biblioentry" title="The C++ Programming Language"><a id="id683391"></a><p><span class="title"><i>The C++ Programming Language</i>. </span> - tcpl - <span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername"> + . </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="publisher"><span class="publishername"> + C/C++ Users Journal + . </span></span></p></div><div class="biblioentry" title="The C++ Programming Language"><a id="id392077"></a><p><span class="title"><i>The C++ Programming Language</i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 . </span><span class="pagenums">19.4 Allocators. </span><span class="publisher"><span class="publishername"> Addison Wesley - . </span></span></p></div><div class="biblioentry" title="Yalloc: A Recycling C++ Allocator"><a id="id704594"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span> - yenf - <span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span><span class="copyright">Copyright © . </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="auto_ptr.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 10. Pairs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> auto_ptr</td></tr></table></div></body></html> + . </span></span></p></div><div class="biblioentry" title="Yalloc: A Recycling C++ Allocator"><a id="id443714"></a><p><span class="title"><i>Yalloc: A Recycling C++ Allocator</i>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Yen</span>. </span></p></div></div></div><div class="section" title="auto_ptr"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.auto_ptr"></a>auto_ptr</h3></div></div></div><div class="section" title="Limitations"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.limitations"></a>Limitations</h4></div></div></div><p>Explaining all of the fun and delicious things that can + happen with misuse of the <code class="classname">auto_ptr</code> class + template (called <acronym class="acronym">AP</acronym> here) would take some + time. Suffice it to say that the use of <acronym class="acronym">AP</acronym> + safely in the presence of copying has some subtleties. + </p><p> + The AP class is a really + nifty idea for a smart pointer, but it is one of the dumbest of + all the smart pointers -- and that's fine. + </p><p> + AP is not meant to be a supersmart solution to all resource + leaks everywhere. Neither is it meant to be an effective form + of garbage collection (although it can help, a little bit). + And it can <span class="emphasis"><em>not</em></span>be used for arrays! + </p><p> + <acronym class="acronym">AP</acronym> is meant to prevent nasty leaks in the + presence of exceptions. That's <span class="emphasis"><em>all</em></span>. This + code is AP-friendly: + </p><pre class="programlisting"> + // Not a recommend naming scheme, but good for web-based FAQs. + typedef std::auto_ptr<MyClass> APMC; + + extern function_taking_MyClass_pointer (MyClass*); + extern some_throwable_function (); + + void func (int data) + { + APMC ap (new MyClass(data)); + + some_throwable_function(); // this will throw an exception + + function_taking_MyClass_pointer (ap.get()); + } + </pre><p>When an exception gets thrown, the instance of MyClass that's + been created on the heap will be <code class="function">delete</code>'d as the stack is + unwound past <code class="function">func()</code>. + </p><p>Changing that code as follows is not <acronym class="acronym">AP</acronym>-friendly: + </p><pre class="programlisting"> + APMC ap (new MyClass[22]); + </pre><p>You will get the same problems as you would without the use + of <acronym class="acronym">AP</acronym>: + </p><pre class="programlisting"> + char* array = new char[10]; // array new... + ... + delete array; // ...but single-object delete + </pre><p> + AP cannot tell whether the pointer you've passed at creation points + to one or many things. If it points to many things, you are about + to die. AP is trivial to write, however, so you could write your + own <code class="code">auto_array_ptr</code> for that situation (in fact, this has + been done many times; check the mailing lists, Usenet, Boost, etc). + </p></div><div class="section" title="Use in Containers"><div class="titlepage"><div><div><h4 class="title"><a id="auto_ptr.using"></a>Use in Containers</h4></div></div></div><p> + </p><p>All of the <a class="link" href="containers.html" title="Chapter 9. Containers">containers</a> + described in the standard library require their contained types + to have, among other things, a copy constructor like this: + </p><pre class="programlisting"> + struct My_Type + { + My_Type (My_Type const&); + }; + </pre><p> + Note the const keyword; the object being copied shouldn't change. + The template class <code class="code">auto_ptr</code> (called AP here) does not + meet this requirement. Creating a new AP by copying an existing + one transfers ownership of the pointed-to object, which means that + the AP being copied must change, which in turn means that the + copy ctors of AP do not take const objects. + </p><p> + The resulting rule is simple: <span class="emphasis"><em>Never ever use a + container of auto_ptr objects</em></span>. The standard says that + <span class="quote">“<span class="quote">undefined</span>”</span> behavior is the result, but it is + guaranteed to be messy. + </p><p> + To prevent you from doing this to yourself, the + <a class="link" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks">concept checks</a> built + in to this implementation will issue an error if you try to + compile code like this: + </p><pre class="programlisting"> + #include <vector> + #include <memory> + + void f() + { + std::vector< std::auto_ptr<int> > vec_ap_int; + } + </pre><p> +Should you try this with the checks enabled, you will see an error. + </p></div></div><div class="section" title="shared_ptr"><div class="titlepage"><div><div><h3 class="title"><a id="std.util.memory.shared_ptr"></a>shared_ptr</h3></div></div></div><p> +The shared_ptr class template stores a pointer, usually obtained via new, +and implements shared ownership semantics. +</p><div class="section" title="Requirements"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.req"></a>Requirements</h4></div></div></div><p> + </p><p> + The standard deliberately doesn't require a reference-counted + implementation, allowing other techniques such as a + circular-linked-list. + </p><p> + At the time of writing the C++0x working paper doesn't mention how + threads affect shared_ptr, but it is likely to follow the existing + practice set by <code class="classname">boost::shared_ptr</code>. The + shared_ptr in libstdc++ is derived from Boost's, so the same rules + apply. + </p><p> + </p></div><div class="section" title="Design Issues"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.design_issues"></a>Design Issues</h4></div></div></div><p> +The <code class="classname">shared_ptr</code> code is kindly donated to GCC by the Boost +project and the original authors of the code. The basic design and +algorithms are from Boost, the notes below describe details specific to +the GCC implementation. Names have been uglified in this implementation, +but the design should be recognisable to anyone familiar with the Boost +1.32 shared_ptr. + </p><p> +The basic design is an abstract base class, <code class="code">_Sp_counted_base</code> that +does the reference-counting and calls virtual functions when the count +drops to zero. +Derived classes override those functions to destroy resources in a context +where the correct dynamic type is known. This is an application of the +technique known as type erasure. + </p></div><div class="section" title="Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.impl"></a>Implementation</h4></div></div></div><div class="section" title="Class Hierarchy"><div class="titlepage"><div><div><h5 class="title"><a id="id389991"></a>Class Hierarchy</h5></div></div></div><p> +A <code class="classname">shared_ptr<T></code> contains a pointer of +type <span class="type">T*</span> and an object of type +<code class="classname">__shared_count</code>. The shared_count contains a +pointer of type <span class="type">_Sp_counted_base*</span> which points to the +object that maintains the reference-counts and destroys the managed +resource. + </p><div class="variablelist"><dl><dt><span class="term"><code class="classname">_Sp_counted_base<Lp></code></span></dt><dd><p> +The base of the hierarchy is parameterized on the lock policy (see below.) +_Sp_counted_base doesn't depend on the type of pointer being managed, +it only maintains the reference counts and calls virtual functions when +the counts drop to zero. The managed object is destroyed when the last +strong reference is dropped, but the _Sp_counted_base itself must exist +until the last weak reference is dropped. + </p></dd><dt><span class="term"><code class="classname">_Sp_counted_base_impl<Ptr, Deleter, Lp></code></span></dt><dd><p> +Inherits from _Sp_counted_base and stores a pointer of type <span class="type">Ptr</span> +and a deleter of type <code class="code">Deleter</code>. <code class="code">_Sp_deleter</code> is +used when the user doesn't supply a custom deleter. Unlike Boost's, this +default deleter is not "checked" because GCC already issues a warning if +<code class="function">delete</code> is used with an incomplete type. +This is the only derived type used by <code class="classname">shared_ptr<Ptr></code> +and it is never used by <code class="classname">shared_ptr</code>, which uses one of +the following types, depending on how the shared_ptr is constructed. + </p></dd><dt><span class="term"><code class="classname">_Sp_counted_ptr<Ptr, Lp></code></span></dt><dd><p> +Inherits from _Sp_counted_base and stores a pointer of type <span class="type">Ptr</span>, +which is passed to <code class="function">delete</code> when the last reference is dropped. +This is the simplest form and is used when there is no custom deleter or +allocator. + </p></dd><dt><span class="term"><code class="classname">_Sp_counted_deleter<Ptr, Deleter, Alloc></code></span></dt><dd><p> +Inherits from _Sp_counted_ptr and adds support for custom deleter and +allocator. Empty Base Optimization is used for the allocator. This class +is used even when the user only provides a custom deleter, in which case +<code class="classname">allocator</code> is used as the allocator. + </p></dd><dt><span class="term"><code class="classname">_Sp_counted_ptr_inplace<Tp, Alloc, Lp></code></span></dt><dd><p> +Used by <code class="code">allocate_shared</code> and <code class="code">make_shared</code>. +Contains aligned storage to hold an object of type <span class="type">Tp</span>, +which is constructed in-place with placement <code class="function">new</code>. +Has a variadic template constructor allowing any number of arguments to +be forwarded to <span class="type">Tp</span>'s constructor. +Unlike the other <code class="classname">_Sp_counted_*</code> classes, this one is parameterized on the +type of object, not the type of pointer; this is purely a convenience +that simplifies the implementation slightly. + </p></dd></dl></div></div><div class="section" title="Thread Safety"><div class="titlepage"><div><div><h5 class="title"><a id="id388735"></a>Thread Safety</h5></div></div></div><p> +C++0x-only features are: rvalue-ref/move support, allocator support, +aliasing constructor, make_shared & allocate_shared. Additionally, +the constructors taking <code class="classname">auto_ptr</code> parameters are +deprecated in C++0x mode. + </p><p> +The +<a class="ulink" href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety" target="_top">Thread +Safety</a> section of the Boost shared_ptr documentation says "shared_ptr +objects offer the same level of thread safety as built-in types." +The implementation must ensure that concurrent updates to separate shared_ptr +instances are correct even when those instances share a reference count e.g. +</p><pre class="programlisting"> +shared_ptr<A> a(new A); +shared_ptr<A> b(a); + +// Thread 1 // Thread 2 + a.reset(); b.reset(); +</pre><p> +The dynamically-allocated object must be destroyed by exactly one of the +threads. Weak references make things even more interesting. +The shared state used to implement shared_ptr must be transparent to the +user and invariants must be preserved at all times. +The key pieces of shared state are the strong and weak reference counts. +Updates to these need to be atomic and visible to all threads to ensure +correct cleanup of the managed resource (which is, after all, shared_ptr's +job!) +On multi-processor systems memory synchronisation may be needed so that +reference-count updates and the destruction of the managed resource are +race-free. +</p><p> +The function <code class="function">_Sp_counted_base::_M_add_ref_lock()</code>, called when +obtaining a shared_ptr from a weak_ptr, has to test if the managed +resource still exists and either increment the reference count or throw +<code class="classname">bad_weak_ptr</code>. +In a multi-threaded program there is a potential race condition if the last +reference is dropped (and the managed resource destroyed) between testing +the reference count and incrementing it, which could result in a shared_ptr +pointing to invalid memory. +</p><p> +The Boost shared_ptr (as used in GCC) features a clever lock-free +algorithm to avoid the race condition, but this relies on the +processor supporting an atomic <span class="emphasis"><em>Compare-And-Swap</em></span> +instruction. For other platforms there are fall-backs using mutex +locks. Boost (as of version 1.35) includes several different +implementations and the preprocessor selects one based on the +compiler, standard library, platform etc. For the version of +shared_ptr in libstdc++ the compiler and library are fixed, which +makes things much simpler: we have an atomic CAS or we don't, see Lock +Policy below for details. +</p></div><div class="section" title="Selecting Lock Policy"><div class="titlepage"><div><div><h5 class="title"><a id="id480578"></a>Selecting Lock Policy</h5></div></div></div><p> + </p><p> +There is a single <code class="classname">_Sp_counted_base</code> class, +which is a template parameterized on the enum +<span class="type">__gnu_cxx::_Lock_policy</span>. The entire family of classes is +parameterized on the lock policy, right up to +<code class="classname">__shared_ptr</code>, <code class="classname">__weak_ptr</code> and +<code class="classname">__enable_shared_from_this</code>. The actual +<code class="classname">std::shared_ptr</code> class inherits from +<code class="classname">__shared_ptr</code> with the lock policy parameter +selected automatically based on the thread model and platform that +libstdc++ is configured for, so that the best available template +specialization will be used. This design is necessary because it would +not be conforming for <code class="classname">shared_ptr</code> to have an +extra template parameter, even if it had a default value. The +available policies are: + </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> + <span class="type">_S_Atomic</span> + </p><p> +Selected when GCC supports a builtin atomic compare-and-swap operation +on the target processor (see <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html" target="_top">Atomic +Builtins</a>.) The reference counts are maintained using a lock-free +algorithm and GCC's atomic builtins, which provide the required memory +synchronisation. + </p></li><li class="listitem"><p> + <span class="type">_S_Mutex</span> + </p><p> +The _Sp_counted_base specialization for this policy contains a mutex, +which is locked in add_ref_lock(). This policy is used when GCC's atomic +builtins aren't available so explicit memory barriers are needed in places. + </p></li><li class="listitem"><p> + <span class="type">_S_Single</span> + </p><p> +This policy uses a non-reentrant add_ref_lock() with no locking. It is +used when libstdc++ is built without <code class="literal">--enable-threads</code>. + </p></li></ol></div><p> + For all three policies, reference count increments and + decrements are done via the functions in + <code class="filename">ext/atomicity.h</code>, which detect if the program + is multi-threaded. If only one thread of execution exists in + the program then less expensive non-atomic operations are used. + </p></div><div class="section" title="Dual C++0x and TR1 Implementation"><div class="titlepage"><div><div><h5 class="title"><a id="id399352"></a>Dual C++0x and TR1 Implementation</h5></div></div></div><p> +The interface of <code class="classname">tr1::shared_ptr</code> was extended for C++0x +with support for rvalue-references and the other features from N2351. +The <code class="classname">_Sp_counted_base</code> base class is implemented in +<code class="filename">tr1/boost_sp_shared_count.h</code> and is common to the TR1 +and C++0x versions of <code class="classname">shared_ptr</code>. +</p><p> +The classes derived from <code class="classname">_Sp_counted_base</code> (see Class Hierarchy +above) and <code class="classname">__shared_count</code> are implemented separately for C++0x +and TR1, in <code class="filename">bits/shared_ptr.h</code> and +<code class="filename">tr1/shared_ptr.h</code> respectively. +</p><p> +The TR1 implementation is considered relatively stable, so is unlikely to +change unless bug fixes require it. If the code that is common to both +C++0x and TR1 modes needs to diverge further then it might be necessary to +duplicate <code class="classname">_Sp_counted_base</code> and only make changes to +the C++0x version. +</p></div><div class="section" title="Related functions and classes"><div class="titlepage"><div><div><h5 class="title"><a id="id404250"></a>Related functions and classes</h5></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>, +<code class="code">const_pointer_cast</code></span></dt><dd><p> +As noted in N2351, these functions can be implemented non-intrusively using +the alias constructor. However the aliasing constructor is only available +in C++0x mode, so in TR1 mode these casts rely on three non-standard +constructors in shared_ptr and __shared_ptr. +In C++0x mode these constructors and the related tag types are not needed. + </p></dd><dt><span class="term"><code class="code">enable_shared_from_this</code></span></dt><dd><p> +The clever overload to detect a base class of type +<code class="code">enable_shared_from_this</code> comes straight from Boost. +There is an extra overload for <code class="code">__enable_shared_from_this</code> to +work smoothly with <code class="code">__shared_ptr<Tp, Lp></code> using any lock +policy. + </p></dd><dt><span class="term"><code class="code">make_shared</code>, <code class="code">allocate_shared</code></span></dt><dd><p> +<code class="code">make_shared</code> simply forwards to <code class="code">allocate_shared</code> +with <code class="code">std::allocator</code> as the allocator. +Although these functions can be implemented non-intrusively using the +alias constructor, if they have access to the implementation then it is +possible to save storage and reduce the number of heap allocations. The +newly constructed object and the _Sp_counted_* can be allocated in a single +block and the standard says implementations are "encouraged, but not required," +to do so. This implementation provides additional non-standard constructors +(selected with the type <code class="code">_Sp_make_shared_tag</code>) which create an +object of type <code class="code">_Sp_counted_ptr_inplace</code> to hold the new object. +The returned <code class="code">shared_ptr<A></code> needs to know the address of the +new <code class="code">A</code> object embedded in the <code class="code">_Sp_counted_ptr_inplace</code>, +but it has no way to access it. +This implementation uses a "covert channel" to return the address of the +embedded object when <code class="code">get_deleter<_Sp_make_shared_tag>()</code> +is called. Users should not try to use this. +As well as the extra constructors, this implementation also needs some +members of _Sp_counted_deleter to be protected where they could otherwise +be private. + </p></dd></dl></div></div></div><div class="section" title="Use"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.using"></a>Use</h4></div></div></div><div class="section" title="Examples"><div class="titlepage"><div><div><h5 class="title"><a id="id478086"></a>Examples</h5></div></div></div><p> + Examples of use can be found in the testsuite, under + <code class="filename">testsuite/tr1/2_general_utilities/shared_ptr</code>, + <code class="filename">testsuite/20_util/shared_ptr</code> + and + <code class="filename">testsuite/20_util/weak_ptr</code>. + </p></div><div class="section" title="Unresolved Issues"><div class="titlepage"><div><div><h5 class="title"><a id="id397929"></a>Unresolved Issues</h5></div></div></div><p> + The <span class="emphasis"><em><code class="classname">shared_ptr</code> atomic access</em></span> + clause in the C++0x working draft is not implemented in GCC. + </p><p> + The <span class="type">_S_single</span> policy uses atomics when used in MT + code, because it uses the same dispatcher functions that check + <code class="function">__gthread_active_p()</code>. This could be + addressed by providing template specialisations for some members + of <code class="classname">_Sp_counted_base<_S_single></code>. + </p><p> + Unlike Boost, this implementation does not use separate classes + for the pointer+deleter and pointer+deleter+allocator cases in + C++0x mode, combining both into _Sp_counted_deleter and using + <code class="classname">allocator</code> when the user doesn't specify + an allocator. If it was found to be beneficial an additional + class could easily be added. With the current implementation, + the _Sp_counted_deleter and __shared_count constructors taking a + custom deleter but no allocator are technically redundant and + could be removed, changing callers to always specify an + allocator. If a separate pointer+deleter class was added the + __shared_count constructor would be needed, so it has been kept + for now. + </p><p> + The hack used to get the address of the managed object from + <code class="function">_Sp_counted_ptr_inplace::_M_get_deleter()</code> + is accessible to users. This could be prevented if + <code class="function">get_deleter<_Sp_make_shared_tag>()</code> + always returned NULL, since the hack only needs to work at a + lower level, not in the public API. This wouldn't be difficult, + but hasn't been done since there is no danger of accidental + misuse: users already know they are relying on unsupported + features if they refer to implementation details such as + _Sp_make_shared_tag. + </p><p> + tr1::_Sp_deleter could be a private member of tr1::__shared_count but it + would alter the ABI. + </p></div></div><div class="section" title="Acknowledgments"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.ack"></a>Acknowledgments</h4></div></div></div><p> + The original authors of the Boost shared_ptr, which is really nice + code to work with, Peter Dimov in particular for his help and + invaluable advice on thread safety. Phillip Jordan and Paolo + Carlini for the lock policy implementation. + </p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h4 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h4></div></div></div><div class="biblioentry"><a id="id444231"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top"> + <em class="citetitle"> + Improving shared_ptr for C++0x, Revision 2 + </em> + </a> + . </span><span class="subtitle"> + N2351 + . </span></p></div><div class="biblioentry"><a id="id444254"></a><p><span class="biblioid"> + <a class="ulink" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" target="_top"> + <em class="citetitle"> + C++ Standard Library Active Issues List + </em> + </a> + . </span><span class="subtitle"> + N2456 + . </span></p></div><div class="biblioentry"><a id="id400755"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" target="_top"> + <em class="citetitle"> + Working Draft, Standard for Programming Language C++ + </em> + </a> + . </span><span class="subtitle"> + N2461 + . </span></p></div><div class="biblioentry"><a id="id424141"></a><p><span class="biblioid"> + <a class="ulink" href="http://boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">shared_ptr + <em class="citetitle"> + Boost C++ Libraries documentation, shared_ptr + </em> + </a> + . </span><span class="subtitle"> + N2461 + . </span></p></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pairs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Pairs </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Traits</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/messages.html b/libstdc++-v3/doc/html/manual/messages.html deleted file mode 100644 index bd663dbf742..00000000000 --- a/libstdc++-v3/doc/html/manual/messages.html +++ /dev/null @@ -1,284 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>messages</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , messages " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="facets.html" title="Chapter 15. Facets aka Categories" /><link rel="prev" href="codecvt.html" title="codecvt" /><link rel="next" href="containers.html" title="Part VII. Containers" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">messages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><th width="60%" align="center">Chapter 15. Facets aka Categories</th><td width="20%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="messages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.localization.facet.messages"></a>messages</h2></div></div></div><p> -The std::messages facet implements message retrieval functionality -equivalent to Java's java.text.MessageFormat .using either GNU gettext -or IEEE 1003.1-200 functions. -</p><div class="sect2" title="Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.req"></a>Requirements</h3></div></div></div><p> -The std::messages facet is probably the most vaguely defined facet in -the standard library. It's assumed that this facility was built into -the standard library in order to convert string literals from one -locale to the other. For instance, converting the "C" locale's -<code class="code">const char* c = "please"</code> to a German-localized <code class="code">"bitte"</code> -during program execution. -</p><div class="blockquote"><blockquote class="blockquote"><p> -22.2.7.1 - Template class messages [lib.locale.messages] -</p></blockquote></div><p> -This class has three public member functions, which directly -correspond to three protected virtual member functions. -</p><p> -The public member functions are: -</p><p> -<code class="code">catalog open(const string&, const locale&) const</code> -</p><p> -<code class="code">string_type get(catalog, int, int, const string_type&) const</code> -</p><p> -<code class="code">void close(catalog) const</code> -</p><p> -While the virtual functions are: -</p><p> -<code class="code">catalog do_open(const string&, const locale&) const</code> -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> --1- Returns: A value that may be passed to get() to retrieve a -message, from the message catalog identified by the string name -according to an implementation-defined mapping. The result can be used -until it is passed to close(). Returns a value less than 0 if no such -catalog can be opened. -</em></span> -</p></blockquote></div><p> -<code class="code">string_type do_get(catalog, int, int, const string_type&) const</code> -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> --3- Requires: A catalog cat obtained from open() and not yet closed. --4- Returns: A message identified by arguments set, msgid, and dfault, -according to an implementation-defined mapping. If no such message can -be found, returns dfault. -</em></span> -</p></blockquote></div><p> -<code class="code">void do_close(catalog) const</code> -</p><div class="blockquote"><blockquote class="blockquote"><p> -<span class="emphasis"><em> --5- Requires: A catalog cat obtained from open() and not yet closed. --6- Effects: Releases unspecified resources associated with cat. --7- Notes: The limit on such resources, if any, is implementation-defined. -</em></span> -</p></blockquote></div></div><div class="sect2" title="Design"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.design"></a>Design</h3></div></div></div><p> -A couple of notes on the standard. -</p><p> -First, why is <code class="code">messages_base::catalog</code> specified as a typedef -to int? This makes sense for implementations that use -<code class="code">catopen</code>, but not for others. Fortunately, it's not heavily -used and so only a minor irritant. -</p><p> -Second, by making the member functions <code class="code">const</code>, it is -impossible to save state in them. Thus, storing away information used -in the 'open' member function for use in 'get' is impossible. This is -unfortunate. -</p><p> -The 'open' member function in particular seems to be oddly -designed. The signature seems quite peculiar. Why specify a <code class="code">const -string& </code> argument, for instance, instead of just <code class="code">const -char*</code>? Or, why specify a <code class="code">const locale&</code> argument that is -to be used in the 'get' member function? How, exactly, is this locale -argument useful? What was the intent? It might make sense if a locale -argument was associated with a given default message string in the -'open' member function, for instance. Quite murky and unclear, on -reflection. -</p><p> -Lastly, it seems odd that messages, which explicitly require code -conversion, don't use the codecvt facet. Because the messages facet -has only one template parameter, it is assumed that ctype, and not -codecvt, is to be used to convert between character sets. -</p><p> -It is implicitly assumed that the locale for the default message -string in 'get' is in the "C" locale. Thus, all source code is assumed -to be written in English, so translations are always from "en_US" to -other, explicitly named locales. -</p></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.impl"></a>Implementation</h3></div></div></div><div class="sect3" title="Models"><div class="titlepage"><div><div><h4 class="title"><a id="messages.impl.models"></a>Models</h4></div></div></div><p> - This is a relatively simple class, on the face of it. The standard - specifies very little in concrete terms, so generic - implementations that are conforming yet do very little are the - norm. Adding functionality that would be useful to programmers and - comparable to Java's java.text.MessageFormat takes a bit of work, - and is highly dependent on the capabilities of the underlying - operating system. - </p><p> - Three different mechanisms have been provided, selectable via - configure flags: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - generic - </p><p> - This model does very little, and is what is used by default. - </p></li><li class="listitem"><p> - gnu - </p><p> - The gnu model is complete and fully tested. It's based on the - GNU gettext package, which is part of glibc. It uses the - functions <code class="code">textdomain, bindtextdomain, gettext</code> to - implement full functionality. Creating message catalogs is a - relatively straight-forward process and is lightly documented - below, and fully documented in gettext's distributed - documentation. - </p></li><li class="listitem"><p> - ieee_1003.1-200x - </p><p> - This is a complete, though untested, implementation based on - the IEEE standard. The functions <code class="code">catopen, catgets, - catclose</code> are used to retrieve locale-specific messages - given the appropriate message catalogs that have been - constructed for their use. Note, the script <code class="code"> - po2msg.sed</code> that is part of the gettext distribution can - convert gettext catalogs into catalogs that - <code class="code">catopen</code> can use. - </p></li></ul></div><p> -A new, standards-conformant non-virtual member function signature was -added for 'open' so that a directory could be specified with a given -message catalog. This simplifies calling conventions for the gnu -model. -</p></div><div class="sect3" title="The GNU Model"><div class="titlepage"><div><div><h4 class="title"><a id="messages.impl.gnu"></a>The GNU Model</h4></div></div></div><p> - The messages facet, because it is retrieving and converting - between characters sets, depends on the ctype and perhaps the - codecvt facet in a given locale. In addition, underlying "C" - library locale support is necessary for more than just the - <code class="code">LC_MESSAGES</code> mask: <code class="code">LC_CTYPE</code> is also - necessary. To avoid any unpleasantness, all bits of the "C" mask - (i.e. <code class="code">LC_ALL</code>) are set before retrieving messages. - </p><p> - Making the message catalogs can be initially tricky, but become - quite simple with practice. For complete info, see the gettext - documentation. Here's an idea of what is required: - </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - Make a source file with the required string literals that need - to be translated. See <code class="code">intl/string_literals.cc</code> for - an example. - </p></li><li class="listitem"><p> - Make initial catalog (see "4 Making the PO Template File" from - the gettext docs).</p><p> - <code class="code"> xgettext --c++ --debug string_literals.cc -o libstdc++.pot </code> - </p></li><li class="listitem"><p>Make language and country-specific locale catalogs.</p><p> - <code class="code">cp libstdc++.pot fr_FR.po</code> - </p><p> - <code class="code">cp libstdc++.pot de_DE.po</code> - </p></li><li class="listitem"><p> - Edit localized catalogs in emacs so that strings are - translated. - </p><p> - <code class="code">emacs fr_FR.po</code> - </p></li><li class="listitem"><p>Make the binary mo files.</p><p> - <code class="code">msgfmt fr_FR.po -o fr_FR.mo</code> - </p><p> - <code class="code">msgfmt de_DE.po -o de_DE.mo</code> - </p></li><li class="listitem"><p>Copy the binary files into the correct directory structure.</p><p> - <code class="code">cp fr_FR.mo (dir)/fr_FR/LC_MESSAGES/libstdc++.mo</code> - </p><p> - <code class="code">cp de_DE.mo (dir)/de_DE/LC_MESSAGES/libstdc++.mo</code> - </p></li><li class="listitem"><p>Use the new message catalogs.</p><p> - <code class="code">locale loc_de("de_DE");</code> - </p><p> - <code class="code"> - use_facet<messages<char> >(loc_de).open("libstdc++", locale(), dir); - </code> - </p></li></ul></div></div></div><div class="sect2" title="Use"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.use"></a>Use</h3></div></div></div><p> - A simple example using the GNU model of message conversion. - </p><pre class="programlisting"> -#include <iostream> -#include <locale> -using namespace std; - -void test01() -{ - typedef messages<char>::catalog catalog; - const char* dir = - "/mnt/egcs/build/i686-pc-linux-gnu/libstdc++/po/share/locale"; - const locale loc_de("de_DE"); - const messages<char>& mssg_de = use_facet<messages<char> >(loc_de); - - catalog cat_de = mssg_de.open("libstdc++", loc_de, dir); - string s01 = mssg_de.get(cat_de, 0, 0, "please"); - string s02 = mssg_de.get(cat_de, 0, 0, "thank you"); - cout << "please in german:" << s01 << '\n'; - cout << "thank you in german:" << s02 << '\n'; - mssg_de.close(cat_de); -} -</pre></div><div class="sect2" title="Future"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.future"></a>Future</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - Things that are sketchy, or remain unimplemented: - </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> - _M_convert_from_char, _M_convert_to_char are in flux, - depending on how the library ends up doing character set - conversions. It might not be possible to do a real character - set based conversion, due to the fact that the template - parameter for messages is not enough to instantiate the - codecvt facet (1 supplied, need at least 2 but would prefer - 3). - </p></li><li class="listitem"><p> - There are issues with gettext needing the global locale set - to extract a message. This dependence on the global locale - makes the current "gnu" model non MT-safe. Future versions - of glibc, i.e. glibc 2.3.x will fix this, and the C++ library - bits are already in place. - </p></li></ul></div></li><li class="listitem"><p> - Development versions of the GNU "C" library, glibc 2.3 will allow - a more efficient, MT implementation of std::messages, and will - allow the removal of the _M_name_messages data member. If this is - done, it will change the library ABI. The C++ parts to support - glibc 2.3 have already been coded, but are not in use: once this - version of the "C" library is released, the marked parts of the - messages implementation can be switched over to the new "C" - library functionality. - </p></li><li class="listitem"><p> - At some point in the near future, std::numpunct will probably use - std::messages facilities to implement truename/falsename - correctly. This is currently not done, but entries in - libstdc++.pot have already been made for "true" and "false" string - literals, so all that remains is the std::numpunct coding and the - configure/make hassles to make the installed library search its - own catalog. Currently the libstdc++.mo catalog is only searched - for the testsuite cases involving messages members. - </p></li><li class="listitem"><p> The following member functions:</p><p> - <code class="code"> - catalog - open(const basic_string<char>& __s, const locale& __loc) const - </code> - </p><p> - <code class="code"> - catalog - open(const basic_string<char>&, const locale&, const char*) const; - </code> - </p><p> - Don't actually return a "value less than 0 if no such catalog - can be opened" as required by the standard in the "gnu" - model. As of this writing, it is unknown how to query to see - if a specified message catalog exists using the gettext - package. - </p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="facet.messages.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="The GNU C Library"><a id="id612063"></a><p><span class="title"><i> - The GNU C Library - </i>. </span><span class="author"><span class="firstname">Roland</span> <span class="surname">McGrath</span>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2007 FSF. </span><span class="pagenums">Chapters 6 Character Set Handling, and 7 Locales and Internationalization - . </span></p></div><div class="biblioentry" title="Correspondence"><a id="id633252"></a><p><span class="title"><i> - Correspondence - </i>. </span><span class="author"><span class="firstname">Ulrich</span> <span class="surname">Drepper</span>. </span><span class="copyright">Copyright © 2002 . </span></p></div><div class="biblioentry" title="ISO/IEC 14882:1998 Programming languages - C++"><a id="id720940"></a><p><span class="title"><i> - ISO/IEC 14882:1998 Programming languages - C++ - </i>. </span><span class="copyright">Copyright © 1998 ISO. </span></p></div><div class="biblioentry" title="ISO/IEC 9899:1999 Programming languages - C"><a id="id720958"></a><p><span class="title"><i> - ISO/IEC 9899:1999 Programming languages - C - </i>. </span><span class="copyright">Copyright © 1999 ISO. </span></p></div><div class="biblioentry" title="System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x)"><a id="id626200"></a><p><span class="title"><i> - System Interface Definitions, Issue 6 (IEEE Std. 1003.1-200x) - </i>. </span><span class="copyright">Copyright © 1999 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid"> - <a class="ulink" href="http://www.opengroup.org/austin/" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="The C++ Programming Language, Special Edition"><a id="id626228"></a><p><span class="title"><i> - The C++ Programming Language, Special Edition - </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley, Inc.. </span><span class="pagenums">Appendix D. </span><span class="publisher"><span class="publishername"> - Addison Wesley - . </span></span></p></div><div class="biblioentry" title="Standard C++ IOStreams and Locales"><a id="id706351"></a><p><span class="title"><i> - Standard C++ IOStreams and Locales - </i>. </span><span class="subtitle"> - Advanced Programmer's Guide and Reference - . </span><span class="author"><span class="firstname">Angelika</span> <span class="surname">Langer</span>. </span><span class="author"><span class="firstname">Klaus</span> <span class="surname">Kreft</span>. </span><span class="copyright">Copyright © 2000 Addison Wesley Longman, Inc.. </span><span class="publisher"><span class="publishername"> - Addison Wesley Longman - . </span></span></p></div><div class="biblioentry" title="Java 2 Platform, Standard Edition, v 1.3.1 API Specification"><a id="id655088"></a><p><span class="title"><i> - Java 2 Platform, Standard Edition, v 1.3.1 API Specification - </i>. </span><span class="pagenums">java.util.Properties, java.text.MessageFormat, -java.util.Locale, java.util.ResourceBundle. </span><span class="biblioid"> - <a class="ulink" href="http://java.sun.com/reference/api/index.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="GNU gettext tools, version 0.10.38, Native Language Support Library and Tools."><a id="id680363"></a><p><span class="title"><i> - GNU gettext tools, version 0.10.38, Native Language Support -Library and Tools. - </i>. </span><span class="biblioid"> - <a class="ulink" href="http://www.gnu.org/software/gettext/" target="_top"> - </a> - . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="codecvt.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="facets.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="containers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">codecvt </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part VII. - Containers - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/numerics.html b/libstdc++-v3/doc/html/manual/numerics.html index 57089cf47e8..faeaf995ab0 100644 --- a/libstdc++-v3/doc/html/manual/numerics.html +++ b/libstdc++-v3/doc/html/manual/numerics.html @@ -1,9 +1,30 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part X. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt09ch20.html" title="Chapter 20. Mutating" /><link rel="next" href="complex.html" title="Chapter 21. Complex" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part X. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Numerics</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="algorithms.html" title="Chapter 11. Algorithms" /><link rel="next" href="generalized_numeric_operations.html" title="Generalized Operations" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Numerics -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="complex.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part X. Numerics"><div class="titlepage"><div><div><h1 class="title"><a id="manual.numerics"></a>Part X. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 12. Numerics"><div class="titlepage"><div><div><h2 class="title"><a id="std.numerics"></a>Chapter 12. Numerics - <a id="id622280" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt09ch20.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="complex.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 20. Mutating </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 21. Complex</td></tr></table></div></body></html> + <a id="id415325" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="sect2"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="sect1"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="sect1"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect2"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></div><div class="sect1" title="Complex"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.complex"></a>Complex</h2></div></div></div><p> + </p><div class="sect2" title="complex Processing"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.complex.processing"></a>complex Processing</h3></div></div></div><p> + </p><p>Using <code class="code">complex<></code> becomes even more comple- er, sorry, + <span class="emphasis"><em>complicated</em></span>, with the not-quite-gratuitously-incompatible + addition of complex types to the C language. David Tribble has + compiled a list of C++98 and C99 conflict points; his description of + C's new type versus those of C++ and how to get them playing together + nicely is +<a class="ulink" href="http://david.tribble.com/text/cdiffs.htm#C99-complex" target="_top">here</a>. + </p><p><code class="code">complex<></code> is intended to be instantiated with a + floating-point type. As long as you meet that and some other basic + requirements, then the resulting instantiation has all of the usual + math operators defined, as well as definitions of <code class="code">op<<</code> + and <code class="code">op>></code> that work with iostreams: <code class="code">op<<</code> + prints <code class="code">(u,v)</code> and <code class="code">op>></code> can read <code class="code">u</code>, + <code class="code">(u)</code>, and <code class="code">(u,v)</code>. + </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="algorithms.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="generalized_numeric_operations.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 11. + Algorithms + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Generalized Operations</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/numerics_and_c.html b/libstdc++-v3/doc/html/manual/numerics_and_c.html index 0bd1b809371..5102af670f3 100644 --- a/libstdc++-v3/doc/html/manual/numerics_and_c.html +++ b/libstdc++-v3/doc/html/manual/numerics_and_c.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 23. Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Part X. Numerics" /><link rel="prev" href="generalized_numeric_operations.html" title="Chapter 22. Generalized Operations" /><link rel="next" href="bk01pt10ch23s02.html" title="C99" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 23. Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Part X. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Interacting with C</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="numerics.html" title="Chapter 12. Numerics" /><link rel="prev" href="generalized_numeric_operations.html" title="Generalized Operations" /><link rel="next" href="io.html" title="Chapter 13. Input and Output" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Interacting with C</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><th width="60%" align="center">Chapter 12. Numerics -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 23. Interacting with C"><div class="titlepage"><div><div><h2 class="title"><a id="manual.numerics.c"></a>Chapter 23. Interacting with C</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></div><div class="sect1" title="Numerics vs. Arrays"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="numerics.c.array"></a>Numerics vs. Arrays</h2></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well +</th><td width="20%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Interacting with C"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.numerics.c"></a>Interacting with C</h2></div></div></div><div class="sect2" title="Numerics vs. Arrays"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.c.array"></a>Numerics vs. Arrays</h3></div></div></div><p>One of the major reasons why FORTRAN can chew through numbers so well is that it is defined to be free of pointer aliasing, an assumption that C89 is not allowed to make, and neither is C++98. C99 adds a new keyword, <code class="code">restrict</code>, to apply to individual pointers. The @@ -18,4 +18,20 @@ speaking this is only one of the five template classes, and they are designed to be familiar to people who have worked with the BLAS libraries before. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt10ch23s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 22. Generalized Operations </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> C99</td></tr></table></div></body></html> + </p></div><div class="sect2" title="C99"><div class="titlepage"><div><div><h3 class="title"><a id="numerics.c.c99"></a>C99</h3></div></div></div><p>In addition to the other topics on this page, we'll note here some + of the C99 features that appear in libstdc++. + </p><p>The C99 features depend on the <code class="code">--enable-c99</code> configure flag. + This flag is already on by default, but it can be disabled by the + user. Also, the configuration machinery will disable it if the + necessary support for C99 (e.g., header files) cannot be found. + </p><p>As of GCC 3.0, C99 support includes classification functions + such as <code class="code">isnormal</code>, <code class="code">isgreater</code>, + <code class="code">isnan</code>, etc. + The functions used for 'long long' support such as <code class="code">strtoll</code> + are supported, as is the <code class="code">lldiv_t</code> typedef. Also supported + are the wide character functions using 'long long', like + <code class="code">wcstoll</code>. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="generalized_numeric_operations.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="numerics.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="io.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Generalized Operations </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 13. + Input and Output + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/pairs.html b/libstdc++-v3/doc/html/manual/pairs.html index 3b4981bbaa8..719c987df20 100644 --- a/libstdc++-v3/doc/html/manual/pairs.html +++ b/libstdc++-v3/doc/html/manual/pairs.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 10. Pairs</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="functors.html" title="Chapter 9. Functors" /><link rel="next" href="memory.html" title="Chapter 11. Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="functors.html">Prev</a> </td><th width="60%" align="center">Part IV. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Pairs</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="utilities.html" title="Chapter 6. Utilities" /><link rel="next" href="memory.html" title="Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Pairs</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Utilities -</th><td width="20%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 10. Pairs"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.pairs"></a>Chapter 10. Pairs</h2></div></div></div><p>The <code class="code">pair<T1,T2></code> is a simple and handy way to +</th><td width="20%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr></table><hr /></div><div class="section" title="Pairs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.pairs"></a>Pairs</h2></div></div></div><p>The <code class="code">pair<T1,T2></code> is a simple and handy way to carry around a pair of objects. One is of type T1, and another of type T2; they may be the same type, but you don't get anything extra if they are. The two members can be accessed directly, as @@ -31,7 +31,7 @@ is defined as evaluating to: </p><pre class="programlisting"> x.first < y.first || - ( !(y.first < x.first) && x.second < y.second ) + ( !(y.first < x.first) && x.second < y.second ) </pre><p>The other operators are not defined using the <code class="code">rel_ops</code> functions above, but their semantics are the same. </p><p>Finally, there is a template function called <code class="function">make_pair</code> @@ -39,4 +39,7 @@ instance of a pair instantiated on their respective types: </p><pre class="programlisting"> pair<int,MyClass> p = make_pair(4,myobject); - </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="functors.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 9. Functors </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 11. Memory</td></tr></table></div></body></html> + </pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="utilities.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. + Utilities + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Memory</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index a21c3a65b2d..bcfd91c19a2 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 31. Parallel Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch30s04.html" title="Design" /><link rel="next" href="bk01pt12ch31s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 31. Parallel Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch30s04.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 18. Parallel Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , parallel " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bk01pt03ch17s04.html" title="Design" /><link rel="next" href="bk01pt03ch18s02.html" title="Semantics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 18. Parallel Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch17s04.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch31s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 31. Parallel Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"></a>Chapter 31. Parallel Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></div><p> The libstdc++ parallel mode is an experimental parallel +</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch18s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 18. Parallel Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.parallel_mode"></a>Chapter 18. Parallel Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></div><p> The libstdc++ parallel mode is an experimental parallel implementation of many algorithms the C++ Standard Library. </p><p> Several of the standard algorithms, for instance @@ -13,12 +13,12 @@ explicit source declaration or by compiling existing sources with a specific compiler flag. </p><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.parallel_mode.intro"></a>Intro</h2></div></div></div><p>The following library components in the include <code class="filename">numeric</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="function">std::accumulate</code></p></li><li class="listitem"><p><code class="function">std::adjacent_difference</code></p></li><li class="listitem"><p><code class="function">std::inner_product</code></p></li><li class="listitem"><p><code class="function">std::partial_sum</code></p></li></ul></div><p>The following library components in the include -<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="Parallelization of Bulk Operations for STL Dictionaries"><a id="id654235"></a><p><span class="title"><i> +<code class="filename">algorithm</code> are included in the parallel mode:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p><code class="function">std::adjacent_find</code></p></li><li class="listitem"><p><code class="function">std::count</code></p></li><li class="listitem"><p><code class="function">std::count_if</code></p></li><li class="listitem"><p><code class="function">std::equal</code></p></li><li class="listitem"><p><code class="function">std::find</code></p></li><li class="listitem"><p><code class="function">std::find_if</code></p></li><li class="listitem"><p><code class="function">std::find_first_of</code></p></li><li class="listitem"><p><code class="function">std::for_each</code></p></li><li class="listitem"><p><code class="function">std::generate</code></p></li><li class="listitem"><p><code class="function">std::generate_n</code></p></li><li class="listitem"><p><code class="function">std::lexicographical_compare</code></p></li><li class="listitem"><p><code class="function">std::mismatch</code></p></li><li class="listitem"><p><code class="function">std::search</code></p></li><li class="listitem"><p><code class="function">std::search_n</code></p></li><li class="listitem"><p><code class="function">std::transform</code></p></li><li class="listitem"><p><code class="function">std::replace</code></p></li><li class="listitem"><p><code class="function">std::replace_if</code></p></li><li class="listitem"><p><code class="function">std::max_element</code></p></li><li class="listitem"><p><code class="function">std::merge</code></p></li><li class="listitem"><p><code class="function">std::min_element</code></p></li><li class="listitem"><p><code class="function">std::nth_element</code></p></li><li class="listitem"><p><code class="function">std::partial_sort</code></p></li><li class="listitem"><p><code class="function">std::partition</code></p></li><li class="listitem"><p><code class="function">std::random_shuffle</code></p></li><li class="listitem"><p><code class="function">std::set_union</code></p></li><li class="listitem"><p><code class="function">std::set_intersection</code></p></li><li class="listitem"><p><code class="function">std::set_symmetric_difference</code></p></li><li class="listitem"><p><code class="function">std::set_difference</code></p></li><li class="listitem"><p><code class="function">std::sort</code></p></li><li class="listitem"><p><code class="function">std::stable_sort</code></p></li><li class="listitem"><p><code class="function">std::unique_copy</code></p></li></ul></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="parallel_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="Parallelization of Bulk Operations for STL Dictionaries"><a id="id503217"></a><p><span class="title"><i> Parallelization of Bulk Operations for STL Dictionaries </i>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Leonor</span> <span class="surname">Frias</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername"> Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) - . </span></span></p></div><div class="biblioentry" title="The Multi-Core Standard Template Library"><a id="id673060"></a><p><span class="title"><i> + . </span></span></p></div><div class="biblioentry" title="The Multi-Core Standard Template Library"><a id="id503264"></a><p><span class="title"><i> The Multi-Core Standard Template Library </i>. </span><span class="author"><span class="firstname">Johannes</span> <span class="surname">Singler</span>. </span><span class="author"><span class="firstname">Peter</span> <span class="surname">Sanders</span>. </span><span class="author"><span class="firstname">Felix</span> <span class="surname">Putze</span>. </span><span class="copyright">Copyright © 2007 . </span><span class="publisher"><span class="publishername"> Euro-Par 2007: Parallel Processing. (LNCS 4641) - . </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch30s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch31s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Semantics</td></tr></table></div></body></html> + . </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch17s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch18s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Design </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Semantics</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/profile_mode.html b/libstdc++-v3/doc/html/manual/profile_mode.html index 408dba26f79..6c6bea00103 100644 --- a/libstdc++-v3/doc/html/manual/profile_mode.html +++ b/libstdc++-v3/doc/html/manual/profile_mode.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 32. Profile Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part XII. Extensions" /><link rel="prev" href="bk01pt12ch31s05.html" title="Testing" /><link rel="next" href="bk01pt12ch32s02.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 32. Profile Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><th width="60%" align="center">Part XII. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 19. Profile Mode</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" C++ , library , profile " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="extensions.html" title="Part III. Extensions" /><link rel="prev" href="bk01pt03ch18s05.html" title="Testing" /><link rel="next" href="bk01pt03ch19s02.html" title="Design" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 19. Profile Mode</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch18s05.html">Prev</a> </td><th width="60%" align="center">Part III. Extensions -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt12ch32s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 32. Profile Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"></a>Chapter 32. Profile Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt03ch19s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 19. Profile Mode"><div class="titlepage"><div><div><h2 class="title"><a id="manual.ext.profile_mode"></a>Chapter 19. Profile Mode</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></div><div class="sect1" title="Intro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.ext.profile_mode.intro"></a>Intro</h2></div></div></div><p> <span class="emphasis"><em>Goal: </em></span>Give performance improvement advice based on recognition of suboptimal usage patterns of the standard library. </p><p> @@ -11,13 +11,13 @@ calls to an instrumentation library to record the internal state of various components at interesting entry/exit points to/from the standard library. Process trace, recognize suboptimal patterns, give advice. - For details, see + For details, see <a class="ulink" href="http://dx.doi.org/10.1109/CGO.2009.36" target="_top">paper presented at CGO 2009</a>. </p><p> <span class="emphasis"><em>Strengths: </em></span> </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> - Unintrusive solution. The application code does not require any + Unintrusive solution. The application code does not require any modification. </p></li><li class="listitem"><p> The advice is call context sensitive, thus capable of identifying precisely interesting dynamic performance behavior. @@ -75,7 +75,7 @@ vector-size: improvement = 3: call stack = 0x804842c ... The warning message. For some warnings, this is static text, e.g., "change vector to list". For other warnings, such as the one above, the message contains numeric advice, e.g., the suggested initial size - of the hashtable. + of the vector. </p></li></ul></div><p> </p><p>Three files are generated. <code class="code">libstdcxx-profile.txt</code> contains human readable advice. <code class="code">libstdcxx-profile.raw</code> @@ -108,7 +108,7 @@ vector-size: improvement = 3: call stack = 0x804842c ... path for the output files. </p></li><li class="listitem"><p>_GLIBCXX_PROFILE_MAX_WARN_COUNT: set it to the maximum number of warnings desired. The default value is 10.</p></li><li class="listitem"><p> - <code class="code">_GLIBCXX_PROFILE_MAX_STACK_DEPTH</code>: if set to 0, + <code class="code">_GLIBCXX_PROFILE_MAX_STACK_DEPTH</code>: if set to 0, the advice will be collected and reported for the program as a whole, and not for each call context. @@ -124,10 +124,10 @@ vector-size: improvement = 3: call stack = 0x804842c ... live containers are deleted. The default is 128 MB. </p></li><li class="listitem"><p> <code class="code">_GLIBCXX_PROFILE_NO_THREADS</code>: - Make the library not use threads. If thread local storage (TLS) is not + Make the library not use threads. If thread local storage (TLS) is not available, you will get a preprocessor error asking you to set -D_GLIBCXX_PROFILE_NO_THREADS if your program is single-threaded. - Multithreded execution without TLS is not supported. + Multithreaded execution without TLS is not supported. (Environment variable not supported.) </p></li><li class="listitem"><p> <code class="code">_GLIBCXX_HAVE_EXECINFO_H</code>: @@ -138,9 +138,9 @@ vector-size: improvement = 3: call stack = 0x804842c ... call context. (Environment variable not supported.) </p></li></ul></div><p> - </p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="Perflint: A Context Sensitive Performance Advisor for C++ Programs"><a id="id631630"></a><p><span class="title"><i> + </p></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h2 class="title"><a id="profile_mode.biblio"></a>Bibliography</h2></div></div></div><div class="biblioentry" title="Perflint: A Context Sensitive Performance Advisor for C++ Programs"><a id="id486510"></a><p><span class="title"><i> Perflint: A Context Sensitive Performance Advisor for C++ Programs </i>. </span><span class="author"><span class="firstname">Lixia</span> <span class="surname">Liu</span>. </span><span class="author"><span class="firstname">Silvius</span> <span class="surname">Rus</span>. </span><span class="copyright">Copyright © 2009 . </span><span class="publisher"><span class="publishername"> Proceedings of the 2009 International Symposium on Code Generation - and Optimization - . </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt12ch31s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt12ch32s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Testing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html> + and Optimization + . </span></span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch18s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="extensions.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt03ch19s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Testing </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Design</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/sequences.html b/libstdc++-v3/doc/html/manual/sequences.html deleted file mode 100644 index fd3ff148e54..00000000000 --- a/libstdc++-v3/doc/html/manual/sequences.html +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 16. Sequences</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="containers.html" title="Part VII. Containers" /><link rel="prev" href="containers.html" title="Part VII. Containers" /><link rel="next" href="vector.html" title="vector" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Sequences</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><th width="60%" align="center">Part VII. - Containers - -</th><td width="20%" align="right"> <a accesskey="n" href="vector.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 16. Sequences"><div class="titlepage"><div><div><h2 class="title"><a id="manual.containers.sequences"></a>Chapter 16. Sequences</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></div><div class="sect1" title="list"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.list"></a>list</h2></div></div></div><div class="sect2" title="list::size() is O(n)"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.list.size"></a>list::size() is O(n)</h3></div></div></div><p> - Yes it is, and that's okay. This is a decision that we preserved - when we imported SGI's STL implementation. The following is - quoted from <a class="ulink" href="http://www.sgi.com/tech/stl/FAQ.html" target="_top">their FAQ</a>: - </p><div class="blockquote"><blockquote class="blockquote"><p> - The size() member function, for list and slist, takes time - proportional to the number of elements in the list. This was a - deliberate tradeoff. The only way to get a constant-time - size() for linked lists would be to maintain an extra member - variable containing the list's size. This would require taking - extra time to update that variable (it would make splice() a - linear time operation, for example), and it would also make the - list larger. Many list algorithms don't require that extra - word (algorithms that do require it might do better with - vectors than with lists), and, when it is necessary to maintain - an explicit size count, it's something that users can do - themselves. - </p><p> - This choice is permitted by the C++ standard. The standard says - that size() <span class="quote">“<span class="quote">should</span>”</span> be constant time, and - <span class="quote">“<span class="quote">should</span>”</span> does not mean the same thing as - <span class="quote">“<span class="quote">shall</span>”</span>. This is the officially recommended ISO - wording for saying that an implementation is supposed to do - something unless there is a good reason not to. - </p><p> - One implication of linear time size(): you should never write - </p><pre class="programlisting"> - if (L.size() == 0) - ... - </pre><p> - Instead, you should write - </p><pre class="programlisting"> - if (L.empty()) - ... - </pre></blockquote></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="containers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="containers.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="vector.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part VII. - Containers - - </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> vector</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/setup.html b/libstdc++-v3/doc/html/manual/setup.html index b0c491e544a..749662d555b 100644 --- a/libstdc++-v3/doc/html/manual/setup.html +++ b/libstdc++-v3/doc/html/manual/setup.html @@ -23,7 +23,7 @@ Because libstdc++ is part of GCC, the primary source for installation instructions is <a class="ulink" href="http://gcc.gnu.org/install/" target="_top">the GCC install page</a>. - In particular, list of prerequisite software needed to build the library + In particular, list of prerequisite software needed to build the library <a class="ulink" href="http://gcc.gnu.org/install/prerequisites.html" target="_top"> starts with those requirements.</a> The same pages also list the tools you will need if you wish to modify the source. @@ -40,18 +40,16 @@ The configure process will automatically detect and use these features if the underlying support is present. </p><p> - Finally, a few system-specific requirements: + To generate the API documentation from the sources you will need + Doxygen, see <a class="link" href="documentation_style.html" title="Documentation Style">Documentation + Style</a> in the appendix for full details. + </p><p> + Finally, a few system-specific requirements: </p><div class="variablelist"><dl><dt><span class="term">linux</span></dt><dd><p> If gcc 3.1.0 or later on is being used on linux, an attempt will be made to use "C" library functionality necessary for - C++ named locale support. For gcc 3.2.1 and later, this - means that glibc 2.2.5 or later is required and the "C" - library de_DE locale information must be installed. - </p><p> - Note however that the sanity checks involving the de_DE - locale are skipped when an explicit --enable-clocale=gnu - configure option is used: only the basic checks are carried - out, defending against misconfigurations. + C++ named locale support. For gcc 4.6.0 and later, this + means that glibc 2.3 or later is required. </p><p> If the 'gnu' locale model is being used, the following locales are used and tested in the libstdc++ testsuites. @@ -90,12 +88,12 @@ zh_TW BIG5 </p><p> To install support for locales, do only one of the following: </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>install all locales</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>with RedHat Linux: - </p><p> <code class="code"> export LC_ALL=C </code> - </p><p> <code class="code"> rpm -e glibc-common --nodeps </code> - </p><p> + </p><p> <code class="code"> export LC_ALL=C </code> + </p><p> <code class="code"> rpm -e glibc-common --nodeps </code> + </p><p> <code class="code"> rpm -i --define "_install_langs all" - glibc-common-2.2.5-34.i386.rpm - </code> + glibc-common-2.2.5-34.i386.rpm + </code> </p></li><li class="listitem"><p> Instructions for other operating systems solicited. </p></li></ul></div></li><li class="listitem"><p>install just the necessary locales</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>with Debian Linux:</p><p> Add the above list, as shown, to the file diff --git a/libstdc++-v3/doc/html/manual/shared_ptr.html b/libstdc++-v3/doc/html/manual/shared_ptr.html deleted file mode 100644 index 59666b93b16..00000000000 --- a/libstdc++-v3/doc/html/manual/shared_ptr.html +++ /dev/null @@ -1,304 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>shared_ptr</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , shared_ptr " /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="memory.html" title="Chapter 11. Memory" /><link rel="prev" href="auto_ptr.html" title="auto_ptr" /><link rel="next" href="traits.html" title="Chapter 12. Traits" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">shared_ptr</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="auto_ptr.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Memory</th><td width="20%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="shared_ptr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.util.memory.shared_ptr"></a>shared_ptr</h2></div></div></div><p> -The shared_ptr class template stores a pointer, usually obtained via new, -and implements shared ownership semantics. -</p><div class="sect2" title="Requirements"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.req"></a>Requirements</h3></div></div></div><p> - </p><p> - The standard deliberately doesn't require a reference-counted - implementation, allowing other techniques such as a - circular-linked-list. - </p><p> - At the time of writing the C++0x working paper doesn't mention how - threads affect shared_ptr, but it is likely to follow the existing - practice set by <code class="classname">boost::shared_ptr</code>. The - shared_ptr in libstdc++ is derived from Boost's, so the same rules - apply. - </p><p> - </p></div><div class="sect2" title="Design Issues"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.design_issues"></a>Design Issues</h3></div></div></div><p> -The <code class="classname">shared_ptr</code> code is kindly donated to GCC by the Boost -project and the original authors of the code. The basic design and -algorithms are from Boost, the notes below describe details specific to -the GCC implementation. Names have been uglified in this implementation, -but the design should be recognisable to anyone familiar with the Boost -1.32 shared_ptr. - </p><p> -The basic design is an abstract base class, <code class="code">_Sp_counted_base</code> that -does the reference-counting and calls virtual functions when the count -drops to zero. -Derived classes override those functions to destroy resources in a context -where the correct dynamic type is known. This is an application of the -technique known as type erasure. - </p></div><div class="sect2" title="Implementation"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.impl"></a>Implementation</h3></div></div></div><div class="sect3" title="Class Hierarchy"><div class="titlepage"><div><div><h4 class="title"><a id="id628890"></a>Class Hierarchy</h4></div></div></div><p> -A <code class="classname">shared_ptr<T></code> contains a pointer of -type <span class="type">T*</span> and an object of type -<code class="classname">__shared_count</code>. The shared_count contains a -pointer of type <span class="type">_Sp_counted_base*</span> which points to the -object that maintains the reference-counts and destroys the managed -resource. - </p><div class="variablelist"><dl><dt><span class="term"><code class="classname">_Sp_counted_base<Lp></code></span></dt><dd><p> -The base of the hierarchy is parameterized on the lock policy alone. -_Sp_counted_base doesn't depend on the type of pointer being managed, -it only maintains the reference counts and calls virtual functions when -the counts drop to zero. The managed object is destroyed when the last -strong reference is dropped, but the _Sp_counted_base itself must exist -until the last weak reference is dropped. - </p></dd><dt><span class="term"><code class="classname">_Sp_counted_base_impl<Ptr, Deleter, Lp></code></span></dt><dd><p> -Inherits from _Sp_counted_base and stores a pointer of type <span class="type">Ptr</span> -and a deleter of type <code class="code">Deleter</code>. <code class="code">_Sp_deleter</code> is -used when the user doesn't supply a custom deleter. Unlike Boost's, this -default deleter is not "checked" because GCC already issues a warning if -<code class="function">delete</code> is used with an incomplete type. -This is the only derived type used by <code class="classname">shared_ptr<Ptr></code> -and it is never used by <code class="classname">shared_ptr</code>, which uses one of -the following types, depending on how the shared_ptr is constructed. - </p></dd><dt><span class="term"><code class="classname">_Sp_counted_ptr<Ptr, Lp></code></span></dt><dd><p> -Inherits from _Sp_counted_base and stores a pointer of type <span class="type">Ptr</span>, -which is passed to <code class="function">delete</code> when the last reference is dropped. -This is the simplest form and is used when there is no custom deleter or -allocator. - </p></dd><dt><span class="term"><code class="classname">_Sp_counted_deleter<Ptr, Deleter, Alloc></code></span></dt><dd><p> -Inherits from _Sp_counted_ptr and adds support for custom deleter and -allocator. Empty Base Optimization is used for the allocator. This class -is used even when the user only provides a custom deleter, in which case -<code class="classname">allocator</code> is used as the allocator. - </p></dd><dt><span class="term"><code class="classname">_Sp_counted_ptr_inplace<Tp, Alloc, Lp></code></span></dt><dd><p> -Used by <code class="code">allocate_shared</code> and <code class="code">make_shared</code>. -Contains aligned storage to hold an object of type <span class="type">Tp</span>, -which is constructed in-place with placement <code class="function">new</code>. -Has a variadic template constructor allowing any number of arguments to -be forwarded to <span class="type">Tp</span>'s constructor. -Unlike the other <code class="classname">_Sp_counted_*</code> classes, this one is parameterized on the -type of object, not the type of pointer; this is purely a convenience -that simplifies the implementation slightly. - </p></dd></dl></div></div><div class="sect3" title="Thread Safety"><div class="titlepage"><div><div><h4 class="title"><a id="id612958"></a>Thread Safety</h4></div></div></div><p> -The interface of <code class="classname">tr1::shared_ptr</code> was extended for C++0x -with support for rvalue-references and the other features from -N2351. As with other libstdc++ headers shared by TR1 and C++0x, -boost_shared_ptr.h uses conditional compilation, based on the macros -<code class="constant">_GLIBCXX_INCLUDE_AS_CXX0X</code> and -<code class="constant">_GLIBCXX_INCLUDE_AS_TR1</code>, to enable and disable -features. - </p><p> -C++0x-only features are: rvalue-ref/move support, allocator support, -aliasing constructor, make_shared & allocate_shared. Additionally, -the constructors taking <code class="classname">auto_ptr</code> parameters are -deprecated in C++0x mode. - </p><p> -The -<a class="ulink" href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety" target="_top">Thread -Safety</a> section of the Boost shared_ptr documentation says "shared_ptr -objects offer the same level of thread safety as built-in types." -The implementation must ensure that concurrent updates to separate shared_ptr -instances are correct even when those instances share a reference count e.g. -</p><pre class="programlisting"> -shared_ptr<A> a(new A); -shared_ptr<A> b(a); - -// Thread 1 // Thread 2 - a.reset(); b.reset(); -</pre><p> -The dynamically-allocated object must be destroyed by exactly one of the -threads. Weak references make things even more interesting. -The shared state used to implement shared_ptr must be transparent to the -user and invariants must be preserved at all times. -The key pieces of shared state are the strong and weak reference counts. -Updates to these need to be atomic and visible to all threads to ensure -correct cleanup of the managed resource (which is, after all, shared_ptr's -job!) -On multi-processor systems memory synchronisation may be needed so that -reference-count updates and the destruction of the managed resource are -race-free. -</p><p> -The function <code class="function">_Sp_counted_base::_M_add_ref_lock()</code>, called when -obtaining a shared_ptr from a weak_ptr, has to test if the managed -resource still exists and either increment the reference count or throw -<code class="classname">bad_weak_ptr</code>. -In a multi-threaded program there is a potential race condition if the last -reference is dropped (and the managed resource destroyed) between testing -the reference count and incrementing it, which could result in a shared_ptr -pointing to invalid memory. -</p><p> -The Boost shared_ptr (as used in GCC) features a clever lock-free -algorithm to avoid the race condition, but this relies on the -processor supporting an atomic <span class="emphasis"><em>Compare-And-Swap</em></span> -instruction. For other platforms there are fall-backs using mutex -locks. Boost (as of version 1.35) includes several different -implementations and the preprocessor selects one based on the -compiler, standard library, platform etc. For the version of -shared_ptr in libstdc++ the compiler and library are fixed, which -makes things much simpler: we have an atomic CAS or we don't, see Lock -Policy below for details. -</p></div><div class="sect3" title="Selecting Lock Policy"><div class="titlepage"><div><div><h4 class="title"><a id="id637767"></a>Selecting Lock Policy</h4></div></div></div><p> - </p><p> -There is a single <code class="classname">_Sp_counted_base</code> class, -which is a template parameterized on the enum -<span class="type">__gnu_cxx::_Lock_policy</span>. The entire family of classes is -parameterized on the lock policy, right up to -<code class="classname">__shared_ptr</code>, <code class="classname">__weak_ptr</code> and -<code class="classname">__enable_shared_from_this</code>. The actual -<code class="classname">std::shared_ptr</code> class inherits from -<code class="classname">__shared_ptr</code> with the lock policy parameter -selected automatically based on the thread model and platform that -libstdc++ is configured for, so that the best available template -specialization will be used. This design is necessary because it would -not be conforming for <code class="classname">shared_ptr</code> to have an -extra template parameter, even if it had a default value. The -available policies are: - </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p> - <span class="type">_S_Atomic</span> - </p><p> -Selected when GCC supports a builtin atomic compare-and-swap operation -on the target processor (see <a class="ulink" href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html" target="_top">Atomic -Builtins</a>.) The reference counts are maintained using a lock-free -algorithm and GCC's atomic builtins, which provide the required memory -synchronisation. - </p></li><li class="listitem"><p> - <span class="type">_S_Mutex</span> - </p><p> -The _Sp_counted_base specialization for this policy contains a mutex, -which is locked in add_ref_lock(). This policy is used when GCC's atomic -builtins aren't available so explicit memory barriers are needed in places. - </p></li><li class="listitem"><p> - <span class="type">_S_Single</span> - </p><p> -This policy uses a non-reentrant add_ref_lock() with no locking. It is -used when libstdc++ is built without <code class="literal">--enable-threads</code>. - </p></li></ol></div><p> - For all three policies, reference count increments and - decrements are done via the functions in - <code class="filename">ext/atomicity.h</code>, which detect if the program - is multi-threaded. If only one thread of execution exists in - the program then less expensive non-atomic operations are used. - </p></div><div class="sect3" title="Dual C++0x and TR1 Implementation"><div class="titlepage"><div><div><h4 class="title"><a id="id618991"></a>Dual C++0x and TR1 Implementation</h4></div></div></div><p> -The classes derived from <code class="classname">_Sp_counted_base</code> (see Class Hierarchy -below) and <code class="classname">__shared_count</code> are implemented separately for C++0x -and TR1, in <code class="filename">bits/boost_sp_shared_count.h</code> and -<code class="filename">tr1/boost_sp_shared_count.h</code> respectively. All other classes -including <code class="classname">_Sp_counted_base</code> are shared by both implementations. -</p><p> -The TR1 implementation is considered relatively stable, so is unlikely to -change unless bug fixes require it. If the code that is common to both -C++0x and TR1 modes needs to diverge further then it might be necessary to -duplicate additional classes and only make changes to the C++0x versions. -</p></div><div class="sect3" title="Related functions and classes"><div class="titlepage"><div><div><h4 class="title"><a id="id589355"></a>Related functions and classes</h4></div></div></div><div class="variablelist"><dl><dt><span class="term"><code class="code">dynamic_pointer_cast</code>, <code class="code">static_pointer_cast</code>, -<code class="code">const_pointer_cast</code></span></dt><dd><p> -As noted in N2351, these functions can be implemented non-intrusively using -the alias constructor. However the aliasing constructor is only available -in C++0x mode, so in TR1 mode these casts rely on three non-standard -constructors in shared_ptr and __shared_ptr. -In C++0x mode these constructors and the related tag types are not needed. - </p></dd><dt><span class="term"><code class="code">enable_shared_from_this</code></span></dt><dd><p> -The clever overload to detect a base class of type -<code class="code">enable_shared_from_this</code> comes straight from Boost. -There is an extra overload for <code class="code">__enable_shared_from_this</code> to -work smoothly with <code class="code">__shared_ptr<Tp, Lp></code> using any lock -policy. - </p></dd><dt><span class="term"><code class="code">make_shared</code>, <code class="code">allocate_shared</code></span></dt><dd><p> -<code class="code">make_shared</code> simply forwards to <code class="code">allocate_shared</code> -with <code class="code">std::allocator</code> as the allocator. -Although these functions can be implemented non-intrusively using the -alias constructor, if they have access to the implementation then it is -possible to save storage and reduce the number of heap allocations. The -newly constructed object and the _Sp_counted_* can be allocated in a single -block and the standard says implementations are "encouraged, but not required," -to do so. This implementation provides additional non-standard constructors -(selected with the type <code class="code">_Sp_make_shared_tag</code>) which create an -object of type <code class="code">_Sp_counted_ptr_inplace</code> to hold the new object. -The returned <code class="code">shared_ptr<A></code> needs to know the address of the -new <code class="code">A</code> object embedded in the <code class="code">_Sp_counted_ptr_inplace</code>, -but it has no way to access it. -This implementation uses a "covert channel" to return the address of the -embedded object when <code class="code">get_deleter<_Sp_make_shared_tag>()</code> -is called. Users should not try to use this. -As well as the extra constructors, this implementation also needs some -members of _Sp_counted_deleter to be protected where they could otherwise -be private. - </p></dd></dl></div></div></div><div class="sect2" title="Use"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.using"></a>Use</h3></div></div></div><div class="sect3" title="Examples"><div class="titlepage"><div><div><h4 class="title"><a id="id619880"></a>Examples</h4></div></div></div><p> - Examples of use can be found in the testsuite, under - <code class="filename">testsuite/tr1/2_general_utilities/shared_ptr</code>. - </p></div><div class="sect3" title="Unresolved Issues"><div class="titlepage"><div><div><h4 class="title"><a id="id653780"></a>Unresolved Issues</h4></div></div></div><p> - The resolution to C++ Standard Library issue <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#674" target="_top">674</a>, - "shared_ptr interface changes for consistency with N1856" will - need to be implemented after it is accepted into the working - paper. Issue <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#743" target="_top">743</a> - might also require changes. - </p><p> - The <span class="type">_S_single</span> policy uses atomics when used in MT - code, because it uses the same dispatcher functions that check - <code class="function">__gthread_active_p()</code>. This could be - addressed by providing template specialisations for some members - of <code class="classname">_Sp_counted_base<_S_single></code>. - </p><p> - Unlike Boost, this implementation does not use separate classes - for the pointer+deleter and pointer+deleter+allocator cases in - C++0x mode, combining both into _Sp_counted_deleter and using - <code class="classname">allocator</code> when the user doesn't specify - an allocator. If it was found to be beneficial an additional - class could easily be added. With the current implementation, - the _Sp_counted_deleter and __shared_count constructors taking a - custom deleter but no allocator are technically redundant and - could be removed, changing callers to always specify an - allocator. If a separate pointer+deleter class was added the - __shared_count constructor would be needed, so it has been kept - for now. - </p><p> - The hack used to get the address of the managed object from - <code class="function">_Sp_counted_ptr_inplace::_M_get_deleter()</code> - is accessible to users. This could be prevented if - <code class="function">get_deleter<_Sp_make_shared_tag>()</code> - always returned NULL, since the hack only needs to work at a - lower level, not in the public API. This wouldn't be difficult, - but hasn't been done since there is no danger of accidental - misuse: users already know they are relying on unsupported - features if they refer to implementation details such as - _Sp_make_shared_tag. - </p><p> - tr1::_Sp_deleter could be a private member of tr1::__shared_count but it - would alter the ABI. - </p><p> - Exposing the alias constructor in TR1 mode could simplify the - *_pointer_cast functions. Constructor could be private in TR1 - mode, with the cast functions as friends. - </p></div></div><div class="sect2" title="Acknowledgments"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.ack"></a>Acknowledgments</h3></div></div></div><p> - The original authors of the Boost shared_ptr, which is really nice - code to work with, Peter Dimov in particular for his help and - invaluable advice on thread safety. Phillip Jordan and Paolo - Carlini for the lock policy implementation. - </p></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="shared_ptr.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="Improving shared_ptr for C++0x, Revision 2"><a id="id678655"></a><p>[<abbr class="abbrev"> - n2351 - </abbr>] <span class="title"><i> - Improving shared_ptr for C++0x, Revision 2 - </i>. </span><span class="subtitle"> - N2351 - . </span><span class="biblioid"> - <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="C++ Standard Library Active Issues List (Revision R52)"><a id="id678679"></a><p>[<abbr class="abbrev"> - n2456 - </abbr>] <span class="title"><i> - C++ Standard Library Active Issues List (Revision R52) - </i>. </span><span class="subtitle"> - N2456 - . </span><span class="biblioid"> - <a class="ulink" href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="Working Draft, Standard for Programming Language C++"><a id="id661793"></a><p>[<abbr class="abbrev"> - n2461 - </abbr>] <span class="title"><i> - Working Draft, Standard for Programming Language C++ - </i>. </span><span class="subtitle"> - N2461 - . </span><span class="biblioid"> - <a class="ulink" href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="Boost C++ Libraries documentation - shared_ptr class template"><a id="id612415"></a><p>[<abbr class="abbrev"> - boostshared_ptr - </abbr>] <span class="title"><i> - Boost C++ Libraries documentation - shared_ptr class template - </i>. </span><span class="subtitle"> - N2461 - . </span><span class="biblioid"> - <a class="ulink" href="http://boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">shared_ptr - </a> - . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="auto_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="memory.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="traits.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">auto_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 12. Traits</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/source_code_style.html b/libstdc++-v3/doc/html/manual/source_code_style.html index 8b9932cd032..8a45fe7dfd9 100644 --- a/libstdc++-v3/doc/html/manual/source_code_style.html +++ b/libstdc++-v3/doc/html/manual/source_code_style.html @@ -60,7 +60,7 @@ these names as operators have been fixed.]<br /> <br /> The full set of __* identifiers (combined from gcc/cp/lex.c and<br /> - gcc/cplus-dem.c) that are either old or new, but are definitely <br /> + gcc/cplus-dem.c) that are either old or new, but are definitely<br /> recognized by the demangler, is:<br /> <br /> __aa<br /> @@ -191,145 +191,165 @@ __embedded_cplusplus<br /> // long double conversion members mangled as __opr<br /> // http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html<br /> - _opr<br /> + __opr<br /> </p></div></div><div class="sect2" title="By Example"><div class="titlepage"><div><div><h3 class="title"><a id="coding_style.example"></a>By Example</h3></div></div></div><div class="literallayout"><p><br /> This library is written to appropriate C++ coding standards. As such,<br /> it is intended to precede the recommendations of the GNU Coding<br /> Standard, which can be referenced in full here:<br /> <br /> - http://www.gnu.org/prep/standards/standards.html#Formatting<br /> + <a class="ulink" href="http://www.gnu.org/prep/standards/standards.html#Formatting" target="_top">http://www.gnu.org/prep/standards/standards.html#Formatting</a><br /> <br /> The rest of this is also interesting reading, but skip the "Design<br /> Advice" part.<br /> <br /> The GCC coding conventions are here, and are also useful:<br /> - http://gcc.gnu.org/codingconventions.html<br /> + <a class="ulink" href="http://gcc.gnu.org/codingconventions.html" target="_top">http://gcc.gnu.org/codingconventions.html</a><br /> <br /> In addition, because it doesn't seem to be stated explicitly anywhere<br /> else, there is an 80 column source limit.<br /> <br /> - ChangeLog entries for member functions should use the<br /> + <code class="filename">ChangeLog</code> entries for member functions should use the<br /> classname::member function name syntax as follows:<br /> <br /> - 1999-04-15 Dennis Ritchie <dr@att.com><br /> +<code class="code"><br /> +1999-04-15 Dennis Ritchie <dr@att.com><br /> <br /> * src/basic_file.cc (__basic_file::open): Fix thinko in<br /> _G_HAVE_IO_FILE_OPEN bits.<br /> +</code><br /> <br /> Notable areas of divergence from what may be previous local practice<br /> (particularly for GNU C) include:<br /> <br /> 01. Pointers and references<br /> - char* p = "flop";<br /> - char& c = *p;<br /> - -NOT-<br /> - char *p = "flop"; // wrong<br /> - char &c = *p; // wrong<br /> - <br /> - Reason: In C++, definitions are mixed with executable code. Here, <br /> - p is being initialized, not *p. This is near-universal<br /> + <code class="code"><br /> + char* p = "flop";<br /> + char& c = *p;<br /> + -NOT-<br /> + char *p = "flop"; // wrong<br /> + char &c = *p; // wrong<br /> + </code><br /> +<br /> + Reason: In C++, definitions are mixed with executable code. Here,<br /> + <code class="code">p</code> is being initialized, not <code class="code">*p</code>. This is near-universal<br /> practice among C++ programmers; it is normal for C hackers<br /> to switch spontaneously as they gain experience.<br /> <br /> 02. Operator names and parentheses<br /> - operator==(type)<br /> - -NOT-<br /> - operator == (type) // wrong<br /> - <br /> - Reason: The == is part of the function name. Separating<br /> - it makes the declaration look like an expression. <br /> + <code class="code"><br /> + operator==(type)<br /> + -NOT-<br /> + operator == (type) // wrong<br /> + </code><br /> +<br /> + Reason: The <code class="code">==</code> is part of the function name. Separating<br /> + it makes the declaration look like an expression.<br /> <br /> 03. Function names and parentheses<br /> - void mangle()<br /> - -NOT-<br /> - void mangle () // wrong<br /> + <code class="code"><br /> + void mangle()<br /> + -NOT-<br /> + void mangle () // wrong<br /> + </code><br /> <br /> Reason: no space before parentheses (except after a control-flow<br /> keyword) is near-universal practice for C++. It identifies the<br /> - parentheses as the function-call operator or declarator, as <br /> + parentheses as the function-call operator or declarator, as<br /> opposed to an expression or other overloaded use of parentheses.<br /> <br /> 04. Template function indentation<br /> - template<typename T><br /> - void <br /> - template_function(args)<br /> - { }<br /> - -NOT-<br /> - template<class T><br /> - void template_function(args) {};<br /> - <br /> + <code class="code"><br /> + template<typename T><br /> + void<br /> + template_function(args)<br /> + { }<br /> + -NOT-<br /> + template<class T><br /> + void template_function(args) {};<br /> + </code><br /> +<br /> Reason: In class definitions, without indentation whitespace is<br /> needed both above and below the declaration to distinguish<br /> it visually from other members. (Also, re: "typename"<br /> - rather than "class".) T often could be int, which is <br /> + rather than "class".) <code class="code">T</code> often could be <code class="code">int</code>, which is<br /> not a class. ("class", here, is an anachronism.)<br /> <br /> 05. Template class indentation<br /> - template<typename _CharT, typename _Traits><br /> - class basic_ios : public ios_base<br /> - {<br /> - public:<br /> - // Types:<br /> - };<br /> - -NOT-<br /> - template<class _CharT, class _Traits><br /> - class basic_ios : public ios_base<br /> - {<br /> - public:<br /> - // Types:<br /> - };<br /> - -NOT-<br /> - template<class _CharT, class _Traits><br /> - class basic_ios : public ios_base<br /> - {<br /> - public:<br /> - // Types:<br /> - };<br /> + <code class="code"><br /> + template<typename _CharT, typename _Traits><br /> + class basic_ios : public ios_base<br /> + {<br /> + public:<br /> + // Types:<br /> + };<br /> + -NOT-<br /> + template<class _CharT, class _Traits><br /> + class basic_ios : public ios_base<br /> + {<br /> + public:<br /> + // Types:<br /> + };<br /> + -NOT-<br /> + template<class _CharT, class _Traits><br /> + class basic_ios : public ios_base<br /> + {<br /> + public:<br /> + // Types:<br /> + };<br /> + </code><br /> <br /> 06. Enumerators<br /> - enum<br /> - {<br /> - space = _ISspace,<br /> - print = _ISprint,<br /> - cntrl = _IScntrl<br /> - };<br /> - -NOT-<br /> - enum { space = _ISspace, print = _ISprint, cntrl = _IScntrl };<br /> + <code class="code"><br /> + enum<br /> + {<br /> + space = _ISspace,<br /> + print = _ISprint,<br /> + cntrl = _IScntrl<br /> + };<br /> + -NOT-<br /> + enum { space = _ISspace, print = _ISprint, cntrl = _IScntrl };<br /> + </code><br /> <br /> 07. Member initialization lists<br /> All one line, separate from class name.<br /> <br /> - gribble::gribble() <br /> - : _M_private_data(0), _M_more_stuff(0), _M_helper(0);<br /> - { }<br /> - -NOT-<br /> - gribble::gribble() : _M_private_data(0), _M_more_stuff(0), _M_helper(0);<br /> - { }<br /> + <code class="code"><br /> + gribble::gribble()<br /> + : _M_private_data(0), _M_more_stuff(0), _M_helper(0)<br /> + { }<br /> + -NOT-<br /> + gribble::gribble() : _M_private_data(0), _M_more_stuff(0), _M_helper(0)<br /> + { }<br /> + </code><br /> <br /> 08. Try/Catch blocks<br /> - try <br /> - {<br /> - //<br /> - } <br /> - catch (...)<br /> - {<br /> - //<br /> - } <br /> - -NOT-<br /> - try {<br /> - // <br /> - } catch(...) { <br /> - //<br /> - }<br /> + <code class="code"><br /> + try<br /> + {<br /> + //<br /> + }<br /> + catch (...)<br /> + {<br /> + //<br /> + }<br /> + -NOT-<br /> + try {<br /> + //<br /> + } catch(...) {<br /> + //<br /> + }<br /> + </code><br /> <br /> 09. Member functions declarations and definitions<br /> Keywords such as extern, static, export, explicit, inline, etc<br /> go on the line above the function name. Thus<br /> <br /> - virtual int <br /> + <code class="code"><br /> + virtual int<br /> foo()<br /> -NOT-<br /> virtual int foo()<br /> + </code><br /> <br /> Reason: GNU coding conventions dictate return types for functions<br /> are on a separate line than the function name and parameter list<br /> @@ -340,42 +360,49 @@ <br /> <br /> 10. Invocation of member functions with "this->"<br /> - For non-uglified names, use this->name to call the function.<br /> + For non-uglified names, use <code class="code">this->name</code> to call the function.<br /> <br /> + <code class="code"><br /> this->sync()<br /> -NOT-<br /> sync()<br /> + </code><br /> <br /> Reason: Koenig lookup.<br /> <br /> 11. Namespaces<br /> + <code class="code"><br /> namespace std<br /> {<br /> - blah blah blah;<br /> + blah blah blah;<br /> } // namespace std<br /> <br /> -NOT-<br /> <br /> namespace std {<br /> - blah blah blah;<br /> + blah blah blah;<br /> } // namespace std<br /> + </code><br /> <br /> 12. Spacing under protected and private in class declarations:<br /> space above, none below<br /> i.e.<br /> <br /> + <code class="code"><br /> public:<br /> - int foo;<br /> + int foo;<br /> <br /> -NOT-<br /> public:<br /> - <br /> - int foo;<br /> +<br /> + int foo;<br /> + </code><br /> <br /> 13. Spacing WRT return statements.<br /> no extra spacing before returns, no parenthesis<br /> i.e.<br /> <br /> + <code class="code"><br /> }<br /> return __ret;<br /> <br /> @@ -388,21 +415,22 @@ <br /> }<br /> return (__ret);<br /> + </code><br /> <br /> <br /> 14. Location of global variables.<br /> All global variables of class type, whether in the "user visible"<br /> - space (e.g., cin) or the implementation namespace, must be defined<br /> + space (e.g., <code class="code">cin</code>) or the implementation namespace, must be defined<br /> as a character array with the appropriate alignment and then later<br /> re-initialized to the correct value.<br /> <br /> This is due to startup issues on certain platforms, such as AIX.<br /> - For more explanation and examples, see src/globals.cc. All such<br /> + For more explanation and examples, see <code class="filename">src/globals.cc</code>. All such<br /> variables should be contained in that file, for simplicity.<br /> <br /> 15. Exception abstractions<br /> - Use the exception abstractions found in functexcept.h, which allow<br /> - C++ programmers to use this library with -fno-exceptions. (Even if<br /> + Use the exception abstractions found in <code class="filename">functexcept.h</code>, which allow<br /> + C++ programmers to use this library with <code class="literal">-fno-exceptions</code>. (Even if<br /> that is rarely advisable, it's a necessary evil for backwards<br /> compatibility.)<br /> <br /> @@ -410,9 +438,11 @@ All start with the name of the function where the exception is<br /> thrown, and then (optional) descriptive text is added. Example:<br /> <br /> + <code class="code"><br /> __throw_logic_error(__N("basic_string::_S_construct NULL not valid"));<br /> + </code><br /> <br /> - Reason: The verbose terminate handler prints out exception::what(),<br /> + Reason: The verbose terminate handler prints out <code class="code">exception::what()</code>,<br /> as well as the typeinfo for the thrown exception. As this is the<br /> default terminate handler, by putting location info into the<br /> exception string, a very useful error message is printed out for<br /> @@ -428,27 +458,27 @@ <br /> Name patterns:<br /> <br /> - For nonstandard names appearing in Standard headers, we are constrained <br /> + For nonstandard names appearing in Standard headers, we are constrained<br /> to use names that begin with underscores. This is called "uglification".<br /> The convention is:<br /> <br /> - Local and argument names: __[a-z].*<br /> + Local and argument names: <code class="literal">__[a-z].*</code><br /> <br /> - Examples: __count __ix __s1 <br /> + Examples: <code class="code">__count __ix __s1</code><br /> <br /> - Type names and template formal-argument names: _[A-Z][^_].*<br /> + Type names and template formal-argument names: <code class="literal">_[A-Z][^_].*</code><br /> <br /> - Examples: _Helper _CharT _N <br /> + Examples: <code class="code">_Helper _CharT _N</code><br /> <br /> - Member data and function names: _M_.*<br /> + Member data and function names: <code class="literal">_M_.*</code><br /> <br /> - Examples: _M_num_elements _M_initialize ()<br /> + Examples: <code class="code">_M_num_elements _M_initialize ()</code><br /> <br /> - Static data members, constants, and enumerations: _S_.*<br /> + Static data members, constants, and enumerations: <code class="literal">_S_.*</code><br /> <br /> - Examples: _S_max_elements _S_default_value<br /> + Examples: <code class="code">_S_max_elements _S_default_value</code><br /> <br /> - Don't use names in the same scope that differ only in the prefix, <br /> + Don't use names in the same scope that differ only in the prefix,<br /> e.g. _S_top and _M_top. See BADNAMES for a list of forbidden names.<br /> (The most tempting of these seem to be and "_T" and "__sz".)<br /> <br /> @@ -458,87 +488,88 @@ --------------------------<br /> <br /> [BY EXAMPLE]<br /> - <br /> + <code class="code"><br /> +<br /> #ifndef _HEADER_<br /> #define _HEADER_ 1<br /> <br /> namespace std<br /> {<br /> - class gribble<br /> - {<br /> - public:<br /> - gribble() throw();<br /> + class gribble<br /> + {<br /> + public:<br /> + gribble() throw();<br /> <br /> - gribble(const gribble&);<br /> + gribble(const gribble&);<br /> <br /> - explicit <br /> - gribble(int __howmany);<br /> + explicit<br /> + gribble(int __howmany);<br /> <br /> - gribble& <br /> - operator=(const gribble&);<br /> + gribble&<br /> + operator=(const gribble&);<br /> <br /> - virtual <br /> - ~gribble() throw ();<br /> + virtual<br /> + ~gribble() throw ();<br /> <br /> - // Start with a capital letter, end with a period.<br /> - inline void <br /> - public_member(const char* __arg) const;<br /> + // Start with a capital letter, end with a period.<br /> + inline void<br /> + public_member(const char* __arg) const;<br /> <br /> - // In-class function definitions should be restricted to one-liners.<br /> - int <br /> - one_line() { return 0 }<br /> + // In-class function definitions should be restricted to one-liners.<br /> + int<br /> + one_line() { return 0 }<br /> <br /> - int <br /> - two_lines(const char* arg) <br /> - { return strchr(arg, 'a'); }<br /> + int<br /> + two_lines(const char* arg)<br /> + { return strchr(arg, 'a'); }<br /> <br /> - inline int <br /> - three_lines(); // inline, but defined below.<br /> + inline int<br /> + three_lines(); // inline, but defined below.<br /> <br /> - // Note indentation.<br /> - template<typename _Formal_argument><br /> - void <br /> - public_template() const throw();<br /> + // Note indentation.<br /> + template<typename _Formal_argument><br /> + void<br /> + public_template() const throw();<br /> <br /> - template<typename _Iterator><br /> - void <br /> - other_template();<br /> + template<typename _Iterator><br /> + void<br /> + other_template();<br /> <br /> - private:<br /> - class _Helper;<br /> + private:<br /> + class _Helper;<br /> <br /> - int _M_private_data;<br /> - int _M_more_stuff;<br /> - _Helper* _M_helper;<br /> - int _M_private_function();<br /> + int _M_private_data;<br /> + int _M_more_stuff;<br /> + _Helper* _M_helper;<br /> + int _M_private_function();<br /> <br /> - enum _Enum <br /> - { <br /> - _S_one, <br /> - _S_two <br /> - };<br /> + enum _Enum<br /> + {<br /> + _S_one,<br /> + _S_two<br /> + };<br /> <br /> - static void <br /> - _S_initialize_library();<br /> - };<br /> + static void<br /> + _S_initialize_library();<br /> + };<br /> <br /> - // More-or-less-standard language features described by lack, not presence.<br /> + // More-or-less-standard language features described by lack, not presence.<br /> # ifndef _G_NO_LONGLONG<br /> - extern long long _G_global_with_a_good_long_name; // avoid globals!<br /> + extern long long _G_global_with_a_good_long_name; // avoid globals!<br /> # endif<br /> <br /> - // Avoid in-class inline definitions, define separately;<br /> - // likewise for member class definitions:<br /> - inline int<br /> - gribble::public_member() const<br /> - { int __local = 0; return __local; }<br /> + // Avoid in-class inline definitions, define separately;<br /> + // likewise for member class definitions:<br /> + inline int<br /> + gribble::public_member() const<br /> + { int __local = 0; return __local; }<br /> <br /> - class gribble::_Helper<br /> - {<br /> - int _M_stuff;<br /> + class gribble::_Helper<br /> + {<br /> + int _M_stuff;<br /> <br /> - friend class gribble;<br /> - };<br /> + friend class gribble;<br /> + };<br /> }<br /> <br /> // Names beginning with "__": only for arguments and<br /> @@ -548,41 +579,42 @@ #endif /* _HEADER_ */<br /> <br /> <br /> - namespace std <br /> - {<br /> - template<typename T> // notice: "typename", not "class", no space<br /> - long_return_value_type<with_many, args> <br /> - function_name(char* pointer, // "char *pointer" is wrong.<br /> - char* argument, <br /> - const Reference& ref)<br /> - {<br /> - // int a_local; /* wrong; see below. */<br /> - if (test) <br /> - { <br /> - nested code <br /> - }<br /> - <br /> - int a_local = 0; // declare variable at first use.<br /> -<br /> - // char a, b, *p; /* wrong */<br /> - char a = 'a';<br /> - char b = a + 1;<br /> - char* c = "abc"; // each variable goes on its own line, always.<br /> -<br /> - // except maybe here...<br /> - for (unsigned i = 0, mask = 1; mask; ++i, mask <<= 1) {<br /> - // ...<br /> - }<br /> - }<br /> - <br /> - gribble::gribble()<br /> - : _M_private_data(0), _M_more_stuff(0), _M_helper(0);<br /> - { }<br /> -<br /> - inline int <br /> - gribble::three_lines()<br /> + namespace std<br /> {<br /> - // doesn't fit in one line.<br /> - }<br /> + template<typename T> // notice: "typename", not "class", no space<br /> + long_return_value_type<with_many, args><br /> + function_name(char* pointer, // "char *pointer" is wrong.<br /> + char* argument,<br /> + const Reference& ref)<br /> + {<br /> + // int a_local; /* wrong; see below. */<br /> + if (test)<br /> + {<br /> + nested code<br /> + }<br /> +<br /> + int a_local = 0; // declare variable at first use.<br /> +<br /> + // char a, b, *p; /* wrong */<br /> + char a = 'a';<br /> + char b = a + 1;<br /> + char* c = "abc"; // each variable goes on its own line, always.<br /> +<br /> + // except maybe here...<br /> + for (unsigned i = 0, mask = 1; mask; ++i, mask <<= 1) {<br /> + // ...<br /> + }<br /> + }<br /> +<br /> + gribble::gribble()<br /> + : _M_private_data(0), _M_more_stuff(0), _M_helper(0)<br /> + { }<br /> +<br /> + int<br /> + gribble::three_lines()<br /> + {<br /> + // doesn't fit in one line.<br /> + }<br /> } // namespace std<br /> + </code><br /> </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="source_organization.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="appendix_contributing.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="documentation_style.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Directory Layout and Source Conventions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Documentation Style</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/source_organization.html b/libstdc++-v3/doc/html/manual/source_organization.html index 2ac9f9041a3..4cb92481af7 100644 --- a/libstdc++-v3/doc/html/manual/source_organization.html +++ b/libstdc++-v3/doc/html/manual/source_organization.html @@ -20,26 +20,26 @@ It has subdirectories:<br /> <br /> include/std<br /> Files meant to be found by #include <name> directives in<br /> - standard-conforming user programs. <br /> + standard-conforming user programs.<br /> <br /> include/c<br /> - Headers intended to directly include standard C headers. <br /> + Headers intended to directly include standard C headers.<br /> [NB: this can be enabled via --enable-cheaders=c]<br /> <br /> - include/c_global <br /> + include/c_global<br /> Headers intended to include standard C headers in<br /> the global namespace, and put select names into the std::<br /> namespace. [NB: this is the default, and is the same as<br /> --enable-cheaders=c_global]<br /> <br /> - include/c_std <br /> + include/c_std<br /> Headers intended to include standard C headers<br /> already in namespace std, and put select names into the std::<br /> namespace. [NB: this is the same as --enable-cheaders=c_std]<br /> <br /> include/bits<br /> Files included by standard headers and by other files in<br /> - the bits directory. <br /> + the bits directory.<br /> <br /> include/backward<br /> Headers provided for backward compatibility, such as <iostream.h>.<br /> @@ -58,7 +58,7 @@ It has subdirectories:<br /> installed.<br /> <br /> testsuites/[backward, demangle, ext, performance, thread, 17_* to 27_*]<br /> - Test programs are here, and may be used to begin to exercise the <br /> + Test programs are here, and may be used to begin to exercise the<br /> library. Support for "make check" and "make check-install" is<br /> complete, and runs through all the subdirectories here when this<br /> command is issued from the build directory. Please note that<br /> diff --git a/libstdc++-v3/doc/html/manual/spine.html b/libstdc++-v3/doc/html/manual/spine.html index f5e3d1ebd3a..f34706d805a 100644 --- a/libstdc++-v3/doc/html/manual/spine.html +++ b/libstdc++-v3/doc/html/manual/spine.html @@ -2,48 +2,58 @@ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>The GNU C++ Library</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="prev" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="next" href="intro.html" title="Part I. Introduction" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The GNU C++ Library</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr></table><hr /></div><div class="book" title="The GNU C++ Library"><div class="titlepage"><div><div><h1 class="title"><a id="manual-index"></a>The GNU C++ Library</h1></div><div><p class="copyright">Copyright © 2009, 2010 <a class="ulink" href="http://www.fsf.org" target="_top">FSF</a> - </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id687837"></a><p> + </p></div><div><div class="legalnotice" title="Legal Notice"><a id="id451847"></a><p> <a class="link" href="license.html" title="License">License</a> </p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="part"><a href="intro.html">I. Introduction -</a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="sect2"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="support.html">II. +</a></span></dt><dd><dl><dt><span class="chapter"><a href="status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="sect1"><a href="using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="sect2"><a href="using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="sect2"><a href="using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="sect2"><a href="debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="sect2"><a href="debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="bk01pt02.html">II. + Standard Contents +</a></span></dt><dd><dl><dt><span class="chapter"><a href="support.html">4. Support -</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="diagnostics.html">III. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="sect2"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect2"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="sect2"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="sect1"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="sect1"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="sect2"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect2"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="diagnostics.html">5. Diagnostics -</a></span></dt><dd><dl><dt><span class="chapter"><a href="exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></dd><dt><span class="chapter"><a href="bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="utilities.html">IV. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="sect2"><a href="diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="utilities.html">6. Utilities -</a></span></dt><dd><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="strings.html">V. +</a></span></dt><dd><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="strings.html">7. Strings -</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="localization.html">VI. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="sect2"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="localization.html">8. Localization -</a></span></dt><dd><dl><dt><span class="chapter"><a href="locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="containers.html">VII. +</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="localization.html#std.localization.locales.locale">locale</a></span></dt></dl></dd><dt><span class="section"><a href="facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="facets.html#std.localization.facet.ctype">ctype</a></span></dt><dt><span class="section"><a href="facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dt><span class="section"><a href="facets.html#manual.localization.facet.messages">messages</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers.html">9. Containers -</a></span></dt><dd><dl><dt><span class="chapter"><a href="sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="iterators.html">VIII. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="sect2"><a href="containers.html#containers.sequences.list">list</a></span></dt><dt><span class="sect2"><a href="containers.html#containers.sequences.vector">vector</a></span></dt></dl></dd><dt><span class="sect1"><a href="associative.html">Associative</a></span></dt><dd><dl><dt><span class="sect2"><a href="associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect2"><a href="associative.html#containers.associative.bitset">bitset</a></span></dt></dl></dd><dt><span class="sect1"><a href="containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="iterators.html">10. Iterators -</a></span></dt><dd><dl><dt><span class="chapter"><a href="bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="algorithms.html">IX. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="sect2"><a href="iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect2"><a href="iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="algorithms.html">11. Algorithms -</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt09ch20.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="numerics.html">X. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="sect2"><a href="algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="numerics.html">12. Numerics -</a></span></dt><dd><dl><dt><span class="chapter"><a href="complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="io.html">XI. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="sect2"><a href="numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="sect1"><a href="generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="sect1"><a href="numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect2"><a href="numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="io.html">13. Input and Output -</a></span></dt><dd><dl><dt><span class="chapter"><a href="iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch27s02.html">Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="extensions.html">XII. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="sect1"><a href="streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="sect2"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect2"><a href="streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="sect1"><a href="stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="sect1"><a href="fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect2"><a href="fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="sect1"><a href="io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect2"><a href="io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="atomics.html">14. + Atomics + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="atomics.html#std.atomics.api">API Reference</a></span></dt></dl></dd><dt><span class="chapter"><a href="concurrency.html">15. + Concurrency + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="extensions.html">III. Extensions -</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch30s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch31s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">32. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">33. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">34. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt12ch34s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">35. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">36. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">37. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">38. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">39. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">40. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">41. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt12ch41s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt12ch41s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_contributing.html">A. +</a></span></dt><dd><dl><dt><span class="preface"><a href="bk01pt03pr01.html"></a></span></dt><dt><span class="chapter"><a href="ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_allocators.html">20. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ext_containers.html">21. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_utilities.html">22. Utilities</a></span></dt><dt><span class="chapter"><a href="ext_algorithms.html">23. Algorithms</a></span></dt><dt><span class="chapter"><a href="ext_numerics.html">24. Numerics</a></span></dt><dt><span class="chapter"><a href="ext_iterators.html">25. Iterators</a></span></dt><dt><span class="chapter"><a href="ext_io.html">26. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="ext_demangling.html">27. Demangling</a></span></dt><dt><span class="chapter"><a href="ext_concurrency.html">28. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="bk01pt03ch28s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="bk01pt04.html">IV. + Appendices +</a></span></dt><dd><dl><dt><span class="appendix"><a href="appendix_contributing.html">A. Contributing -</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.docbook">Docbook</a></span></dt><dt><span class="sect2"><a href="documentation_style.html#doc_style.combines">Combines</a></span></dt></dl></dd><dt><span class="sect1"><a href="source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="appendix_porting.html">B. Porting and Maintenance </a></span></dt><dd><dl><dt><span class="sect1"><a href="appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="sect2"><a href="test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="sect1"><a href="abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="sect2"><a href="api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="appendix_free.html">C. @@ -51,7 +61,7 @@ </a></span></dt><dt><span class="appendix"><a href="appendix_gpl.html">D. <acronym class="acronym">GNU</acronym> General Public License version 3 - </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt><dt><span class="index"><a href="bk01ix01.html">Index</a></span></dt></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="status.html#id631851">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id616054">C++ 200x Implementation Status</a></dt><dt>1.3. <a href="status.html#id623542">C++ TR1 Implementation Status</a></dt><dt>1.4. <a href="status.html#id602015">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using.html#id619494">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#id616284">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#id667695">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#id605616">C++ 200x Library Headers</a></dt><dt>3.5. <a href="using_headers.html#id606881">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#id593853">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#id680678">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#id563959">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#id661850">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#id614025">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#id662204">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#id611004">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#id592292">Extension Parallel Headers</a></dt><dt>30.1. <a href="bk01pt12ch30s03.html#id705570">Debugging Containers</a></dt><dt>30.2. <a href="bk01pt12ch30s03.html#id607020">Debugging Containers C++0x</a></dt><dt>31.1. <a href="bk01pt12ch31s03.html#id713517">Parallel Algorithms</a></dt><dt>32.1. <a href="bk01pt12ch32s02.html#id594983">Code Location</a></dt><dt>32.2. <a href="bk01pt12ch32s07.html#id626153">Diagnostics</a></dt><dt>33.1. <a href="bitmap_allocator.html#id620814">Bitmap Allocator Memory Map</a></dt><dt>A.1. <a href="documentation_style.html#id645775">HTML to Doxygen markup comparison</a></dt><dt>A.2. <a href="documentation_style.html#id724766">HTML to Docbook XML markup comparison</a></dt><dt>A.3. <a href="documentation_style.html#id631420">Docbook XML Element Use</a></dt><dt>B.1. <a href="api.html#id653273">Extension Allocators</a></dt><dt>B.2. <a href="api.html#id594438">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. + </a></span></dt><dt><span class="appendix"><a href="appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></div><div class="list-of-tables"><p><b>List of Tables</b></p><dl><dt>1.1. <a href="status.html#id475774">C++ 1998/2003 Implementation Status</a></dt><dt>1.2. <a href="status.html#id399969">C++ 200x Implementation Status</a></dt><dt>1.3. <a href="status.html#id449588">C++ TR1 Implementation Status</a></dt><dt>1.4. <a href="status.html#id471043">C++ TR 24733 Implementation Status</a></dt><dt>3.1. <a href="using.html#id444212">C++ Command Options</a></dt><dt>3.2. <a href="using_headers.html#id470920">C++ 1998 Library Headers</a></dt><dt>3.3. <a href="using_headers.html#id349475">C++ 1998 Library Headers for C Library Facilities</a></dt><dt>3.4. <a href="using_headers.html#id477183">C++ 200x Library Headers</a></dt><dt>3.5. <a href="using_headers.html#id463447">C++ 200x Library Headers for C Library Facilities</a></dt><dt>3.6. <a href="using_headers.html#id387306">C++ TR 1 Library Headers</a></dt><dt>3.7. <a href="using_headers.html#id479735">C++ TR 1 Library Headers for C Library Facilities</a></dt><dt>3.8. <a href="using_headers.html#id400127">C++ TR 24733 Decimal Floating-Point Header</a></dt><dt>3.9. <a href="using_headers.html#id401869">C++ ABI Headers</a></dt><dt>3.10. <a href="using_headers.html#id467180">Extension Headers</a></dt><dt>3.11. <a href="using_headers.html#id403996">Extension Debug Headers</a></dt><dt>3.12. <a href="using_headers.html#id403404">Extension Profile Headers</a></dt><dt>3.13. <a href="using_headers.html#id477245">Extension Parallel Headers</a></dt><dt>17.1. <a href="bk01pt03ch17s03.html#id419645">Debugging Containers</a></dt><dt>17.2. <a href="bk01pt03ch17s03.html#id391116">Debugging Containers C++0x</a></dt><dt>18.1. <a href="bk01pt03ch18s03.html#id416292">Parallel Algorithms</a></dt><dt>19.1. <a href="bk01pt03ch19s02.html#id442414">Profile Code Location</a></dt><dt>19.2. <a href="bk01pt03ch19s07.html#id470044">Profile Diagnostics</a></dt><dt>20.1. <a href="bitmap_allocator.html#id376664">Bitmap Allocator Memory Map</a></dt><dt>A.1. <a href="documentation_style.html#id419590">HTML to Doxygen Markup Comparison</a></dt><dt>A.2. <a href="documentation_style.html#id502132">HTML to Docbook XML Markup Comparison</a></dt><dt>A.3. <a href="documentation_style.html#id502333">Docbook XML Element Use</a></dt><dt>B.1. <a href="api.html#id510444">Extension Allocators</a></dt><dt>B.2. <a href="api.html#id396448">Extension Allocators Continued</a></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="../spine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="intro.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">The GNU C++ Library Documentation </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. Introduction </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/status.html b/libstdc++-v3/doc/html/manual/status.html index be894aa296d..fa780af4e20 100644 --- a/libstdc++-v3/doc/html/manual/status.html +++ b/libstdc++-v3/doc/html/manual/status.html @@ -8,7 +8,7 @@ This status table is based on the table of contents of ISO/IEC 14882:2003. </p><p> This page describes the C++ support in mainline GCC SVN, not in any particular release. -</p><div class="table"><a id="id631851"></a><p class="title"><b>Table 1.1. C++ 1998/2003 Implementation Status</b></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> +</p><div class="table"><a id="id475774"></a><p class="title"><b>Table 1.1. C++ 1998/2003 Implementation Status</b></p><div class="table-contents"><table summary="C++ 1998/2003 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> <span class="emphasis"><em>18</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Language support</em></span> @@ -58,8 +58,8 @@ particular release. <code class="code">[1.3.5] implementation-defined behavior</code> </span></dt><dd><p> Behavior, for a well-formed program construct and correct data, that - depends on the implementation <span class="emphasis"><em>and that each implementation - shall document</em></span>. + depends on the implementation <span class="emphasis"><em>and that each implementation + shall document</em></span>. </p></dd></dl></div></blockquote></div><p> We do so here, for the C++ library only. Behavior of the compiler, linker, runtime loader, and other elements of "the @@ -76,7 +76,7 @@ particular release. <span class="emphasis"><em>[17.4.4.5]</em></span> Non-reentrant functions are probably best discussed in the various sections on multithreading (see above). </p><p><span class="emphasis"><em>[18.1]/4</em></span> The type of <code class="code">NULL</code> is described - <a class="link" href="bk01pt02ch04s03.html" title="NULL">here</a>. + <a class="link" href="support.html#std.support.types.null" title="NULL">here</a>. </p><p><span class="emphasis"><em>[18.3]/8</em></span> Even though it's listed in the library sections, libstdc++ has zero control over what the cleanup code hands back to the runtime loader. Talk to the compiler people. :-) @@ -90,7 +90,7 @@ particular release. class. But they are the <span class="emphasis"><em>mangled</em></span> names; you will need to call <code class="code">c++filt</code> and pass the names as command-line parameters to demangle them, or call a - <a class="link" href="ext_demangling.html" title="Chapter 40. Demangling">runtime demangler function</a>. + <a class="link" href="ext_demangling.html" title="Chapter 27. Demangling">runtime demangler function</a>. (The classes in <code class="code"><stdexcept></code> have constructors which require an argument to use later for <code class="code">what()</code> calls, so the problem of <code class="code">what()</code>'s value does not arise in most @@ -117,11 +117,11 @@ particular release. here would defeat the purpose. :-) </p><p><span class="emphasis"><em>[21.1.3.1]/5</em></span> I don't really know about the mbstate_t stuff... see - the <a class="link" href="codecvt.html" title="codecvt">chapter 22 + the <a class="link" href="facets.html#std.localization.facet.codecvt" title="codecvt">chapter 22 notes</a> for what does exist. </p><p><span class="emphasis"><em>[22.*]</em></span> Anything and everything we have on locale implementation will be described - <a class="link" href="locales.html#manual.localization.locales.locale" title="locale">over here</a>. + <a class="link" href="localization.html#std.localization.locales.locale" title="locale">over here</a>. </p><p><span class="emphasis"><em>[26.2.8]/9</em></span> I have no idea what <code class="code">complex<T></code>'s pow(0,0) returns. </p><p><span class="emphasis"><em>[27.4.2.4]/2</em></span> Calling @@ -139,13 +139,13 @@ particular release. </p><p><span class="emphasis"><em>[27.7.1.3]/16</em></span>, <span class="emphasis"><em>[27.8.1.4]/10</em></span> The effects of <code class="code">pubsetbuf/setbuf</code> are described - <a class="link" href="io.html" title="Part XI. Input and Output">in this chapter</a>. + <a class="link" href="io.html" title="Chapter 13. Input and Output">in this chapter</a>. </p><p><span class="emphasis"><em>[27.8.1.4]/16</em></span> Calling <code class="code">fstream::sync</code> when a get area exists will... whatever <code class="code">fflush()</code> does, I think. </p></div></div><div class="sect2" title="C++ 200x"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.200x"></a>C++ 200x</h3></div></div></div><p> -This table is based on the table of contents of ISO/IEC -Doc No: N3000=09-0190 Date: 2009-11-09 -Working Draft, Standard for Programming Language C++ +This table is based on the table of contents of ISO/IEC +JTC1 SC22 WG21 Doc No: N3092 Date: 2010-03-26 +Final Committee Draft, Standard for Programming Language C++ </p><p> In this implementation <code class="literal">-std=gnu++0x</code> or <code class="literal">-std=c++0x</code> flags must be used to enable language @@ -157,56 +157,56 @@ presence of the required flag. </p><p> This page describes the C++0x support in mainline GCC SVN, not in any particular release. -</p><div class="table"><a id="id616054"></a><p class="title"><b>Table 1.2. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> +</p><div class="table"><a id="id399969"></a><p class="title"><b>Table 1.2. C++ 200x Implementation Status</b></p><div class="table-contents"><table summary="C++ 200x Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> <span class="emphasis"><em>18</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Language support</em></span> - </td></tr><tr><td align="left">18.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.2</td><td align="left">Types</td><td align="left">Partial</td><td align="left">Missing offsetof, max_align_t, nullptr_t</td></tr><tr><td align="left">18.3</td><td align="left">Implementation properties</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.3.1</td><td align="left">Numeric Limits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.3.1.1</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.3.1.2</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.1.3</td><td align="left"><code class="code">float_round_style</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.1.4</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.3.1.5</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.3.2</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.4</td><td align="left">Integer types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.4.1</td><td align="left">Header <code class="code"><cstdint></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.4.2</td><td align="left">The header <code class="code"><stdint.h></code></td><td align="left">Partial</td><td align="left">May use configure-generated stdint.h via GCC_HEADER_STDINT</td></tr><tr bgcolor="#B0B0B0"><td align="left">18.5</td><td align="left">Start and termination</td><td align="left">Partial</td><td align="left">Missing quick_exit, at_quick_exit</td></tr><tr><td align="left">18.6</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7</td><td align="left">Type identification</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.7.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.7.2</td><td align="left">Class type_index</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.7.3</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7.4</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8</td><td align="left">Exception handling</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.8.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.2</td><td align="left">Violation exception-specifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.5</td><td align="left">Propagation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.6</td><td align="left">Class <code class="code">nested_exception</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.9</td><td align="left">Initializer lists</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.9.1</td><td align="left">Initializer list constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.9.2</td><td align="left">Initializer list access</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.9.3</td><td align="left">Initializer list concept maps</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.10</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">18.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.2</td><td align="left">Types</td><td align="left">Partial</td><td align="left">Missing offsetof, max_align_t</td></tr><tr><td align="left">18.3</td><td align="left">Implementation properties</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.3.1</td><td align="left">Numeric Limits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.3.1.1</td><td align="left">Class template <code class="code">numeric_limits</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.3.1.2</td><td align="left"><code class="code">numeric_limits</code> members</td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.1.3</td><td align="left"><code class="code">float_round_style</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.3.1.4</td><td align="left"><code class="code">float_denorm_style</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.3.1.5</td><td align="left"><code class="code">numeric_limits</code> specializations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.3.2</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.4</td><td align="left">Integer types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.4.1</td><td align="left">Header <code class="code"><cstdint></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">18.5</td><td align="left">Start and termination</td><td align="left">Partial</td><td align="left">C library dependency for quick_exit, at_quick_exit</td></tr><tr><td align="left">18.6</td><td align="left">Dynamic memory management</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7</td><td align="left">Type identification</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.7.1</td><td align="left">Class type_info</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7.2</td><td align="left">Class bad_cast</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.7.3</td><td align="left">Class bad_typeid</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8</td><td align="left">Exception handling</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.8.1</td><td align="left">Class exception</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.2</td><td align="left">Violating exception-specifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.3</td><td align="left">Abnormal termination</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.4</td><td align="left"><code class="code">uncaught_exception</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.5</td><td align="left">Exception Propagation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.8.6</td><td align="left"><code class="code">nested_exception</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.9</td><td align="left">Initializer lists</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">18.9.1</td><td align="left">Initializer list constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">18.9.2</td><td align="left">Initializer list access</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">18.9.3</td><td align="left">Initializer list range access</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">18.10</td><td align="left">Other runtime support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>19</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Diagnostics</em></span> - </td></tr><tr><td align="left">19.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.2</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.3</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.4</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5</td><td align="left">System error support</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">19.5.1</td><td align="left">Class <code class="code">error_category</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">19.5.2</td><td align="left">Class <code class="code">error_code</code></td><td align="left">Partial</td><td align="left">Missing concept ErrorCodeEnum</td></tr><tr bgcolor="#B0B0B0"><td align="left">19.5.3</td><td align="left">Class <code class="code">error_condition</code></td><td align="left">Partial</td><td align="left">Missing concept ErrorConditionEnum</td></tr><tr><td align="left">19.5.4</td><td align="left">Comparison operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5.5</td><td align="left">Class <code class="code">system_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">19.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.2</td><td align="left">Exception classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.3</td><td align="left">Assertions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.4</td><td align="left">Error numbers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5</td><td align="left">System error support</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">19.5.1</td><td align="left">Class <code class="code">error_category</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5.2</td><td align="left">Class <code class="code">error_code</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5.3</td><td align="left">Class <code class="code">error_condition</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5.4</td><td align="left">Comparison operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">19.5.5</td><td align="left">Class <code class="code">system_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>20</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>General utilities</em></span> - </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing all concepts</td></tr><tr bgcolor="#C8B0B0"><td align="left">20.2</td><td align="left">Concepts</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.2</td><td align="left"><code class="code">forward</code> and <code class="code">move</code> helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.3</td><td align="left"><code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.4</td><td align="left">tuple-like access to <code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.3.5</td><td align="left">Range concept maps for <code class="code">pair</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.3.6</td><td align="left">Class template <code class="code">bitset</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.4</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.1</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.2</td><td align="left">Arithmetic on <code class="code">ratio</code> types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.3</td><td align="left">Comparison of <code class="code">ratio</code> types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.4.4</td><td align="left">SI types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.5</td><td align="left">Tuples</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.5.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.5.2</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">Partial</td><td align="left">Missing range concept maps</td></tr><tr><td align="left">20.6</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.6.2</td><td align="left">Header <code class="code"><type_traits></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.4</td><td align="left">Unary Type Traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.4.1</td><td align="left">Primary type categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.4.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.6.4.3</td><td align="left">Type properties</td><td align="left">Partial</td><td align="left">Missing is_system_layout</td></tr><tr><td align="left">20.6.5</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.6.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.6.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.6.7</td><td align="left">Other transformations</td><td align="left">Partial</td><td align="left">Missing decay</td></tr><tr><td align="left">20.7</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.1</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.3</td><td align="left">Base</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.4</td><td align="left">Function object return types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.5</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.7.6</td><td align="left">Identity operation</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.7.7</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.8</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.9</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.10</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.11</td><td align="left">Negators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.12</td><td align="left">Template <code class="code">function</code> and function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.13</td><td align="left">Adaptors for pointers to functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.14</td><td align="left">Adaptors for pointers to members</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.15</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.16</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.16.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.16.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.17</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.7.18</td><td align="left">Class template <code class="code">reference_closure</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8</td><td align="left">Memory</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.01</td><td align="left">Allocator argument tag</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.02</td><td align="left">Allocators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.02.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.02.2</td><td align="left">Allocator concept</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.02.3</td><td align="left">Support for legacy allocators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.02.4</td><td align="left">Allocator and Legacy Allocator members</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.03</td><td align="left">Allocator-related element concepts</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.04</td><td align="left">Allocator propagation traits</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.05</td><td align="left">Allocator propagation map</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.06</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.07</td><td align="left">Scoped allocator adaptor</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.1</td><td align="left"><code class="code">scoped_allocator_adaptor_base</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.2</td><td align="left"><code class="code">scoped_allocator_adaptor constructors</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.3</td><td align="left"><code class="code">scoped_allocator_adaptor2</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.3</td><td align="left">scoped_allocator_adaptor members</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.07.4</td><td align="left"><code class="code">scoped_allocator_adaptor globals</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.08</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.09</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.10</td><td align="left"><code class="code">construct_element</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.11</td><td align="left">Specialized algorithms</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.11.1</td><td align="left"><code class="code">addressof</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.11.2</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11.3</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11.4</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.12</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.13.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">Y</td><td align="left"> + </td></tr><tr><td align="left">20.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.2</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3</td><td align="left">Utility components</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.1</td><td align="left">Operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.2</td><td align="left">Swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.3</td><td align="left"><code class="code">forward</code> and <code class="code">move</code> helpers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.4</td><td align="left">Function template <code class="code">declval</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.3.5</td><td align="left">Pairs</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.3.5.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.3.5.2</td><td align="left">Class template <code class="code">pair</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.3.5.3</td><td align="left">Tuple-like access to <code class="code">pair</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.3.5.4</td><td align="left"><code class="code">pair</code> range access</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.3.5.5</td><td align="left">Piecewise construction</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.4</td><td align="left">Tuples</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.4.1</td><td align="left">In general</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.4.2</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">Partial</td><td align="left">Missing constexpr and range access</td></tr><tr><td align="left">20.5</td><td align="left">Class template <code class="code">bitset</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.6</td><td align="left">Compile-time rational arithmetic</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.6.1</td><td align="left">Class template <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.2</td><td align="left">Arithmetic on <code class="code">ratio</code> types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.3</td><td align="left">Comparison of <code class="code">ratio</code> types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.6.4</td><td align="left">SI types for <code class="code">ratio</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7</td><td align="left">Metaprogramming and type traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.2</td><td align="left">Header <code class="code"><type_traits></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.7.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.4</td><td align="left">Unary Type Traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.4.1</td><td align="left">Primary type categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.4.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.7.4.3</td><td align="left">Type properties</td><td align="left">Partial</td><td align="left">Missing is_trivially_copyable, is_literal_type, is_nothrow_constructible</td></tr><tr><td align="left">20.7.5</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.7.6</td><td align="left">Transformations between types</td><td align="left">Partial</td><td align="left">Missing underlying_type</td></tr><tr><td align="left">20.7.6.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.6.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.6.3</td><td align="left">Sign modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.6.4</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.6.5</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.7.6.6</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8</td><td align="left">Function objects</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.1</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.3</td><td align="left">Base</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.4</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.5</td><td align="left">Arithmetic operation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.6</td><td align="left">Comparisons</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.7</td><td align="left">Logical operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.8</td><td align="left">Bitwise operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.9</td><td align="left">Negators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.10</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.11</td><td align="left">Adaptors for pointers to functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.12</td><td align="left">Adaptors for pointers to members</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.14</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.8.14.1</td><td align="left">Class <code class="code">bad_function_call</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.14.2</td><td align="left">Class template <code class="code">function</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.15</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9</td><td align="left">Memory</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.1</td><td align="left">Allocator argument tag</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.2</td><td align="left"><code class="code">uses_allocator</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.3</td><td align="left">Pointer traits</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.4</td><td align="left">Allocator traits</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.9.5</td><td align="left">The default allocator</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.6</td><td align="left">Scoped allocator adaptor</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.6.1</td><td align="left">Scoped allocator adaptor member types</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.6.2</td><td align="left">Scoped allocator adaptor constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.6.3</td><td align="left">Scoped allocator adaptor members</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.9.7</td><td align="left">Raw storage iterator</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.8</td><td align="left">Temporary buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.9</td><td align="left">Specialized algorithms</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.9.1</td><td align="left"><code class="code">addressof</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.9.9.2</td><td align="left"><code class="code">uninitialized_copy</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.9.3</td><td align="left"><code class="code">uninitialized_fill</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.9.4</td><td align="left"><code class="code">uninitialized_fill_n</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.10</td><td align="left">Class template <code class="code">unique_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.11</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.11.1</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.11.2</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left">Y</td><td align="left"> <p> Uses code from <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>. - </p> - </td></tr><tr><td align="left">20.8.13.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13.4</td><td align="left">Class template <code class="code">owner_less</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.8.13.5</td><td align="left">Class template <code class="code">emable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.13.6</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.8.13.7</td><td align="left">Pointer safety</td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.8.14</td><td align="left">Align</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.8.15</td><td align="left">C library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.1</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.2.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.2.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.9.2.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.3</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.9.4</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.9.5</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.9.5.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5.2</td><td align="left">Class <code class="code">monotonic_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.5.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </p> + </td></tr><tr><td align="left">20.9.11.3</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.9.11.4</td><td align="left">Class template <code class="code">emable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.9.11.5</td><td align="left"><code class="code">shared_ptr</code> atomic access</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">20.9.11.6</td><td align="left">Hash support</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">20.9.12</td><td align="left">Pointer safety</td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.9.13</td><td align="left">Align</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">20.9.16</td><td align="left">C library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10</td><td align="left">Time utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.1</td><td align="left">Clock requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.2</td><td align="left">Time-related traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.2.1</td><td align="left"><code class="code">treat_as_floating_point</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.2.2</td><td align="left"><code class="code">duration_values</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.10.2.3</td><td align="left">Specializations of <code class="code">common_type</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.3</td><td align="left">Class template <code class="code">duration</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.10.4</td><td align="left">Class template <code class="code">time_point</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">20.10.5</td><td align="left">Clocks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">20.10.5.1</td><td align="left">Class <code class="code">system_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.5.2</td><td align="left">Class <code class="code">monotonic_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.10.5.3</td><td align="left">Class <code class="code">high_resolution_clock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">20.11</td><td align="left">Date and time functions</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">20.12</td><td align="left">Class <code class="code">type_index</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>21</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Strings</em></span> - </td></tr><tr><td align="left">21.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2</td><td align="left">Character traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.2.1</td><td align="left">Character traits requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.2</td><td align="left">traits typedef</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.3</td><td align="left"><code class="code">char_traits</code> specializations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.2.3.1</td><td align="left">struct <code class="code">char_traits<char></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.2.3.2</td><td align="left">struct <code class="code">char_traits<char16_t></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.2.3.3</td><td align="left">struct <code class="code">char_traits<char32_t></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.2.3.4</td><td align="left">struct <code class="code">char_traits<wchar_t></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.3</td><td align="left">String classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.4</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.5</td><td align="left">Numeric Conversions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.6</td><td align="left">Null-terminated sequence utilities</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left"> + </td></tr><tr><td align="left">21.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2</td><td align="left">Character traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.2.1</td><td align="left">Character traits requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.2</td><td align="left">traits typedefs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.2.3</td><td align="left"><code class="code">char_traits</code> specializations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">21.2.3.1</td><td align="left">struct <code class="code">char_traits<char></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.2.3.2</td><td align="left">struct <code class="code">char_traits<char16_t></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.2.3.3</td><td align="left">struct <code class="code">char_traits<char32_t></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.2.3.4</td><td align="left">struct <code class="code">char_traits<wchar_t></code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">21.3</td><td align="left">String classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.4</td><td align="left">Class template <code class="code">basic_string</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.5</td><td align="left">Numeric Conversions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.6</td><td align="left">Hash support</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">21.7</td><td align="left">Null-terminated sequence utilities</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left"> <span class="emphasis"><em>22</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Localization</em></span> - </td></tr><tr><td align="left">22.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2</td><td align="left">Header <code class="code"><locale></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3</td><td align="left">Locales</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.1</td><td align="left">Class <code class="code">locale</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.2</td><td align="left"><code class="code">locale</code> globals</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.3</td><td align="left">Convenience interfaces</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.3.1</td><td align="left">Character classification</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.3.2</td><td align="left">Conversions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.3.2.1</td><td align="left">Character</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.3.3.2.2</td><td align="left">String</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.3.3.2.3</td><td align="left">Buffer</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">22.4</td><td align="left">Standard locale categories</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.1</td><td align="left"><code class="code">ctype</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.2</td><td align="left">Numeric</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.2.1</td><td align="left"><code class="code">num_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.2.2</td><td align="left"><code class="code">num_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.3</td><td align="left"><code class="code">num_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.4</td><td align="left"><code class="code">collate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5</td><td align="left">Time</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.5.1</td><td align="left"><code class="code">time_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.2</td><td align="left"><code class="code">time_get_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.3</td><td align="left"><code class="code">time_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.3</td><td align="left"><code class="code">time_put_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6</td><td align="left">Monetary</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.6.1</td><td align="left"><code class="code">money_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.2</td><td align="left"><code class="code">money_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.3</td><td align="left"><code class="code">money_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.4</td><td align="left"><code class="code">money_punct_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.7</td><td align="left"><code class="code">messages</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.8</td><td align="left">Program-defined facets</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.5</td><td align="left">Standard code conversion facets</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">22.6</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">22.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.2</td><td align="left">Header <code class="code"><locale></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3</td><td align="left">Locales</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.1</td><td align="left">Class <code class="code">locale</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.2</td><td align="left"><code class="code">locale</code> globals</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.3</td><td align="left">Convenience interfaces</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.3.1</td><td align="left">Character classification</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.3.3.2</td><td align="left">Conversions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.3.3.2.1</td><td align="left">Character conversions</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.3.3.2.2</td><td align="left"><code class="code">string</code> conversions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.3.3.2.3</td><td align="left">Buffer conversions</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">22.4</td><td align="left">Standard <code class="code">locale</code> categories</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.1</td><td align="left">The <code class="code">ctype</code> category</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.2</td><td align="left">The numeric category</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.2.1</td><td align="left"><code class="code">num_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.2.2</td><td align="left"><code class="code">num_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.3</td><td align="left">The numeric punctuation facet</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.4</td><td align="left">The collate category</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5</td><td align="left">The time category</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.5.1</td><td align="left">Class template <code class="code">time_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.2</td><td align="left">Class template <code class="code">time_get_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.3</td><td align="left">Class template <code class="code">time_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.5.3</td><td align="left">Class template <code class="code">time_put_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6</td><td align="left">The monetary category</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">22.4.6.1</td><td align="left">Class template <code class="code">money_get</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.2</td><td align="left">Class template <code class="code">money_put</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.3</td><td align="left">Class template <code class="code">money_punct</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.6.4</td><td align="left">Class template <code class="code">money_punct_byname</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.7</td><td align="left">The message retrieval category</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">22.4.8</td><td align="left">Program-defined facets</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">22.5</td><td align="left">Standard code conversion facets</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">22.6</td><td align="left">C Library Locales</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>23</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Containers</em></span> - </td></tr><tr bgcolor="#B0B0B0"><td align="left">23.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr><td align="left">23.2</td><td align="left">Container requirements</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">23.2.1</td><td align="left">General requirements</td><td align="left">Partial</td><td align="left">Missing construct_element</td></tr><tr><td align="left">23.2.2</td><td align="left">Data races</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3</td><td align="left">Sequence containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.1</td><td align="left">Class template <code class="code">array</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">23.3.2</td><td align="left">Class template <code class="code">deque</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.3</td><td align="left">Class template <code class="code">forward_list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.4</td><td align="left">Class template <code class="code">list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5</td><td align="left">Adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.5.1</td><td align="left">Class template <code class="code">queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5.2</td><td align="left">Class template <code class="code">priority_queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5.3</td><td align="left">Class template <code class="code">stack</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.6</td><td align="left">Class template <code class="code">vector</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.7</td><td align="left">Class <code class="code">vector<bool></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1</td><td align="left">Class template <code class="code">map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.2</td><td align="left">Class template <code class="code">multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.3</td><td align="left">Class template <code class="code">set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Unordered associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.5.1</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.2</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.4</td><td align="left">Class template <code class="code">unordered_multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">23.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2</td><td align="left">Container requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.2.1</td><td align="left">General container requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.2</td><td align="left">Data races</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.3</td><td align="left">Sequence containers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.4</td><td align="left">Associative containers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.2.5</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3</td><td align="left">Sequence containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.1</td><td align="left">Class template <code class="code">array</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">23.3.2</td><td align="left">Class template <code class="code">deque</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.3</td><td align="left">Class template <code class="code">forward_list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.4</td><td align="left">Class template <code class="code">list</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5</td><td align="left">Container adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.3.5.1</td><td align="left">Class template <code class="code">queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5.2</td><td align="left">Class template <code class="code">priority_queue</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.5.3</td><td align="left">Class template <code class="code">stack</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.6</td><td align="left">Class template <code class="code">vector</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.3.7</td><td align="left">Class <code class="code">vector<bool></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4</td><td align="left">Associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.4.1</td><td align="left">Class template <code class="code">map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.2</td><td align="left">Class template <code class="code">multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.3</td><td align="left">Class template <code class="code">set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.4.4</td><td align="left">Class template <code class="code">multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5</td><td align="left">Unordered associative containers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">23.5.1</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.2</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">23.5.4</td><td align="left">Class template <code class="code">unordered_multiset</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>24</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Iterators</em></span> - </td></tr><tr bgcolor="#B0B0B0"><td align="left">24.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr bgcolor="#C8B0B0"><td align="left">24.2</td><td align="left">Iterator concepts</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">24.3</td><td align="left">Header <code class="code"><iterator></code> synopsis</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr><td align="left">24.4</td><td align="left">Iterator operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5</td><td align="left">Predefined iterators and Iterator adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.5.1</td><td align="left">Reverse iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.2</td><td align="left">Insert iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.3</td><td align="left">Move iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6</td><td align="left">Stream iterators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.6.1</td><td align="left">Class template <code class="code">istream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.2</td><td align="left">Class template <code class="code">ostream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.3</td><td align="left">Class template <code class="code">istreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.4</td><td align="left">Class template <code class="code">ostreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.7</td><td align="left">Insert iterators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.7.1</td><td align="left">Class template <code class="code">back_insert_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.7.3</td><td align="left">Class template <code class="code">front_insert_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.7.5</td><td align="left">Class template <code class="code">insert_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">24.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.2</td><td align="left">Iterator requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.3</td><td align="left">Header <code class="code"><iterator></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.4</td><td align="left">Iterator primitives</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5</td><td align="left">Iterator adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.5.1</td><td align="left">Reverse iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.2</td><td align="left">Insert iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.5.3</td><td align="left">Move iterators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6</td><td align="left">Stream iterators</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">24.6.1</td><td align="left">Class template <code class="code">istream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.2</td><td align="left">Class template <code class="code">ostream_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.3</td><td align="left">Class template <code class="code">istreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">24.6.4</td><td align="left">Class template <code class="code">ostreambuf_iterator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">24.6.5</td><td align="left">range access</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>25</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Algorithms</em></span> - </td></tr><tr bgcolor="#B0B0B0"><td align="left">25.1</td><td align="left">General</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr><td align="left">25.2</td><td align="left">Header <code class="code"><algorithm></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.3</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.4</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.5</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.6</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">25.1</td><td align="left">General</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">25.2</td><td align="left">Non-modifying sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.3</td><td align="left">Mutating sequence operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.4</td><td align="left">Sorting and related operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">25.5</td><td align="left">C library algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>26</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Numerics</em></span> - </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">26.5.1</td><td align="left">Header <code class="code"><random></code> synopsis</td><td align="left">Partial</td><td align="left">Missing concepts</td></tr><tr bgcolor="#C8B0B0"><td align="left">26.5.2</td><td align="left">Concepts and related requirements</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">26.5.3</td><td align="left">Random number engines</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.4</td><td align="left">Random number engine adaptors</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.4.1</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.4.2</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.4.3</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.7</td><td align="left">Utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.7.2</td><td align="left">Function template generate_canonical</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8</td><td align="left">Random number distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.1</td><td align="left">Uniform distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.1.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.1.2</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2</td><td align="left">Bernoulli distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3</td><td align="left">Poisson distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4</td><td align="left">Normal distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5</td><td align="left">Sampling distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.2</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.3</td><td align="left">Class template <code class="code">piecewise_linear_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.6.1</td><td align="left">Header <code class="code"><valarray></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.6</td><td align="left">Class <code class="code">gslice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.7.1</td><td align="left"><code class="code">accumulate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.2</td><td align="left"><code class="code">inner_product</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.3</td><td align="left"><code class="code">partial_sum</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.4</td><td align="left"><code class="code">adjacent_difference</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.5</td><td align="left">iota</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">26.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.2</td><td align="left">Numeric type requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.3</td><td align="left">The floating-point environment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.4</td><td align="left">Complex numbers</td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5</td><td align="left">Random number generation</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.1</td><td align="left">Requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.2</td><td align="left">Header <code class="code"><random></code> synopsis</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.3</td><td align="left">Random number engine class templates</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.3.1</td><td align="left">Class template <code class="code">linear_congruential_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.3.2</td><td align="left">Class template <code class="code">mersenne_twister_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.3.3</td><td align="left">Class template <code class="code">subtract_with_carry_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.4</td><td align="left">Random number engine adaptor class templates</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.4.1</td><td align="left">Class template <code class="code">discard_block_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.4.2</td><td align="left">Class template <code class="code">independent_bits_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.4.3</td><td align="left">Class template <code class="code">shuffle_order_engine</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.5</td><td align="left">Engines and engine adaptors with predefined parameters</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">26.5.7</td><td align="left">Utilities</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.7.1</td><td align="left">Class <code class="code">seed_seq</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.7.2</td><td align="left">Function template <code class="code">generate_canonical</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8</td><td align="left">Random number distribution class templates</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.1</td><td align="left">Uniform distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.1.1</td><td align="left">Class template <code class="code">uniform_int_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.1.2</td><td align="left">Class template <code class="code">uniform_real_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2</td><td align="left">Bernoulli distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.1</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.2</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.2.4</td><td align="left">Class template <code class="code">negative_binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3</td><td align="left">Poisson distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.1</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.2</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.3</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.4</td><td align="left">Class template <code class="code">weibull_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.3.5</td><td align="left">Class template <code class="code">extreme_value_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4</td><td align="left">Normal distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.1</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.2</td><td align="left">Class template <code class="code">lognormal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.3</td><td align="left">Class template <code class="code">chi_squared_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.4</td><td align="left">Class template <code class="code">cauchy_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.5</td><td align="left">Class template <code class="code">fisher_f_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.4.6</td><td align="left">Class template <code class="code">student_t_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5</td><td align="left">Sampling distributions</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.1</td><td align="left">Class template <code class="code">discrete_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.2</td><td align="left">Class template <code class="code">piecewise_constant_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.5.8.5.3</td><td align="left">Class template <code class="code">piecewise_linear_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6</td><td align="left">Numeric arrays</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.6.1</td><td align="left">Header <code class="code"><valarray></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.2</td><td align="left">Class template <code class="code">valarray</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.3</td><td align="left"><code class="code">valarray</code> non-member operations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.4</td><td align="left">Class <code class="code">slice</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.5</td><td align="left">Class template <code class="code">slice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.6</td><td align="left">The <code class="code">gslice</code> class</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.7</td><td align="left">Class template <code class="code">gslice_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.8</td><td align="left">Class template <code class="code">mask_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.6.9</td><td align="left">Class template <code class="code">indirect_array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">26.6.10</td><td align="left"><code class="code">valarray</code> range access</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">26.7</td><td align="left">Generalized numeric operations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">26.7.1</td><td align="left"><code class="code">accumulate</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.2</td><td align="left"><code class="code">inner_product</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.3</td><td align="left"><code class="code">partial_sum</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.4</td><td align="left"><code class="code">adjacent_difference</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.7.5</td><td align="left">iota</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">26.8</td><td align="left">C Library</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>27</em></span> </td><td colspan="3" align="left"> - <span class="emphasis"><em>Input/output</em></span> - </td></tr><tr><td align="left">27.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2.1</td><td align="left">Imbue limitations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2.2</td><td align="left">Positioning type limitations</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">27.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">27.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4.1</td><td align="left">Narrow stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4.2</td><td align="left">Wide stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.5</td><td align="left">Iostreams base classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.7</td><td align="left">Formatting and manipulators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.8</td><td align="left">String-based streams</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.9</td><td align="left">File-based streams</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"> + <span class="emphasis"><em>Input/output library</em></span> + </td></tr><tr><td align="left">27.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2</td><td align="left">Iostreams requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2.1</td><td align="left">Imbue Limitations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.2.2</td><td align="left">Positioning Type Limitations</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">27.2.3</td><td align="left">Thread safety</td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">27.3</td><td align="left">Forward declarations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4</td><td align="left">Standard iostream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4.1</td><td align="left">Narrow stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">27.4.2</td><td align="left">Wide stream objects</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">27.5</td><td align="left">Iostreams base classes</td><td align="left">Partial</td><td align="left">Missing move and swap operations</td></tr><tr><td align="left">27.6</td><td align="left">Stream buffers</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">27.7</td><td align="left">Formatting and manipulators</td><td align="left">Partial</td><td align="left">Missing move and swap operations</td></tr><tr bgcolor="#B0B0B0"><td align="left">27.8</td><td align="left">String-based streams</td><td align="left">Partial</td><td align="left">Missing move and swap operations</td></tr><tr bgcolor="#B0B0B0"><td align="left">27.9</td><td align="left">File-based streams</td><td align="left">Partial</td><td align="left">Missing move and swap operations</td></tr><tr><td align="left"> <span class="emphasis"><em>28</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Regular expressions</em></span> - </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.01</td><td align="left">General</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.02</td><td align="left">Definitions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.03</td><td align="left">Requirements</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.04</td><td align="left">Regular expressions summary</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.05</td><td align="left">Header <code class="code"><regex></code> synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">28.06</td><td align="left">Namespace <code class="code">std::regex_constants</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.07</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.08</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.09</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.10</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.11</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.12</td><td align="left">Regular expression algorithms</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.13</td><td align="left">Regular expression Iterators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.14</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.1</td><td align="left">General</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.2</td><td align="left">Definitions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.3</td><td align="left">Requirements</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.4</td><td align="left">Header <code class="code"><regex></code> synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">28.5</td><td align="left">Namespace <code class="code">std::regex_constants</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">28.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">28.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.11</td><td align="left">Regular expression algorithms</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.12</td><td align="left">Regular expression Iterators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">28.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"> <span class="emphasis"><em>29</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Atomic operations</em></span> @@ -214,11 +214,11 @@ particular release. <span class="emphasis"><em>30</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Thread support</em></span> - </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.3</td><td align="left">Threads</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.3.1</td><td align="left">Class <code class="code">thread</code></td><td align="left">Partial</td><td align="left">Missing futures</td></tr><tr><td align="left">30.3.2</td><td align="left">Namespace <code class="code">this_thread</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4</td><td align="left">Mutual exclusion</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.1</td><td align="left">Mutex requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.1.1</td><td align="left">Class <code class="code">mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.1.2</td><td align="left">Class <code class="code">recursive_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.2</td><td align="left">Timed mutex requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.2.1</td><td align="left">Class <code class="code">timed_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.2.2</td><td align="left">Class <code class="code">recursive_timed_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.3</td><td align="left">Locks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.3.1</td><td align="left">Class template <code class="code">lock_guard</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.3.2</td><td align="left">Class template <code class="code">unique_lock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.4</td><td align="left">Generic locking algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.5</td><td align="left">Call once</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.5.1</td><td align="left"><code class="code">once_flag</code></td><td align="left">Partial</td><td align="left">Missing constexpr</td></tr><tr><td align="left">30.4.5.2</td><td align="left"><code class="code">call_once</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.5</td><td align="left">Condition variables</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.5.1</td><td align="left">Class <code class="code">condition_variable</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.5.2</td><td align="left">Class <code class="code">condition_variable_any</code></td><td align="left">Partial</td><td align="left"> </td></tr><tr><td align="left">30.6</td><td align="left">Futures</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.1</td><td align="left">Overview</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.2</td><td align="left">Error handling</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.3</td><td align="left">Class <code class="code">future_error</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.4</td><td align="left">Class template <code class="code">unique_future</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.5</td><td align="left">Class template <code class="code">shared_future</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.6</td><td align="left">Class template <code class="code">promise</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.7</td><td align="left">Allocator templates</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.8</td><td align="left">Class template <code class="code">packaged_task</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"> + </td></tr><tr><td align="left">30.1</td><td align="left">General</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.2</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.3</td><td align="left">Threads</td><td align="left"> </td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.3.1</td><td align="left">Class <code class="code">thread</code></td><td align="left">Partial</td><td align="left"><code class="code">thread::id</code> is not trivially copyable</td></tr><tr><td align="left">30.3.2</td><td align="left">Namespace <code class="code">this_thread</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4</td><td align="left">Mutual exclusion</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.1</td><td align="left">Mutex requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.1.1</td><td align="left">Class <code class="code">mutex</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">30.4.1.2</td><td align="left">Class <code class="code">recursive_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.2</td><td align="left">Timed mutex requirements</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.2.1</td><td align="left">Class <code class="code">timed_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.2.2</td><td align="left">Class <code class="code">recursive_timed_mutex</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.3</td><td align="left">Locks</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.3.1</td><td align="left">Class template <code class="code">lock_guard</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.3.2</td><td align="left">Class template <code class="code">unique_lock</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.4</td><td align="left">Generic locking algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.4.5</td><td align="left">Call once</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.4.5.1</td><td align="left"><code class="code">once_flag</code></td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">30.4.5.2</td><td align="left"><code class="code">call_once</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.5</td><td align="left">Condition variables</td><td align="left">Partial</td><td align="left">Missing notify_all_at_thread_exit</td></tr><tr><td align="left">30.5.1</td><td align="left">Class <code class="code">condition_variable</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.5.2</td><td align="left">Class <code class="code">condition_variable_any</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.6</td><td align="left">Futures</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.6.1</td><td align="left">Overview</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">30.6.2</td><td align="left">Error handling</td><td align="left">Y</td><td align="left">Missing constexpr</td></tr><tr><td align="left">30.6.3</td><td align="left">Class <code class="code">future_error</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">30.6.4</td><td align="left">Associated asynchronous state</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.6.5</td><td align="left">Class template <code class="code">promise</code></td><td align="left">Partial</td><td align="left">Missing <code class="code">allocator_arg_t</code> and set_*_at_thread_exit</td></tr><tr bgcolor="#B0B0B0"><td align="left">30.6.6</td><td align="left">Class template <code class="code">future</code></td><td align="left">Partial</td><td align="left">Missing future_status</td></tr><tr bgcolor="#B0B0B0"><td align="left">30.6.7</td><td align="left">Class template <code class="code">shared_future</code></td><td align="left">Partial</td><td align="left">Missing future_status</td></tr><tr bgcolor="#C8B0B0"><td align="left">30.6.8</td><td align="left">Class template <code class="code">atomic_future</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">30.6.9</td><td align="left">Function template <code class="code">async</code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#B0B0B0"><td align="left">30.6.10</td><td align="left">Class template <code class="code">packaged_task</code></td><td align="left">Partial</td><td align="left">Missing <code class="code">allocator_arg_t</code> and make_ready_at_thread_exit</td></tr><tr><td align="left"> <span class="emphasis"><em>Appendix D</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Compatibility features</em></span> - </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with bool operand</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">static</code> keyword</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.3</td><td align="left">Access declarations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.4</td><td align="left">Implicit conversion from const strings</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.5</td><td align="left">C standard library headers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.6</td><td align="left">Old iostreams members</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.7</td><td align="left">char* streams</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.8</td><td align="left">Binders</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.9</td><td align="left"><code class="code">auto_ptr</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.10</td><td align="left">Iterator primitives</td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" title="C++ TR1"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p> + </td></tr><tr><td align="left">D.1</td><td align="left">Increment operator with <code class="code">bool</code> operand</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.2</td><td align="left"><code class="code">static</code> keyword</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.3</td><td align="left">Access declarations</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.4</td><td align="left"><code class="code">register</code> keyword</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.5</td><td align="left">Dynamic exception specifications</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.6</td><td align="left">C standard library headers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.7</td><td align="left">Old iostreams members</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.8</td><td align="left">char* streams</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.9</td><td align="left">Binders</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">D.10</td><td align="left"><code class="code">auto_ptr</code></td><td align="left"> </td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" title="C++ TR1"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr1"></a>C++ TR1</h3></div></div></div><p> This table is based on the table of contents of ISO/IEC DTR 19768 Doc No: N1836=05-0096 Date: 2005-06-24 Draft Technical Report on C++ Library Extensions @@ -229,11 +229,11 @@ In this implementation the header names are prefixed by </p><p> This page describes the TR1 support in mainline GCC SVN, not in any particular release. -</p><div class="table"><a id="id623542"></a><p class="title"><b>Table 1.3. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code"><functional></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code"><memory></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left"> +</p><div class="table"><a id="id449588"></a><p class="title"><b>Table 1.3. C++ TR1 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR1 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"><span class="emphasis"><em>2</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>General Utilities</em></span></td></tr><tr><td align="left">2.1</td><td align="left">Reference wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.1</td><td align="left">Additions to header <code class="code"><functional></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2</td><td align="left">Class template <code class="code">reference_wrapper</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.1.2.1</td><td align="left"><code class="code">reference_wrapper</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.2</td><td align="left"><code class="code">reference_wrapper</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.3</td><td align="left"><code class="code">reference_wrapper</code> access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.4</td><td align="left"><code class="code">reference_wrapper</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.1.2.5</td><td align="left"><code class="code">reference_wrapper</code> helper functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2</td><td align="left">Smart pointers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.1</td><td align="left">Additions to header <code class="code"><memory></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.2</td><td align="left">Class <code class="code">bad_weak_ptr</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3</td><td align="left">Class template <code class="code">shared_ptr</code></td><td align="left"> </td><td align="left"> <p> Uses code from <a class="ulink" href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top">boost::shared_ptr</a>. - </p> + </p> </td></tr><tr><td align="left">2.2.3.1</td><td align="left"><code class="code">shared_ptr</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.2</td><td align="left"><code class="code">shared_ptr</code> destructor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.3</td><td align="left"><code class="code">shared_ptr</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.4</td><td align="left"><code class="code">shared_ptr</code> modifiers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.5</td><td align="left"><code class="code">shared_ptr</code> observers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.6</td><td align="left"><code class="code">shared_ptr</code> comparison</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.7</td><td align="left"><code class="code">shared_ptr</code> I/O</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.8</td><td align="left"><code class="code">shared_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.9</td><td align="left"><code class="code">shared_ptr</code> casts</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.3.10</td><td align="left"><code class="code">get_deleter</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4</td><td align="left">Class template <code class="code">weak_ptr</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">2.2.4.1</td><td align="left"><code class="code">weak_ptr</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.2</td><td align="left"><code class="code">weak_ptr</code> destructor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.3</td><td align="left"><code class="code">weak_ptr</code> assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.4</td><td align="left"><code class="code">weak_ptr</code> modifiers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.5</td><td align="left"><code class="code">weak_ptr</code> observers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.6</td><td align="left"><code class="code">weak_ptr</code> comparison</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.4.7</td><td align="left"><code class="code">weak_ptr</code> specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">2.2.5</td><td align="left">Class template <code class="code">enable_shared_from_this</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>3</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Function Objects</em></span></td></tr><tr><td align="left">3.1</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.2</td><td align="left">Additions to <code class="code"><functional> synopsis</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.3</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.4</td><td align="left">Function return types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.5</td><td align="left">Function template <code class="code">mem_fn</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6</td><td align="left">Function object binders</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.6.1</td><td align="left">Class template <code class="code">is_bind_expression</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6.2</td><td align="left">Class template <code class="code">is_placeholder</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6.3</td><td align="left">Function template <code class="code">bind</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.6.4</td><td align="left">Placeholders</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7</td><td align="left">Polymorphic function wrappers</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.1</td><td align="left">Class <code class="code">bad_function_call<code class="code"></code></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.1.1</td><td align="left"><code class="code">bad_function_call</code> constructor</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2</td><td align="left">Class template <code class="code">function</code></td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">3.7.2.1</td><td align="left"><code class="code">function</code> construct/copy/destroy</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.2</td><td align="left"><code class="code">function</code> modifiers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.3</td><td align="left"><code class="code">function</code> capacity</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.4</td><td align="left"><code class="code">function</code> invocation</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.5</td><td align="left"><code class="code">function</code> target access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.6</td><td align="left">undefined operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.7</td><td align="left">null pointer comparison operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">3.7.2.8</td><td align="left">specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>4</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Metaprogramming and type traits</em></span></td></tr><tr><td align="left">4.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.2</td><td align="left">Header <code class="code"><type_traits></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.3</td><td align="left">Helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.4</td><td align="left">General Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.5</td><td align="left">Unary Type Traits</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.5.1</td><td align="left">Primary Type Categories</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.5.2</td><td align="left">Composite type traits</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.5.3</td><td align="left">Type properties</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.6</td><td align="left">Relationships between types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7</td><td align="left">Transformations between types</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">4.7.1</td><td align="left">Const-volatile modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7.2</td><td align="left">Reference modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7.3</td><td align="left">Array modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.7.4</td><td align="left">Pointer modifications</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.8</td><td align="left">Other transformations</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">4.9</td><td align="left">Implementation requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>5</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Numerical Facilities</em></span></td></tr><tr><td align="left">5.1</td><td align="left">Random number generation</td><td align="left"> </td><td align="left"> </td></tr><tr><td align="left">5.1.1</td><td align="left">Requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.2</td><td align="left">Header <code class="code"><random></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.3</td><td align="left">Class template <code class="code">variate_generator</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4</td><td align="left">Random number engine class templates</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.1</td><td align="left">Class template <code class="code">linear_congruential</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.2</td><td align="left">Class template <code class="code">mersenne_twister</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.3</td><td align="left">Class template <code class="code">subtract_with_carry</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.4</td><td align="left">Class template <code class="code">subtract_with_carry_01</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.5</td><td align="left">Class template <code class="code">discard_block</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.4.6</td><td align="left">Class template <code class="code">xor_combine</code></td><td align="left">Y</td><td align="left">operator()() per N2079</td></tr><tr><td align="left">5.1.5</td><td align="left">Engines with predefined parameters</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.6</td><td align="left">Class <code class="code">random_device</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7</td><td align="left">Random distribution class templates</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.1</td><td align="left">Class template <code class="code">uniform_int</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.2</td><td align="left">Class <code class="code">bernoulli_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.3</td><td align="left">Class template <code class="code">geometric_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.4</td><td align="left">Class template <code class="code">poisson_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.5</td><td align="left">Class template <code class="code">binomial_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.6</td><td align="left">Class template <code class="code">uniform_real</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.7</td><td align="left">Class template <code class="code">exponential_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.8</td><td align="left">Class template <code class="code">normal_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.1.7.9</td><td align="left">Class template <code class="code">gamma_distribution</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2</td><td align="left">Mathematical special functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1</td><td align="left">Additions to header <code class="code"><cmath></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.1</td><td align="left">associated Laguerre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.2</td><td align="left">associated Legendre functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.3</td><td align="left">beta function</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.4</td><td align="left">(complete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.5</td><td align="left">(complete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.6</td><td align="left">(complete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.7</td><td align="left">confluent hypergeometric functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.8</td><td align="left">regular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.9</td><td align="left">cylindrical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.10</td><td align="left">irregular modified cylindrical Bessel functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.11</td><td align="left">cylindrical Neumann functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.12</td><td align="left">(incomplete) elliptic integral of the first kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.13</td><td align="left">(incomplete) elliptic integral of the second kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.14</td><td align="left">(incomplete) elliptic integral of the third kind</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.15</td><td align="left">exponential integral</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.16</td><td align="left">Hermite polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.17</td><td align="left">hypergeometric functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.18</td><td align="left">Laguerre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.19</td><td align="left">Legendre polynomials</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.20</td><td align="left">Riemann zeta function</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.21</td><td align="left">spherical Bessel functions (of the first kind)</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.22</td><td align="left">spherical associated Legendre functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.1.23</td><td align="left">spherical Neumann functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">5.2.2</td><td align="left">Additions to header <code class="code"><math.h></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>6</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Containers</em></span></td></tr><tr><td align="left">6.1</td><td align="left">Tuple types</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.1</td><td align="left">Header <code class="code"><tuple></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.2</td><td align="left">Additions to header <code class="code"><utility></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3</td><td align="left">Class template <code class="code">tuple</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.1</td><td align="left">Construction</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.2</td><td align="left">Tuple creation functions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.3</td><td align="left">Tuple helper classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.4</td><td align="left">Element access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.3.5</td><td align="left">Relational operators</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.1.4</td><td align="left">Pairs</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2</td><td align="left">Fixed size array</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.1</td><td align="left">Header <code class="code"><array></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2</td><td align="left">Class template <code class="code">array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.1</td><td align="left"><code class="code">array</code> constructors, copy, and assignment</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.2</td><td align="left"><code class="code">array</code> specialized algorithms</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.3</td><td align="left"><code class="code">array</code> size</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.4</td><td align="left">Zero sized <code class="code">array</code>s</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.2.2.5</td><td align="left">Tuple interface to class template <code class="code">array</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3</td><td align="left">Unordered associative containers</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.1</td><td align="left">Unordered associative container requirements</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.1.1</td><td align="left">Exception safety guarantees</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.2</td><td align="left">Additions to header <code class="code"><functional></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.3</td><td align="left">Class template <code class="code">hash</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4</td><td align="left">Unordered associative container classes</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.1</td><td align="left">Header <code class="code"><unordered_set></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.2</td><td align="left">Header <code class="code"><unordered_map></code> synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.3</td><td align="left">Class template <code class="code">unordered_set</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.1</td><td align="left"><code class="code">unordered_set</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.3.2</td><td align="left"><code class="code">unordered_set</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4</td><td align="left">Class template <code class="code">unordered_map</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.1</td><td align="left"><code class="code">unordered_map</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.2</td><td align="left"><code class="code">unordered_map</code> element access</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.4.3</td><td align="left"><code class="code">unordered_map</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.5</td><td align="left">Class template <code class="code">unordered_multiset<code class="code"></code></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.1</td><td align="left"><code class="code">unordered_multiset</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.5.2</td><td align="left"><code class="code">unordered_multiset</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.6</td><td align="left">Class template <code class="code">unordered_multimap</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.1</td><td align="left"><code class="code">unordered_multimap</code> constructors</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">6.3.4.6.2</td><td align="left"><code class="code">unordered_multimap</code> swap</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>7</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>Regular Expressions</em></span></td></tr><tr bgcolor="#C8B0B0"><td align="left">7.1</td><td align="left">Definitions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.2</td><td align="left">Requirements</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.3</td><td align="left">Regular expressions summary</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.4</td><td align="left">Header <code class="code"><regex></code> synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5</td><td align="left">Namespace <code class="code">tr1::regex_constants</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.1</td><td align="left">Bitmask Type <code class="code">syntax_option_type</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.2</td><td align="left">Bitmask Type <code class="code">regex_constants::match_flag_type</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.5.3</td><td align="left">Implementation defined <code class="code">error_type</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.6</td><td align="left">Class <code class="code">regex_error</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.7</td><td align="left">Class template <code class="code">regex_traits</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8</td><td align="left">Class template <code class="code">basic_regex</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.1</td><td align="left"><code class="code">basic_regex</code> constants</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.2</td><td align="left"><code class="code">basic_regex</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.3</td><td align="left"><code class="code">basic_regex</code> assign</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.4</td><td align="left"><code class="code">basic_regex</code> constant operations</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.5</td><td align="left"><code class="code">basic_regex</code> locale</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.6</td><td align="left"><code class="code">basic_regex</code> swap</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.7</td><td align="left"><code class="code">basic_regex</code> non-member functions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.8.7.1</td><td align="left"><code class="code">basic_regex</code> non-member swap</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9</td><td align="left">Class template <code class="code">sub_match</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9.1</td><td align="left"><code class="code">sub_match</code> members</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.9.2</td><td align="left"><code class="code">sub_match</code> non-member operators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10</td><td align="left">Class template <code class="code">match_results</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.1</td><td align="left"><code class="code">match_results</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.2</td><td align="left"><code class="code">match_results</code> size</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.3</td><td align="left"><code class="code">match_results</code> element access</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.4</td><td align="left"><code class="code">match_results</code> formatting</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.5</td><td align="left"><code class="code">match_results</code> allocator</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.10.6</td><td align="left"><code class="code">match_results</code> swap</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11</td><td align="left">Regular expression algorithms</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.1</td><td align="left">exceptions</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.2</td><td align="left"><code class="code">regex_match</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.3</td><td align="left"><code class="code">regex_search</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.11.4</td><td align="left"><code class="code">regex_replace</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12</td><td align="left">Regular expression Iterators</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1</td><td align="left">Class template <code class="code">regex_iterator</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.1</td><td align="left"><code class="code">regex_iterator</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.2</td><td align="left"><code class="code">regex_iterator</code> comparisons</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.3</td><td align="left"><code class="code">regex_iterator</code> dereference</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.1.4</td><td align="left"><code class="code">regex_iterator</code> increment</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2</td><td align="left">Class template <code class="code">regex_token_iterator</code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.1</td><td align="left"><code class="code">regex_token_iterator</code> constructors</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.2</td><td align="left"><code class="code">regex_token_iterator</code> comparisons</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.3</td><td align="left"><code class="code">regex_token_iterator</code> dereference</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.12.2.4</td><td align="left"><code class="code">regex_token_iterator</code> increment</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">7.13</td><td align="left">Modified ECMAScript regular expression grammar</td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left"><span class="emphasis"><em>8</em></span></td><td colspan="3" align="left"><span class="emphasis"><em>C Compatibility</em></span></td></tr><tr><td align="left">8.1</td><td align="left">Additions to header <code class="code"><complex></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.2</td><td align="left">Function <code class="code">acos</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.3</td><td align="left">Function <code class="code">asin</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.4</td><td align="left">Function <code class="code">atan</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.5</td><td align="left">Function <code class="code">acosh</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.6</td><td align="left">Function <code class="code">asinh</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.7</td><td align="left">Function <code class="code">atanh</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.8</td><td align="left">Function <code class="code">fabs</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.1.9</td><td align="left">Additional Overloads</td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.2</td><td align="left">Header <code class="code"><ccomplex></code></td><td align="left">N</td><td align="left">DR 551</td></tr><tr bgcolor="#C8B0B0"><td align="left">8.3</td><td align="left">Header <code class="code"><complex.h></code></td><td align="left">N</td><td align="left">DR 551</td></tr><tr><td align="left">8.4</td><td align="left">Additions to header <code class="code"><cctype></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.4.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.4.2</td><td align="left">Function <code class="code">isblank</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.5</td><td align="left">Additions to header <code class="code"><ctype.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.6</td><td align="left">Header <code class="code"><cfenv></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.6.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.6.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.7</td><td align="left">Header <code class="code"><fenv.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.8</td><td align="left">Additions to header <code class="code"><cfloat></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.9</td><td align="left">Additions to header <code class="code"><float.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10</td><td align="left">Additions to header <code class="code"><ios></code></td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10.1</td><td align="left">Synopsis</td><td align="left">N</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.10.2</td><td align="left">Function <code class="code">hexfloat</code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">8.11</td><td align="left">Header <code class="code"><cinttypes></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.11.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left">DR 557</td></tr><tr><td align="left">8.11.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.12</td><td align="left">Header <code class="code"><inttypes.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.13</td><td align="left">Additions to header <code class="code"><climits></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.14</td><td align="left">Additions to header <code class="code"><limits.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr bgcolor="#C8B0B0"><td align="left">8.15</td><td align="left">Additions to header <code class="code"><locale></code></td><td align="left">N</td><td align="left"> </td></tr><tr><td align="left">8.16</td><td align="left">Additions to header <code class="code"><cmath></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.3</td><td align="left">Function template definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.16.4</td><td align="left">Additional overloads</td><td align="left">Y</td><td align="left">DR 568; DR 550</td></tr><tr><td align="left">8.17</td><td align="left">Additions to header <code class="code"><math.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.18</td><td align="left">Additions to header <code class="code"><cstdarg></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.19</td><td align="left">Additions to header <code class="code"><stdarg.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.20</td><td align="left">The header <code class="code"><cstdbool></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.21</td><td align="left">The header <code class="code"><stdbool.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.22</td><td align="left">The header <code class="code"><cstdint></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.22.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.22.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.23</td><td align="left">The header <code class="code"><stdint.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24</td><td align="left">Additions to header <code class="code"><cstdio></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.24.3</td><td align="left">Additional format specifiers</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.24.4</td><td align="left">Additions to header <code class="code"><stdio.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25</td><td align="left">Additions to header <code class="code"><cstdlib></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.3</td><td align="left">Function <code class="code">abs</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.25.4</td><td align="left">Function <code class="code">div</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.26</td><td align="left">Additions to header <code class="code"><stdlib.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.27</td><td align="left">Header <code class="code"><ctgmath></code></td><td align="left">Y</td><td align="left">DR 551</td></tr><tr><td align="left">8.28</td><td align="left">Header <code class="code"><tgmath.h></code></td><td align="left">Y</td><td align="left">DR 551</td></tr><tr><td align="left">8.29</td><td align="left">Additions to header <code class="code"><ctime></code></td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.30</td><td align="left">Additions to header <code class="code"><cwchar></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.30.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.30.2</td><td align="left">Definitions</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.30.3</td><td align="left">Additional wide format specifiers</td><td align="left">Y</td><td align="left">C library dependency</td></tr><tr><td align="left">8.31</td><td align="left">Additions to header <code class="code"><wchar.h></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.32</td><td align="left">Additions to header <code class="code"><cwctype></code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.32.1</td><td align="left">Synopsis</td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.32.2</td><td align="left">Function <code class="code">iswblank</code></td><td align="left">Y</td><td align="left"> </td></tr><tr><td align="left">8.33</td><td align="left">Additions to header <code class="code"><wctype.h></code></td><td align="left">Y</td><td align="left"> </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" title="C++ TR 24733"><div class="titlepage"><div><div><h3 class="title"><a id="status.iso.tr24733"></a>C++ TR 24733</h3></div></div></div><p> This table is based on the table of contents of ISO/IEC TR 24733 Date: 2009-08-28 @@ -242,7 +242,7 @@ decimal floating-point arithmetic </p><p> This page describes the TR 24733 support in mainline GCC SVN, not in any particular release. -</p><div class="table"><a id="id602015"></a><p class="title"><b>Table 1.4. C++ TR 24733 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> +</p><div class="table"><a id="id471043"></a><p class="title"><b>Table 1.4. C++ TR 24733 Implementation Status</b></p><div class="table-contents"><table summary="C++ TR 24733 Implementation Status" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Section</th><th align="left">Description</th><th align="left">Status</th><th align="left">Comments</th></tr></thead><tbody><tr><td align="left"> <span class="emphasis"><em>0</em></span> </td><td colspan="3" align="left"> <span class="emphasis"><em>Introduction</em></span> diff --git a/libstdc++-v3/doc/html/manual/streambufs.html b/libstdc++-v3/doc/html/manual/streambufs.html index db8445f2a94..277339d6e27 100644 --- a/libstdc++-v3/doc/html/manual/streambufs.html +++ b/libstdc++-v3/doc/html/manual/streambufs.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 25. Stream Buffers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="iostream_objects.html" title="Chapter 24. Iostream Objects" /><link rel="next" href="bk01pt11ch25s02.html" title="Buffering" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 25. Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="iostream_objects.html">Prev</a> </td><th width="60%" align="center">Part XI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Stream Buffers</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="io.html" title="Chapter 13. Input and Output" /><link rel="next" href="stringstreams.html" title="Memory Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Stream Buffers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><th width="60%" align="center">Chapter 13. Input and Output -</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 25. Stream Buffers"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.streambufs"></a>Chapter 25. Stream Buffers</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="bk01pt11ch25s02.html">Buffering</a></span></dt></dl></div><div class="sect1" title="Derived streambuf Classes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="io.streambuf.derived"></a>Derived streambuf Classes</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Stream Buffers"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.streambufs"></a>Stream Buffers</h2></div></div></div><div class="sect2" title="Derived streambuf Classes"><div class="titlepage"><div><div><h3 class="title"><a id="io.streambuf.derived"></a>Derived streambuf Classes</h3></div></div></div><p> </p><p>Creating your own stream buffers for I/O can be remarkably easy. If you are interested in doing so, we highly recommend two very excellent books: @@ -57,4 +57,81 @@ <code class="code">include/ext/*_filebuf.h</code>, and in this article by James Kanze: <a class="ulink" href="http://kanze.james.neuf.fr/articles/fltrsbf1.html" target="_top">Filtering Streambufs</a>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="iostream_objects.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt11ch25s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 24. Iostream Objects </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Buffering</td></tr></table></div></body></html> + </p></div><div class="sect2" title="Buffering"><div class="titlepage"><div><div><h3 class="title"><a id="io.streambuf.buffering"></a>Buffering</h3></div></div></div><p>First, are you sure that you understand buffering? Chaptericularly + the fact that C++ may not, in fact, have anything to do with it? + </p><p>The rules for buffering can be a little odd, but they aren't any + different from those of C. (Maybe that's why they can be a bit + odd.) Many people think that writing a newline to an output + stream automatically flushes the output buffer. This is true only + when the output stream is, in fact, a terminal and not a file + or some other device -- and <span class="emphasis"><em>that</em></span> may not even be true + since C++ says nothing about files nor terminals. All of that is + system-dependent. (The "newline-buffer-flushing only occurring + on terminals" thing is mostly true on Unix systems, though.) + </p><p>Some people also believe that sending <code class="code">endl</code> down an + output stream only writes a newline. This is incorrect; after a + newline is written, the buffer is also flushed. Perhaps this + is the effect you want when writing to a screen -- get the text + out as soon as possible, etc -- but the buffering is largely + wasted when doing this to a file: + </p><pre class="programlisting"> + output << "a line of text" << endl; + output << some_data_variable << endl; + output << "another line of text" << endl; </pre><p>The proper thing to do in this case to just write the data out + and let the libraries and the system worry about the buffering. + If you need a newline, just write a newline: + </p><pre class="programlisting"> + output << "a line of text\n" + << some_data_variable << '\n' + << "another line of text\n"; </pre><p>I have also joined the output statements into a single statement. + You could make the code prettier by moving the single newline to + the start of the quoted text on the last line, for example. + </p><p>If you do need to flush the buffer above, you can send an + <code class="code">endl</code> if you also need a newline, or just flush the buffer + yourself: + </p><pre class="programlisting"> + output << ...... << flush; // can use std::flush manipulator + output.flush(); // or call a member fn </pre><p>On the other hand, there are times when writing to a file should + be like writing to standard error; no buffering should be done + because the data needs to appear quickly (a prime example is a + log file for security-related information). The way to do this is + just to turn off the buffering <span class="emphasis"><em>before any I/O operations at + all</em></span> have been done (note that opening counts as an I/O operation): + </p><pre class="programlisting"> + std::ofstream os; + std::ifstream is; + int i; + + os.rdbuf()->pubsetbuf(0,0); + is.rdbuf()->pubsetbuf(0,0); + + os.open("/foo/bar/baz"); + is.open("/qux/quux/quuux"); + ... + os << "this data is written immediately\n"; + is >> i; // and this will probably cause a disk read </pre><p>Since all aspects of buffering are handled by a streambuf-derived + member, it is necessary to get at that member with <code class="code">rdbuf()</code>. + Then the public version of <code class="code">setbuf</code> can be called. The + arguments are the same as those for the Standard C I/O Library + function (a buffer area followed by its size). + </p><p>A great deal of this is implementation-dependent. For example, + <code class="code">streambuf</code> does not specify any actions for its own + <code class="code">setbuf()</code>-ish functions; the classes derived from + <code class="code">streambuf</code> each define behavior that "makes + sense" for that class: an argument of (0,0) turns off buffering + for <code class="code">filebuf</code> but does nothing at all for its siblings + <code class="code">stringbuf</code> and <code class="code">strstreambuf</code>, and specifying + anything other than (0,0) has varying effects. + User-defined classes derived from <code class="code">streambuf</code> can + do whatever they want. (For <code class="code">filebuf</code> and arguments for + <code class="code">(p,s)</code> other than zeros, libstdc++ does what you'd expect: + the first <code class="code">s</code> bytes of <code class="code">p</code> are used as a buffer, + which you must allocate and deallocate.) + </p><p>A last reminder: there are usually more buffers involved than + just those at the language/library level. Kernel buffers, disk + buffers, and the like will also have an effect. Inspecting and + changing those are system-dependent. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="io.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="stringstreams.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 13. + Input and Output + + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Memory Based Streams</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/strings.html b/libstdc++-v3/doc/html/manual/strings.html index 76fba6ee433..79ee89bf305 100644 --- a/libstdc++-v3/doc/html/manual/strings.html +++ b/libstdc++-v3/doc/html/manual/strings.html @@ -1,9 +1,366 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part V. Strings</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="bk01pt05ch13.html" title="Chapter 13. String Classes" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 7. Strings</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="traits.html" title="Traits" /><link rel="next" href="localization.html" title="Chapter 8. Localization" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Strings -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part V. Strings"><div class="titlepage"><div><div><h1 class="title"><a id="manual.strings"></a>Part V. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="traits.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 7. Strings"><div class="titlepage"><div><div><h2 class="title"><a id="std.strings"></a>Chapter 7. Strings - <a id="id638392" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt05ch13.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 13. String Classes</td></tr></table></div></body></html> + <a id="id471606" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="sect2"><a href="strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="sect2"><a href="strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></div><div class="sect1" title="String Classes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.strings.string"></a>String Classes</h2></div></div></div><div class="sect2" title="Simple Transformations"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.simple"></a>Simple Transformations</h3></div></div></div><p> + Here are Standard, simple, and portable ways to perform common + transformations on a <code class="code">string</code> instance, such as + "convert to all upper case." The word transformations + is especially apt, because the standard template function + <code class="code">transform<></code> is used. + </p><p> + This code will go through some iterations. Here's a simple + version: + </p><pre class="programlisting"> + #include <string> + #include <algorithm> + #include <cctype> // old <ctype.h> + + struct ToLower + { + char operator() (char c) const { return std::tolower(c); } + }; + + struct ToUpper + { + char operator() (char c) const { return std::toupper(c); } + }; + + int main() + { + std::string s ("Some Kind Of Initial Input Goes Here"); + + // Change everything into upper case + std::transform (s.begin(), s.end(), s.begin(), ToUpper()); + + // Change everything into lower case + std::transform (s.begin(), s.end(), s.begin(), ToLower()); + + // Change everything back into upper case, but store the + // result in a different string + std::string capital_s; + capital_s.resize(s.size()); + std::transform (s.begin(), s.end(), capital_s.begin(), ToUpper()); + } + </pre><p> + <span class="emphasis"><em>Note</em></span> that these calls all + involve the global C locale through the use of the C functions + <code class="code">toupper/tolower</code>. This is absolutely guaranteed to work -- + but <span class="emphasis"><em>only</em></span> if the string contains <span class="emphasis"><em>only</em></span> characters + from the basic source character set, and there are <span class="emphasis"><em>only</em></span> + 96 of those. Which means that not even all English text can be + represented (certain British spellings, proper names, and so forth). + So, if all your input forevermore consists of only those 96 + characters (hahahahahaha), then you're done. + </p><p><span class="emphasis"><em>Note</em></span> that the + <code class="code">ToUpper</code> and <code class="code">ToLower</code> function objects + are needed because <code class="code">toupper</code> and <code class="code">tolower</code> + are overloaded names (declared in <code class="code"><cctype></code> and + <code class="code"><locale></code>) so the template-arguments for + <code class="code">transform<></code> cannot be deduced, as explained in + <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html" target="_top">this + message</a>. + + At minimum, you can write short wrappers like + </p><pre class="programlisting"> + char toLower (char c) + { + return std::tolower(c); + } </pre><p>(Thanks to James Kanze for assistance and suggestions on all of this.) + </p><p>Another common operation is trimming off excess whitespace. Much + like transformations, this task is trivial with the use of string's + <code class="code">find</code> family. These examples are broken into multiple + statements for readability: + </p><pre class="programlisting"> + std::string str (" \t blah blah blah \n "); + + // trim leading whitespace + string::size_type notwhite = str.find_first_not_of(" \t\n"); + str.erase(0,notwhite); + + // trim trailing whitespace + notwhite = str.find_last_not_of(" \t\n"); + str.erase(notwhite+1); </pre><p>Obviously, the calls to <code class="code">find</code> could be inserted directly + into the calls to <code class="code">erase</code>, in case your compiler does not + optimize named temporaries out of existence. + </p></div><div class="sect2" title="Case Sensitivity"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.case"></a>Case Sensitivity</h3></div></div></div><p> + </p><p>The well-known-and-if-it-isn't-well-known-it-ought-to-be + <a class="ulink" href="http://www.gotw.ca/gotw/" target="_top">Guru of the Week</a> + discussions held on Usenet covered this topic in January of 1998. + Briefly, the challenge was, <span class="quote">“<span class="quote">write a 'ci_string' class which + is identical to the standard 'string' class, but is + case-insensitive in the same way as the (common but nonstandard) + C function stricmp()</span>”</span>. + </p><pre class="programlisting"> + ci_string s( "AbCdE" ); + + // case insensitive + assert( s == "abcde" ); + assert( s == "ABCDE" ); + + // still case-preserving, of course + assert( strcmp( s.c_str(), "AbCdE" ) == 0 ); + assert( strcmp( s.c_str(), "abcde" ) != 0 ); </pre><p>The solution is surprisingly easy. The original answer was + posted on Usenet, and a revised version appears in Herb Sutter's + book <span class="emphasis"><em>Exceptional C++</em></span> and on his website as <a class="ulink" href="http://www.gotw.ca/gotw/029.htm" target="_top">GotW 29</a>. + </p><p>See? Told you it was easy!</p><p> + <span class="emphasis"><em>Added June 2000:</em></span> The May 2000 issue of C++ + Report contains a fascinating <a class="ulink" href="http://lafstern.org/matt/col2_new.pdf" target="_top"> article</a> by + Matt Austern (yes, <span class="emphasis"><em>the</em></span> Matt Austern) on why + case-insensitive comparisons are not as easy as they seem, and + why creating a class is the <span class="emphasis"><em>wrong</em></span> way to go + about it in production code. (The GotW answer mentions one of + the principle difficulties; his article mentions more.) + </p><p>Basically, this is "easy" only if you ignore some things, + things which may be too important to your program to ignore. (I chose + to ignore them when originally writing this entry, and am surprised + that nobody ever called me on it...) The GotW question and answer + remain useful instructional tools, however. + </p><p><span class="emphasis"><em>Added September 2000:</em></span> James Kanze provided a link to a + <a class="ulink" href="http://www.unicode.org/reports/tr21/tr21-5.html" target="_top">Unicode + Technical Report discussing case handling</a>, which provides some + very good information. + </p></div><div class="sect2" title="Arbitrary Character Types"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.character_types"></a>Arbitrary Character Types</h3></div></div></div><p> + </p><p>The <code class="code">std::basic_string</code> is tantalizingly general, in that + it is parameterized on the type of the characters which it holds. + In theory, you could whip up a Unicode character class and instantiate + <code class="code">std::basic_string<my_unicode_char></code>, or assuming + that integers are wider than characters on your platform, maybe just + declare variables of type <code class="code">std::basic_string<int></code>. + </p><p>That's the theory. Remember however that basic_string has additional + type parameters, which take default arguments based on the character + type (called <code class="code">CharT</code> here): + </p><pre class="programlisting"> + template <typename CharT, + typename Traits = char_traits<CharT>, + typename Alloc = allocator<CharT> > + class basic_string { .... };</pre><p>Now, <code class="code">allocator<CharT></code> will probably Do The Right + Thing by default, unless you need to implement your own allocator + for your characters. + </p><p>But <code class="code">char_traits</code> takes more work. The char_traits + template is <span class="emphasis"><em>declared</em></span> but not <span class="emphasis"><em>defined</em></span>. + That means there is only + </p><pre class="programlisting"> + template <typename CharT> + struct char_traits + { + static void foo (type1 x, type2 y); + ... + };</pre><p>and functions such as char_traits<CharT>::foo() are not + actually defined anywhere for the general case. The C++ standard + permits this, because writing such a definition to fit all possible + CharT's cannot be done. + </p><p>The C++ standard also requires that char_traits be specialized for + instantiations of <code class="code">char</code> and <code class="code">wchar_t</code>, and it + is these template specializations that permit entities like + <code class="code">basic_string<char,char_traits<char>></code> to work. + </p><p>If you want to use character types other than char and wchar_t, + such as <code class="code">unsigned char</code> and <code class="code">int</code>, you will + need suitable specializations for them. For a time, in earlier + versions of GCC, there was a mostly-correct implementation that + let programmers be lazy but it broke under many situations, so it + was removed. GCC 3.4 introduced a new implementation that mostly + works and can be specialized even for <code class="code">int</code> and other + built-in types. + </p><p>If you want to use your own special character class, then you have + <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html" target="_top">a lot + of work to do</a>, especially if you with to use i18n features + (facets require traits information but don't have a traits argument). + </p><p>Another example of how to specialize char_traits was given <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html" target="_top">on the + mailing list</a> and at a later date was put into the file <code class="code"> + include/ext/pod_char_traits.h</code>. We agree + that the way it's used with basic_string (scroll down to main()) + doesn't look nice, but that's because <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html" target="_top">the + nice-looking first attempt</a> turned out to <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html" target="_top">not + be conforming C++</a>, due to the rule that CharT must be a POD. + (See how tricky this is?) + </p></div><div class="sect2" title="Tokenizing"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.token"></a>Tokenizing</h3></div></div></div><p> + </p><p>The Standard C (and C++) function <code class="code">strtok()</code> leaves a lot to + be desired in terms of user-friendliness. It's unintuitive, it + destroys the character string on which it operates, and it requires + you to handle all the memory problems. But it does let the client + code decide what to use to break the string into pieces; it allows + you to choose the "whitespace," so to speak. + </p><p>A C++ implementation lets us keep the good things and fix those + annoyances. The implementation here is more intuitive (you only + call it once, not in a loop with varying argument), it does not + affect the original string at all, and all the memory allocation + is handled for you. + </p><p>It's called stringtok, and it's a template function. Sources are + as below, in a less-portable form than it could be, to keep this + example simple (for example, see the comments on what kind of + string it will accept). + </p><pre class="programlisting"> +#include <string> +template <typename Container> +void +stringtok(Container &container, string const &in, + const char * const delimiters = " \t\n") +{ + const string::size_type len = in.length(); + string::size_type i = 0; + + while (i < len) + { + // Eat leading whitespace + i = in.find_first_not_of(delimiters, i); + if (i == string::npos) + return; // Nothing left but white space + + // Find the end of the token + string::size_type j = in.find_first_of(delimiters, i); + + // Push token + if (j == string::npos) + { + container.push_back(in.substr(i)); + return; + } + else + container.push_back(in.substr(i, j-i)); + + // Set up for next loop + i = j + 1; + } +} +</pre><p> + The author uses a more general (but less readable) form of it for + parsing command strings and the like. If you compiled and ran this + code using it: + </p><pre class="programlisting"> + std::list<string> ls; + stringtok (ls, " this \t is\t\n a test "); + for (std::list<string>const_iterator i = ls.begin(); + i != ls.end(); ++i) + { + std::cerr << ':' << (*i) << ":\n"; + } </pre><p>You would see this as output: + </p><pre class="programlisting"> + :this: + :is: + :a: + :test: </pre><p>with all the whitespace removed. The original <code class="code">s</code> is still + available for use, <code class="code">ls</code> will clean up after itself, and + <code class="code">ls.size()</code> will return how many tokens there were. + </p><p>As always, there is a price paid here, in that stringtok is not + as fast as strtok. The other benefits usually outweigh that, however. + </p><p><span class="emphasis"><em>Added February 2001:</em></span> Mark Wilden pointed out that the + standard <code class="code">std::getline()</code> function can be used with standard + <code class="code">istringstreams</code> to perform + tokenizing as well. Build an istringstream from the input text, + and then use std::getline with varying delimiters (the three-argument + signature) to extract tokens into a string. + </p></div><div class="sect2" title="Shrink to Fit"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.shrink"></a>Shrink to Fit</h3></div></div></div><p> + </p><p>From GCC 3.4 calling <code class="code">s.reserve(res)</code> on a + <code class="code">string s</code> with <code class="code">res < s.capacity()</code> will + reduce the string's capacity to <code class="code">std::max(s.size(), res)</code>. + </p><p>This behaviour is suggested, but not required by the standard. Prior + to GCC 3.4 the following alternative can be used instead + </p><pre class="programlisting"> + std::string(str.data(), str.size()).swap(str); + </pre><p>This is similar to the idiom for reducing + a <code class="code">vector</code>'s memory usage + (see <a class="link" href="../faq.html#faq.size_equals_capacity" title="7.8.">this FAQ + entry</a>) but the regular copy constructor cannot be used + because libstdc++'s <code class="code">string</code> is Copy-On-Write. + </p><p>In <a class="link" href="status.html#status.iso.200x" title="C++ 200x">C++0x</a> mode you can call + <code class="code">s.shrink_to_fit()</code> to achieve the same effect as + <code class="code">s.reserve(s.size())</code>. + </p></div><div class="sect2" title="CString (MFC)"><div class="titlepage"><div><div><h3 class="title"><a id="strings.string.Cstring"></a>CString (MFC)</h3></div></div></div><p> + </p><p>A common lament seen in various newsgroups deals with the Standard + string class as opposed to the Microsoft Foundation Class called + CString. Often programmers realize that a standard portable + answer is better than a proprietary nonportable one, but in porting + their application from a Win32 platform, they discover that they + are relying on special functions offered by the CString class. + </p><p>Things are not as bad as they seem. In + <a class="ulink" href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html" target="_top">this + message</a>, Joe Buck points out a few very important things: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The Standard <code class="code">string</code> supports all the operations + that CString does, with three exceptions. + </p></li><li class="listitem"><p>Two of those exceptions (whitespace trimming and case + conversion) are trivial to implement. In fact, we do so + on this page. + </p></li><li class="listitem"><p>The third is <code class="code">CString::Format</code>, which allows formatting + in the style of <code class="code">sprintf</code>. This deserves some mention: + </p></li></ul></div><p> + The old libg++ library had a function called form(), which did much + the same thing. But for a Standard solution, you should use the + stringstream classes. These are the bridge between the iostream + hierarchy and the string class, and they operate with regular + streams seamlessly because they inherit from the iostream + hierarchy. An quick example: + </p><pre class="programlisting"> + #include <iostream> + #include <string> + #include <sstream> + + string f (string& incoming) // incoming is "foo N" + { + istringstream incoming_stream(incoming); + string the_word; + int the_number; + + incoming_stream >> the_word // extract "foo" + >> the_number; // extract N + + ostringstream output_stream; + output_stream << "The word was " << the_word + << " and 3*N was " << (3*the_number); + + return output_stream.str(); + } </pre><p>A serious problem with CString is a design bug in its memory + allocation. Specifically, quoting from that same message: + </p><pre class="programlisting"> + CString suffers from a common programming error that results in + poor performance. Consider the following code: + + CString n_copies_of (const CString& foo, unsigned n) + { + CString tmp; + for (unsigned i = 0; i < n; i++) + tmp += foo; + return tmp; + } + + This function is O(n^2), not O(n). The reason is that each += + causes a reallocation and copy of the existing string. Microsoft + applications are full of this kind of thing (quadratic performance + on tasks that can be done in linear time) -- on the other hand, + we should be thankful, as it's created such a big market for high-end + ix86 hardware. :-) + + If you replace CString with string in the above function, the + performance is O(n). + </pre><p>Joe Buck also pointed out some other things to keep in mind when + comparing CString and the Standard string class: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>CString permits access to its internal representation; coders + who exploited that may have problems moving to <code class="code">string</code>. + </p></li><li class="listitem"><p>Microsoft ships the source to CString (in the files + MFC\SRC\Str{core,ex}.cpp), so you could fix the allocation + bug and rebuild your MFC libraries. + <span class="emphasis"><em><span class="emphasis"><em>Note:</em></span> It looks like the CString shipped + with VC++6.0 has fixed this, although it may in fact have been + one of the VC++ SPs that did it.</em></span> + </p></li><li class="listitem"><p><code class="code">string</code> operations like this have O(n) complexity + <span class="emphasis"><em>if the implementors do it correctly</em></span>. The libstdc++ + implementors did it correctly. Other vendors might not. + </p></li><li class="listitem"><p>While chapters of the SGI STL are used in libstdc++, their + string class is not. The SGI <code class="code">string</code> is essentially + <code class="code">vector<char></code> and does not do any reference + counting like libstdc++'s does. (It is O(n), though.) + So if you're thinking about SGI's string or rope classes, + you're now looking at four possibilities: CString, the + libstdc++ string, the SGI string, and the SGI rope, and this + is all before any allocator or traits customizations! (More + choices than you can shake a stick at -- want fries with that?) + </p></li></ul></div></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="traits.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="localization.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Traits </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 8. + Localization + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/stringstreams.html b/libstdc++-v3/doc/html/manual/stringstreams.html index 718965570e4..6e6b77eb4e8 100644 --- a/libstdc++-v3/doc/html/manual/stringstreams.html +++ b/libstdc++-v3/doc/html/manual/stringstreams.html @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 26. Memory Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Part XI. Input and Output" /><link rel="prev" href="bk01pt11ch25s02.html" title="Buffering" /><link rel="next" href="fstreams.html" title="Chapter 27. File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 26. Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><th width="60%" align="center">Part XI. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Memory Based Streams</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="io.html" title="Chapter 13. Input and Output" /><link rel="prev" href="streambufs.html" title="Stream Buffers" /><link rel="next" href="fstreams.html" title="File Based Streams" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Memory Based Streams</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><th width="60%" align="center">Chapter 13. Input and Output -</th><td width="20%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 26. Memory Based Streams"><div class="titlepage"><div><div><h2 class="title"><a id="manual.io.memstreams"></a>Chapter 26. Memory Based Streams</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></div><div class="sect1" title="Compatibility With strstream"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="manual.io.memstreams.compat"></a>Compatibility With strstream</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Memory Based Streams"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.io.memstreams"></a>Memory Based Streams</h2></div></div></div><div class="sect2" title="Compatibility With strstream"><div class="titlepage"><div><div><h3 class="title"><a id="std.io.memstreams.compat"></a>Compatibility With strstream</h3></div></div></div><p> </p><p>Stringstreams (defined in the header <code class="code"><sstream></code>) are in this author's opinion one of the coolest things since sliced time. An example of their use is in the Received Wisdom - section for Chapter 21 (Strings), - <a class="link" href="bk01pt05ch13s06.html" title="CString (MFC)"> describing how to + section for Sect1 21 (Strings), + <a class="link" href="strings.html#strings.string.Cstring" title="CString (MFC)"> describing how to format strings</a>. </p><p>The quick definition is: they are siblings of ifstream and ofstream, and they do for <code class="code">std::string</code> what their siblings do for @@ -34,4 +34,4 @@ memory yourself. The strstreams have been officially deprecated, which means that 1) future revisions of the C++ Standard won't support them, and 2) if you use them, people will laugh at you. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt11ch25s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Buffering </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 27. File Based Streams</td></tr></table></div></body></html> + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="streambufs.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="io.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="fstreams.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Stream Buffers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> File Based Streams</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/support.html b/libstdc++-v3/doc/html/manual/support.html index 14154ee4622..f514c97aade 100644 --- a/libstdc++-v3/doc/html/manual/support.html +++ b/libstdc++-v3/doc/html/manual/support.html @@ -1,9 +1,130 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part II. Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="debug.html" title="Debugging Support" /><link rel="next" href="bk01pt02pr01.html" title="" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 4. Support</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="next" href="dynamic_memory.html" title="Dynamic Memory" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Support -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part II. Support"><div class="titlepage"><div><div><h1 class="title"><a id="manual.support"></a>Part II. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 4. Support"><div class="titlepage"><div><div><h2 class="title"><a id="std.support"></a>Chapter 4. Support - <a id="id616138" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="bk01pt02pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Debugging Support </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html> + <a id="id402698" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="sect2"><a href="support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect2"><a href="support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="sect2"><a href="support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="sect1"><a href="dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="sect1"><a href="termination.html">Termination</a></span></dt><dd><dl><dt><span class="sect2"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect2"><a href="termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></div><p> + This part deals with the functions called and objects created + automatically during the course of a program's existence. + </p><p> + While we can't reproduce the contents of the Standard here (you + need to get your own copy from your nation's member body; see our + homepage for help), we can mention a couple of changes in what + kind of support a C++ program gets from the Standard Library. + </p><div class="sect1" title="Types"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.support.types"></a>Types</h2></div></div></div><div class="sect2" title="Fundamental Types"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.types.fundamental"></a>Fundamental Types</h3></div></div></div><p> + C++ has the following builtin types: + </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> + char + </p></li><li class="listitem"><p> + signed char + </p></li><li class="listitem"><p> + unsigned char + </p></li><li class="listitem"><p> + signed short + </p></li><li class="listitem"><p> + signed int + </p></li><li class="listitem"><p> + signed long + </p></li><li class="listitem"><p> + unsigned short + </p></li><li class="listitem"><p> + unsigned int + </p></li><li class="listitem"><p> + unsigned long + </p></li><li class="listitem"><p> + bool + </p></li><li class="listitem"><p> + wchar_t + </p></li><li class="listitem"><p> + float + </p></li><li class="listitem"><p> + double + </p></li><li class="listitem"><p> + long double + </p></li></ul></div><p> + These fundamental types are always available, without having to + include a header file. These types are exactly the same in + either C++ or in C. + </p><p> + Specializing parts of the library on these types is prohibited: + instead, use a POD. + </p></div><div class="sect2" title="Numeric Properties"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.types.numeric_limits"></a>Numeric Properties</h3></div></div></div><p> + The header <code class="filename">limits</code> defines + traits classes to give access to various implementation + defined-aspects of the fundamental types. The traits classes -- + fourteen in total -- are all specializations of the template class + <code class="classname">numeric_limits</code>, documented <a class="ulink" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html" target="_top">here</a> + and defined as follows: + </p><pre class="programlisting"> + template<typename T> + struct class + { + static const bool is_specialized; + static T max() throw(); + static T min() throw(); + + static const int digits; + static const int digits10; + static const bool is_signed; + static const bool is_integer; + static const bool is_exact; + static const int radix; + static T epsilon() throw(); + static T round_error() throw(); + + static const int min_exponent; + static const int min_exponent10; + static const int max_exponent; + static const int max_exponent10; + + static const bool has_infinity; + static const bool has_quiet_NaN; + static const bool has_signaling_NaN; + static const float_denorm_style has_denorm; + static const bool has_denorm_loss; + static T infinity() throw(); + static T quiet_NaN() throw(); + static T denorm_min() throw(); + + static const bool is_iec559; + static const bool is_bounded; + static const bool is_modulo; + + static const bool traps; + static const bool tinyness_before; + static const float_round_style round_style; + }; + </pre></div><div class="sect2" title="NULL"><div class="titlepage"><div><div><h3 class="title"><a id="std.support.types.null"></a>NULL</h3></div></div></div><p> + The only change that might affect people is the type of + <code class="constant">NULL</code>: while it is required to be a macro, + the definition of that macro is <span class="emphasis"><em>not</em></span> allowed + to be <code class="constant">(void*)0</code>, which is often used in C. + </p><p> + For <span class="command"><strong>g++</strong></span>, <code class="constant">NULL</code> is + <code class="code">#define</code>'d to be + <code class="constant">__null</code>, a magic keyword extension of + <span class="command"><strong>g++</strong></span>. + </p><p> + The biggest problem of #defining <code class="constant">NULL</code> to be + something like <span class="quote">“<span class="quote">0L</span>”</span> is that the compiler will view + that as a long integer before it views it as a pointer, so + overloading won't do what you expect. (This is why + <span class="command"><strong>g++</strong></span> has a magic extension, so that + <code class="constant">NULL</code> is always a pointer.) + </p><p>In his book <a class="ulink" href="http://www.awprofessional.com/titles/0-201-92488-9/" target="_top"><span class="emphasis"><em>Effective + C++</em></span></a>, Scott Meyers points out that the best way + to solve this problem is to not overload on pointer-vs-integer + types to begin with. He also offers a way to make your own magic + <code class="constant">NULL</code> that will match pointers before it + matches integers. + </p><p>See + <a class="ulink" href="http://www.awprofessional.com/titles/0-201-31015-5/" target="_top">the + Effective C++ CD example</a> + </p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="dynamic_memory.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part II. + Standard Contents + </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Dynamic Memory</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/termination.html b/libstdc++-v3/doc/html/manual/termination.html index ff86016f613..ab0bf5e19b6 100644 --- a/libstdc++-v3/doc/html/manual/termination.html +++ b/libstdc++-v3/doc/html/manual/termination.html @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Termination</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Part II. Support" /><link rel="prev" href="dynamic_memory.html" title="Chapter 5. Dynamic Memory" /><link rel="next" href="verbose_termination.html" title="Verbose Terminate Handler" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Part II. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Termination</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="support.html" title="Chapter 4. Support" /><link rel="prev" href="dynamic_memory.html" title="Dynamic Memory" /><link rel="next" href="diagnostics.html" title="Chapter 5. Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Termination</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Support -</th><td width="20%" align="right"> <a accesskey="n" href="verbose_termination.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 6. Termination"><div class="titlepage"><div><div><h2 class="title"><a id="manual.support.termination"></a>Chapter 6. Termination</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></div><div class="sect1" title="Termination Handlers"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.handlers"></a>Termination Handlers</h2></div></div></div><p> +</th><td width="20%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Termination"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.support.termination"></a>Termination</h2></div></div></div><div class="sect2" title="Termination Handlers"><div class="titlepage"><div><div><h3 class="title"><a id="support.termination.handlers"></a>Termination Handlers</h3></div></div></div><p> Not many changes here to <code class="filename">cstdlib</code>. You should note that the <code class="function">abort()</code> function does not call the destructors of automatic nor static objects, so if you're @@ -19,30 +19,106 @@ Static objects are destroyed in reverse order of their creation. </p></li><li class="listitem"><p> Functions registered with <code class="function">atexit()</code> are called in - reverse order of registration, once per registration call. - (This isn't actually new.) + reverse order of registration, once per registration call. + (This isn't actually new.) </p></li><li class="listitem"><p> The previous two actions are <span class="quote">“<span class="quote">interleaved,</span>”</span> that is, - given this pseudocode: + given this pseudocode: </p><pre class="programlisting"> extern "C or C++" void f1 (void); extern "C or C++" void f2 (void); - + static Thing obj1; atexit(f1); static Thing obj2; atexit(f2); </pre><p> - then at a call of <code class="function">exit()</code>, - <code class="varname">f2</code> will be called, then - <code class="varname">obj2</code> will be destroyed, then - <code class="varname">f1</code> will be called, and finally - <code class="varname">obj1</code> will be destroyed. If - <code class="varname">f1</code> or <code class="varname">f2</code> allow an - exception to propagate out of them, Bad Things happen. + then at a call of <code class="function">exit()</code>, + <code class="varname">f2</code> will be called, then + <code class="varname">obj2</code> will be destroyed, then + <code class="varname">f1</code> will be called, and finally + <code class="varname">obj1</code> will be destroyed. If + <code class="varname">f1</code> or <code class="varname">f2</code> allow an + exception to propagate out of them, Bad Things happen. </p></li></ol></div><p> Note also that <code class="function">atexit()</code> is only required to store 32 functions, and the compiler/library might already be using some of those slots. If you think you may run out, we recommend using the <code class="function">xatexit</code>/<code class="function">xexit</code> combination from <code class="literal">libiberty</code>, which has no such limit. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="verbose_termination.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 5. Dynamic Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Verbose Terminate Handler</td></tr></table></div></body></html> + </p></div><div class="sect2" title="Verbose Terminate Handler"><div class="titlepage"><div><div><h3 class="title"><a id="support.termination.verbose"></a>Verbose Terminate Handler</h3></div></div></div><p> + If you are having difficulty with uncaught exceptions and want a + little bit of help debugging the causes of the core dumps, you can + make use of a GNU extension, the verbose terminate handler. + </p><pre class="programlisting"> +#include <exception> + +int main() +{ + std::set_terminate(__gnu_cxx::__verbose_terminate_handler); + ... + + throw <em class="replaceable"><code>anything</code></em>; +} +</pre><p> + The <code class="function">__verbose_terminate_handler</code> function + obtains the name of the current exception, attempts to demangle + it, and prints it to stderr. If the exception is derived from + <code class="classname">exception</code> then the output from + <code class="function">what()</code> will be included. + </p><p> + Any replacement termination function is required to kill the + program without returning; this one calls abort. + </p><p> + For example: + </p><pre class="programlisting"> +#include <exception> +#include <stdexcept> + +struct argument_error : public std::runtime_error +{ + argument_error(const std::string& s): std::runtime_error(s) { } +}; + +int main(int argc) +{ + std::set_terminate(__gnu_cxx::__verbose_terminate_handler); + if (argc > 5) + throw argument_error(<span class="quote">“<span class="quote">argc is greater than 5!</span>”</span>); + else + throw argc; +} +</pre><p> + With the verbose terminate handler active, this gives: + </p><pre class="screen"> + <code class="computeroutput"> + % ./a.out + terminate called after throwing a `int' + Aborted + % ./a.out f f f f f f f f f f f + terminate called after throwing an instance of `argument_error' + what(): argc is greater than 5! + Aborted + </code> + </pre><p> + The 'Aborted' line comes from the call to + <code class="function">abort()</code>, of course. + </p><p> + This is the default termination handler; nothing need be done to + use it. To go back to the previous <span class="quote">“<span class="quote">silent death</span>”</span> + method, simply include <code class="filename">exception</code> and + <code class="filename">cstdlib</code>, and call + </p><pre class="programlisting"> + std::set_terminate(std::abort); + </pre><p> + After this, all calls to <code class="function">terminate</code> will use + <code class="function">abort</code> as the terminate handler. + </p><p> + Note: the verbose terminate handler will attempt to write to + stderr. If your application closes stderr or redirects it to an + inappropriate location, + <code class="function">__verbose_terminate_handler</code> will behave in + an unspecified manner. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="dynamic_memory.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="support.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Dynamic Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. + Diagnostics + +</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/test.html b/libstdc++-v3/doc/html/manual/test.html index c5bcc1f54c3..d4379d3449f 100644 --- a/libstdc++-v3/doc/html/manual/test.html +++ b/libstdc++-v3/doc/html/manual/test.html @@ -278,7 +278,7 @@ runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite please email the main libstdc++ mailing list if you see something odd or have questions. </p></div><div class="sect3" title="Permutations"><div class="titlepage"><div><div><h4 class="title"><a id="test.run.permutations"></a>Permutations</h4></div></div></div><p> - To run the libstdc++ test suite under the <a class="link" href="debug_mode.html" title="Chapter 30. Debug Mode">debug mode</a>, edit + To run the libstdc++ test suite under the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>, edit <code class="filename">libstdc++-v3/scripts/testsuite_flags</code> to add the compile-time flag <code class="constant">-D_GLIBCXX_DEBUG</code> to the result printed by the <code class="literal">--build-cxx</code> @@ -289,7 +289,7 @@ runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite release mode: any deviation indicates an error in either the library or the test suite. </p><p> - The <a class="link" href="parallel_mode.html" title="Chapter 31. Parallel Mode">parallel + The <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel mode</a> can be tested in much the same manner, substituting <code class="constant">-D_GLIBCXX_PARALLEL</code> for <code class="constant">-D_GLIBCXX_DEBUG</code> in the previous paragraph. @@ -493,7 +493,7 @@ only default variables. reporting functions including: </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>time_counter</p></li><li class="listitem"><p>resource_counter</p></li><li class="listitem"><p>report_performance</p></li></ul></div></li></ul></div></div></div><div class="sect2" title="Special Topics"><div class="titlepage"><div><div><h3 class="title"><a id="test.special"></a>Special Topics</h3></div></div></div><div class="sect3" title="Qualifying Exception Safety Guarantees"><div class="titlepage"><div><div><h4 class="title"><a id="test.exception.safety"></a> Qualifying Exception Safety Guarantees - <a id="id650235" class="indexterm"></a> + <a id="id503957" class="indexterm"></a> </h4></div></div></div><div class="sect4" title="Overview"><div class="titlepage"><div><div><h5 class="title"><a id="test.exception.safety.overview"></a>Overview</h5></div></div></div><p> Testing is composed of running a particular test sequence, and looking at what happens to the surrounding code when @@ -508,7 +508,7 @@ only default variables. consistency/coherency of the test subject in the event of a thrown exception. </p><p> - Random code paths can be constructed using the the basic test + Random code paths can be constructed using the basic test sequences and instrumentation as above, only combined in a random or pseudo-random way. </p><p> To compute the code paths that throw, test instruments @@ -543,7 +543,7 @@ only default variables. Which has several tests for container member functions, Includes control and test container objects. Configuration includes random seed, iterations, number of distinct values, and the -probability that and exception will be thrown. Assumes instantiating +probability that an exception will be thrown. Assumes instantiating container uses an extension allocator, <code class="classname">__gnu_cxx::throw_allocator_random</code>, as the allocator type. diff --git a/libstdc++-v3/doc/html/manual/traits.html b/libstdc++-v3/doc/html/manual/traits.html index 1d1e6fb75bf..62356dec625 100644 --- a/libstdc++-v3/doc/html/manual/traits.html +++ b/libstdc++-v3/doc/html/manual/traits.html @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 12. Traits</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Part IV. Utilities" /><link rel="prev" href="shared_ptr.html" title="shared_ptr" /><link rel="next" href="strings.html" title="Part V. Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><th width="60%" align="center">Part IV. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Traits</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="utilities.html" title="Chapter 6. Utilities" /><link rel="prev" href="memory.html" title="Memory" /><link rel="next" href="strings.html" title="Chapter 7. Strings" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Traits</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Utilities -</th><td width="20%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 12. Traits"><div class="titlepage"><div><div><h2 class="title"><a id="manual.util.traits"></a>Chapter 12. Traits</h2></div></div></div><p> - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="shared_ptr.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">shared_ptr </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part V. +</th><td width="20%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr></table><hr /></div><div class="section" title="Traits"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.traits"></a>Traits</h2></div></div></div><p> + </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="memory.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="utilities.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="strings.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Memory </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 7. Strings </td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/using.html b/libstdc++-v3/doc/html/manual/using.html index 93114db3d57..ae98c9b881d 100644 --- a/libstdc++-v3/doc/html/manual/using.html +++ b/libstdc++-v3/doc/html/manual/using.html @@ -11,5 +11,5 @@ enumerated and detailed in the table below. </p><p> By default, <span class="command"><strong>g++</strong></span> is equivalent to <span class="command"><strong>g++ -std=gnu++98</strong></span>. The standard library also defaults to this dialect. - </p><div class="table"><a id="id619494"></a><p class="title"><b>Table 3.1. C++ Command Options</b></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std=c++98</code></td><td align="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td align="left"><code class="literal">-std=gnu++98</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-std=c++0x</code></td><td align="left">Use the working draft of the upcoming ISO C++0x standard.</td></tr><tr><td align="left"><code class="literal">-std=gnu++0x</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-fexceptions</code></td><td align="left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td align="left"><code class="literal">-frtti</code></td><td align="left">As above, but RTTI-free dialect.</td></tr><tr><td align="left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td align="left">For ISO C++0x <thread>, <future>, - <mutex>, or <condition_variable>.</td></tr><tr><td align="left"><code class="literal">-fopenmp</code></td><td align="left">For <a class="link" href="parallel_mode.html" title="Chapter 31. Parallel Mode">parallel</a> mode.</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html> + </p><div class="table"><a id="id444212"></a><p class="title"><b>Table 3.1. C++ Command Options</b></p><div class="table-contents"><table summary="C++ Command Options" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><thead><tr><th align="left">Option Flags</th><th align="left">Description</th></tr></thead><tbody><tr><td align="left"><code class="literal">-std=c++98</code></td><td align="left">Use the 1998 ISO C++ standard plus amendments.</td></tr><tr><td align="left"><code class="literal">-std=gnu++98</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-std=c++0x</code></td><td align="left">Use the working draft of the upcoming ISO C++0x standard.</td></tr><tr><td align="left"><code class="literal">-std=gnu++0x</code></td><td align="left">As directly above, with GNU extensions.</td></tr><tr><td align="left"><code class="literal">-fexceptions</code></td><td align="left">See <a class="link" href="using_exceptions.html#intro.using.exception.no" title="Doing without">exception-free dialect</a></td></tr><tr><td align="left"><code class="literal">-frtti</code></td><td align="left">As above, but RTTI-free dialect.</td></tr><tr><td align="left"><code class="literal">-pthread</code> or <code class="literal">-pthreads</code></td><td align="left">For ISO C++0x <thread>, <future>, + <mutex>, or <condition_variable>.</td></tr><tr><td align="left"><code class="literal">-fopenmp</code></td><td align="left">For <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel</a> mode.</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="make.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_headers.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Make </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Headers</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/using_concurrency.html b/libstdc++-v3/doc/html/manual/using_concurrency.html index f0f63a9eee2..f18aec31d8f 100644 --- a/libstdc++-v3/doc/html/manual/using_concurrency.html +++ b/libstdc++-v3/doc/html/manual/using_concurrency.html @@ -200,6 +200,6 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) this at application run-time see <a class="link" href="using_macros.html" title="Macros">here</a>. Also useful are details - on <a class="link" href="memory.html#manual.util.memory.allocator" title="Allocators">allocator</a> + on <a class="link" href="memory.html#std.util.memory.allocator" title="Allocators">allocator</a> options and capabilities. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_dynamic_or_shared.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_exceptions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Linking </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Exceptions</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html b/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html index 9e48296929a..38e19313029 100644 --- a/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html +++ b/libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html @@ -21,7 +21,7 @@ </p></li><li class="listitem"><p> <code class="filename">typeinfo</code> </p></li></ul></div><p> - In addition, throw in + In addition, throw in </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> <code class="filename">cxxabi.h</code>. </p></li></ul></div><p> @@ -76,13 +76,27 @@ A quick read of the relevant part of the GCC the linker. The exact format of the options is dependent on which linker you use: </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p> - GNU ld (default on Linux):<code class="literal">-Wl,--rpath,<code class="filename">destdir</code>/lib</code> + GNU ld (default on Linux): + <code class="literal">-Wl,-rpath,<code class="filename">destdir</code>/lib</code> </p></li><li class="listitem"><p> - IRIX ld:<code class="literal"> - -Wl,-rpath,<code class="filename">destdir</code>/lib</code> + IRIX ld: + <code class="literal">-Wl,-rpath,<code class="filename">destdir</code>/lib</code> </p></li><li class="listitem"><p> - Solaris ld:<code class="literal">-Wl,-R<code class="filename">destdir</code>/lib</code> - </p></li></ul></div></li></ul></div><p> + Solaris ld: + <code class="literal">-Wl,-R<code class="filename">destdir</code>/lib</code> + </p></li></ul></div></li><li class="listitem"><p> + Some linkers allow you to specify the path to the library by + setting <code class="literal">LD_RUN_PATH</code> in your environment + when linking. + </p></li><li class="listitem"><p> + On some platforms the system administrator can configure the + dynamic linker to always look for libraries in + <code class="filename">destdir/lib</code>, for example + by using the <span class="command"><strong>ldconfig</strong></span> utility on Linux + or the <span class="command"><strong>crle</strong></span> utility on Solaris. This is a + system-wide change which can make the system unusable so if you + are unsure then use one of the other methods described above. + </p></li></ul></div><p> Use the <span class="command"><strong>ldd</strong></span> utility on the linked executable to show which <code class="filename">libstdc++.so</code> diff --git a/libstdc++-v3/doc/html/manual/using_exceptions.html b/libstdc++-v3/doc/html/manual/using_exceptions.html index 39fc1e05cfd..925d732cffd 100644 --- a/libstdc++-v3/doc/html/manual/using_exceptions.html +++ b/libstdc++-v3/doc/html/manual/using_exceptions.html @@ -8,12 +8,12 @@ the <code class="literal">throw</code> keyword. These are very powerful constructs, and require some thought when applied to the standard library in order to yield components that work efficiently while cleaning up resources when unexpectedly killed via -exceptional circumstances. +exceptional circumstances. </p><p> Two general topics of discussion follow: exception neutrality and exception safety. -</p><div class="sect2" title="Exception Safety"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p> - What is exception-safe code? +</p><div class="sect2" title="Exception Safety"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.safety"></a>Exception Safety</h3></div></div></div><p> + What is exception-safe code? </p><p> Will define this as reasonable and well-defined behavior by classes and functions from the standard library when used by user-defined @@ -124,7 +124,7 @@ exception neutrality and exception safety. use <code class="literal">-fno-exceptions</code>. If you have some code that uses <code class="literal">try</code> or <code class="literal">catch</code>, you shouldn't use <code class="literal">-fno-exceptions</code>. - </p><p> + </p><p> And what it to be gained, tinkering in the back alleys with a language like this? Exception handling overhead can be measured in the size of the executable binary, and varies with the @@ -194,7 +194,7 @@ exception neutrality and exception safety. library has been transformed, user code may need modification. User code that attempts or expects to do error checking on standard library components compiled with exception handling disabled should - be evaluated and potentially made conditional. + be evaluated and potentially made conditional. </p><p> Some issues remain with this approach (see bugzilla entry 25191). Code paths are not equivalent, in @@ -220,7 +220,7 @@ exception neutrality and exception safety. substitution of the C language keyword <code class="literal">const</code> with the uglified doppelganger <code class="literal">__const</code>. -</p></div><div class="sect2" title="Compatibility"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.compat"></a>Compatibility</h3></div></div></div><div class="sect3" title="With C"><div class="titlepage"><div><div><h4 class="title"><a id="using.exception.compat.c"></a>With <code class="literal">C</code></h4></div></div></div><p> +</p></div><div class="sect2" title="Compatibility"><div class="titlepage"><div><div><h3 class="title"><a id="intro.using.exception.compat"></a>Compatibility</h3></div></div></div><div class="sect3" title="With C"><div class="titlepage"><div><div><h4 class="title"><a id="using.exception.compat.c"></a>With <code class="literal">C</code></h4></div></div></div><p> C language code that is expecting to interoperate with C++ should be compiled with <code class="literal">-fexceptions</code>. This will make debugging a C language function called as part of C++-induced stack @@ -235,7 +235,7 @@ is called. getting these details right. For GNU systems, all appropriate parts of the GNU C library are already compiled with <code class="literal">-fexceptions</code>. -</p></div><div class="sect3" title="With POSIX thread cancellation"><div class="titlepage"><div><div><h4 class="title"><a id="using.exception.compat.posix"></a>With <code class="literal">POSIX</code> thread cancellation</h4></div></div></div><p> +</p></div><div class="sect3" title="With POSIX thread cancellation"><div class="titlepage"><div><div><h4 class="title"><a id="using.exception.compat.posix"></a>With <code class="literal">POSIX</code> thread cancellation</h4></div></div></div><p> GNU systems re-use some of the exception handling mechanisms to track control flow for <code class="literal">POSIX</code> thread cancellation. </p><p> @@ -266,54 +266,63 @@ is called. } catch(...) { this->_M_setstate(ios_base::badbit); } -</pre></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry" title="System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008)"><a id="id612927"></a><p><span class="title"><i> - System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) - </i>. </span><span class="pagenums"> +</pre></div></div><div class="bibliography" title="Bibliography"><div class="titlepage"><div><div><h3 class="title"><a id="using.exceptions.biblio"></a>Bibliography</h3></div></div></div><div class="biblioentry"><a id="id417334"></a><p><span class="biblioid"> + <a class="ulink" href="http://www.opengroup.org/austin" target="_top"> + <em class="citetitle"> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </em> + </a> + . </span><span class="pagenums"> 2.9.5 Thread Cancellation . </span><span class="copyright">Copyright © 2008 - The Open Group/The Institute of Electrical and Electronics Engineers, Inc.. </span><span class="biblioid"> - <a class="ulink" href="http://www.opengroup.org/austin/" target="_top"> - </a> - . </span></p></div><div class="biblioentry" title="Error and Exception Handling"><a id="id692579"></a><p><span class="title"><i> - Error and Exception Handling - </i>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername"> - Boost - . </span></span><span class="biblioid"> + The Open Group/The Institute of Electrical and Electronics + Engineers, Inc. + . </span></p></div><div class="biblioentry"><a id="id444298"></a><p><span class="biblioid"> <a class="ulink" href="http://www.boost.org/community/error_handling.html" target="_top"> + <em class="citetitle"> + Error and Exception Handling + </em> </a> - . </span></p></div><div class="biblioentry" title="Exception-Safety in Generic Components"><a id="id622989"></a><p><span class="title"><i> - Exception-Safety in Generic Components - </i>. </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername"> + . </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams </span>. </span><span class="publisher"><span class="publishername"> Boost - . </span></span><span class="biblioid"> + . </span></span></p></div><div class="biblioentry"><a id="id390281"></a><p><span class="biblioid"> <a class="ulink" href="http://www.boost.org/community/exception_safety.html" target="_top"> + <em class="citetitle"> + Exception-Safety in Generic Components + </em> </a> - . </span></p></div><div class="biblioentry" title="Standard Library Exception Policy"><a id="id614001"></a><p><span class="title"><i> - Standard Library Exception Policy - </i>. </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> - WG21 N1077 - . </span></span><span class="biblioid"> + . </span><span class="author"><span class="firstname">David</span> <span class="surname">Abrahams</span>. </span><span class="publisher"><span class="publishername"> + Boost + . </span></span></p></div><div class="biblioentry"><a id="id404291"></a><p><span class="biblioid"> <a class="ulink" href="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf" target="_top"> + <em class="citetitle"> + Standard Library Exception Policy + </em> </a> - . </span></p></div><div class="biblioentry" title="ia64 c++ abi exception handling"><a id="id599408"></a><p><span class="title"><i> - ia64 c++ abi exception handling - </i>. </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername"> - GNU - . </span></span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Matt</span> <span class="surname">Austern</span>. </span><span class="publisher"><span class="publishername"> + WG21 N1077 + . </span></span></p></div><div class="biblioentry"><a id="id443907"></a><p><span class="biblioid"> <a class="ulink" href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" target="_top"> + <em class="citetitle"> + ia64 c++ abi exception handling + </em> </a> - . </span></p></div><div class="biblioentry" title="Appendix E: Standard-Library Exception Safety"><a id="id657794"></a><p><span class="title"><i> - Appendix E: Standard-Library Exception Safety - </i>. </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Richard</span> <span class="surname">Henderson</span>. </span><span class="publisher"><span class="publishername"> + GNU + . </span></span></p></div><div class="biblioentry"><a id="id444623"></a><p><span class="biblioid"> <a class="ulink" href="http://www.research.att.com/~bs/3rd_safe.pdf" target="_top"> + <em class="citetitle"> + Appendix E: Standard-Library Exception Safety + </em> </a> - . </span></p></div><div class="biblioentry" title="Exceptional C++"><a id="id635762"></a><p><span class="title"><i> + . </span><span class="author"><span class="firstname">Bjarne</span> <span class="surname">Stroustrup</span>. </span></p></div><div class="biblioentry" title="Exceptional C++"><a id="id444488"></a><p><span class="title"><i> Exceptional C++ </i>. </span><span class="pagenums"> Exception-Safety Issues and Techniques - . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry" title="exception_defines.h #defines try/catch"><a id="id604495"></a><p><span class="title"><i> - exception_defines.h #defines try/catch - </i>. </span><span class="subtitle"> - GCC Bug <a class="ulink" href="http://gcc.gnu.org/PR25191" target="_top">25191</a> - . </span><span class="biblioid"> + . </span><span class="author"><span class="firstname">Herb</span> <span class="surname">Sutter</span>. </span></p></div><div class="biblioentry"><a id="id403652"></a><p><span class="biblioid"> + <a class="ulink" href="http://gcc.gnu.org/PR25191" target="_top"> + <em class="citetitle"> + GCC Bug 25191: exception_defines.h #defines try/catch + </em> + </a> . </span></p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_concurrency.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concurrency </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Debugging Support</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/using_headers.html b/libstdc++-v3/doc/html/manual/using_headers.html index 5ce54466d6f..99fe52334fc 100644 --- a/libstdc++-v3/doc/html/manual/using_headers.html +++ b/libstdc++-v3/doc/html/manual/using_headers.html @@ -20,19 +20,19 @@ upcoming 200x standard. </p><p> C++98/03 include files. These are available in the default compilation mode, i.e. <code class="code">-std=c++98</code> or <code class="code">-std=gnu++98</code>. - </p><div class="table"><a id="id616284"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id667695"></a><p class="title"><b>Table 3.3. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p> + </p><div class="table"><a id="id470920"></a><p class="title"><b>Table 3.2. C++ 1998 Library Headers</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">complex</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td></tr><tr><td align="left"><code class="filename">fstream</code></td><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td><td align="left"><code class="filename">iosfwd</code></td></tr><tr><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td><td align="left"><code class="filename">list</code></td></tr><tr><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td></tr><tr><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">typeinfo</code></td></tr><tr><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id349475"></a><p class="title"><b>Table 3.3. C++ 1998 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 1998 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">ciso646</code></td></tr><tr><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td></tr><tr><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p> C++0x include files. These are only available in C++0x compilation mode, i.e. <code class="literal">-std=c++0x</code> or <code class="literal">-std=gnu++0x</code>. -</p><p></p><div class="table"><a id="id605616"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id606881"></a><p class="title"><b>Table 3.5. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdbool</code></td></tr><tr><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td></tr><tr><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p> +</p><p></p><div class="table"><a id="id477183"></a><p class="title"><b>Table 3.4. C++ 200x Library Headers</b></p><div class="table-contents"><table summary="C++ 200x Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">algorithm</code></td><td align="left"><code class="filename">array</code></td><td align="left"><code class="filename">bitset</code></td><td align="left"><code class="filename">chrono</code></td><td align="left"><code class="filename">complex</code></td></tr><tr><td align="left"><code class="filename">condition_variable</code></td><td align="left"><code class="filename">deque</code></td><td align="left"><code class="filename">exception</code></td><td align="left"><code class="filename">forward_list</code></td><td align="left"><code class="filename">fstream</code></td></tr><tr><td align="left"><code class="filename">functional</code></td><td align="left"><code class="filename">future</code></td><td align="left"><code class="filename">initalizer_list</code></td><td align="left"><code class="filename">iomanip</code></td><td align="left"><code class="filename">ios</code></td></tr><tr><td align="left"><code class="filename">iosfwd</code></td><td align="left"><code class="filename">iostream</code></td><td align="left"><code class="filename">istream</code></td><td align="left"><code class="filename">iterator</code></td><td align="left"><code class="filename">limits</code></td></tr><tr><td align="left"><code class="filename">list</code></td><td align="left"><code class="filename">locale</code></td><td align="left"><code class="filename">map</code></td><td align="left"><code class="filename">memory</code></td><td align="left"><code class="filename">mutex</code></td></tr><tr><td align="left"><code class="filename">new</code></td><td align="left"><code class="filename">numeric</code></td><td align="left"><code class="filename">ostream</code></td><td align="left"><code class="filename">queue</code></td><td align="left"><code class="filename">random</code></td></tr><tr><td align="left"><code class="filename">ratio</code></td><td align="left"><code class="filename">regex</code></td><td align="left"><code class="filename">set</code></td><td align="left"><code class="filename">sstream</code></td><td align="left"><code class="filename">stack</code></td></tr><tr><td align="left"><code class="filename">stdexcept</code></td><td align="left"><code class="filename">streambuf</code></td><td align="left"><code class="filename">string</code></td><td align="left"><code class="filename">system_error</code></td><td align="left"><code class="filename">thread</code></td></tr><tr><td align="left"><code class="filename">tuple</code></td><td align="left"><code class="filename">type_traits</code></td><td align="left"><code class="filename">typeinfo</code></td><td align="left"><code class="filename">unordered_map</code></td><td align="left"><code class="filename">unordered_set</code></td></tr><tr><td align="left"><code class="filename">utility</code></td><td align="left"><code class="filename">valarray</code></td><td align="left"><code class="filename">vector</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id463447"></a><p class="title"><b>Table 3.5. C++ 200x Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ 200x Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cassert</code></td><td align="left"><code class="filename">ccomplex</code></td><td align="left"><code class="filename">cctype</code></td><td align="left"><code class="filename">cerrno</code></td><td align="left"><code class="filename">cfenv</code></td></tr><tr><td align="left"><code class="filename">cfloat</code></td><td align="left"><code class="filename">cinttypes</code></td><td align="left"><code class="filename">ciso646</code></td><td align="left"><code class="filename">climits</code></td><td align="left"><code class="filename">clocale</code></td></tr><tr><td align="left"><code class="filename">cmath</code></td><td align="left"><code class="filename">csetjmp</code></td><td align="left"><code class="filename">csignal</code></td><td align="left"><code class="filename">cstdarg</code></td><td align="left"><code class="filename">cstdbool</code></td></tr><tr><td align="left"><code class="filename">cstddef</code></td><td align="left"><code class="filename">cstdint</code></td><td align="left"><code class="filename">cstdlib</code></td><td align="left"><code class="filename">cstdio</code></td><td align="left"><code class="filename">cstring</code></td></tr><tr><td align="left"><code class="filename">ctgmath</code></td><td align="left"><code class="filename">ctime</code></td><td align="left"><code class="filename">cuchar</code></td><td align="left"><code class="filename">cwchar</code></td><td align="left"><code class="filename">cwctype</code></td></tr><tr><td align="left"><code class="filename">stdatomic.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p> In addition, TR1 includes as: -</p><div class="table"><a id="id593853"></a><p class="title"><b>Table 3.6. C++ TR 1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id680678"></a><p class="title"><b>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++ +</p><div class="table"><a id="id387306"></a><p class="title"><b>Table 3.6. C++ TR 1 Library Headers</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/array</code></td><td align="left"><code class="filename">tr1/complex</code></td><td align="left"><code class="filename">tr1/memory</code></td><td align="left"><code class="filename">tr1/functional</code></td><td align="left"><code class="filename">tr1/random</code></td></tr><tr><td align="left"><code class="filename">tr1/regex</code></td><td align="left"><code class="filename">tr1/tuple</code></td><td align="left"><code class="filename">tr1/type_traits</code></td><td align="left"><code class="filename">tr1/unordered_map</code></td><td align="left"><code class="filename">tr1/unordered_set</code></td></tr><tr><td align="left"><code class="filename">tr1/utility</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id479735"></a><p class="title"><b>Table 3.7. C++ TR 1 Library Headers for C Library Facilities</b></p><div class="table-contents"><table summary="C++ TR 1 Library Headers for C Library Facilities" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">tr1/ccomplex</code></td><td align="left"><code class="filename">tr1/cfenv</code></td><td align="left"><code class="filename">tr1/cfloat</code></td><td align="left"><code class="filename">tr1/cmath</code></td><td align="left"><code class="filename">tr1/cinttypes</code></td></tr><tr><td align="left"><code class="filename">tr1/climits</code></td><td align="left"><code class="filename">tr1/cstdarg</code></td><td align="left"><code class="filename">tr1/cstdbool</code></td><td align="left"><code class="filename">tr1/cstdint</code></td><td align="left"><code class="filename">tr1/cstdio</code></td></tr><tr><td align="left"><code class="filename">tr1/cstdlib</code></td><td align="left"><code class="filename">tr1/ctgmath</code></td><td align="left"><code class="filename">tr1/ctime</code></td><td align="left"><code class="filename">tr1/cwchar</code></td><td align="left"><code class="filename">tr1/cwctype</code></td></tr></tbody></table></div></div><br class="table-break" /><p>Decimal floating-point arithmetic is available if the C++ compiler supports scalar decimal floating-point types defined via <code class="code">__attribute__((mode(SD|DD|LD)))</code>. -</p><div class="table"><a id="id563959"></a><p class="title"><b>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</b></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p> +</p><div class="table"><a id="id400127"></a><p class="title"><b>Table 3.8. C++ TR 24733 Decimal Floating-Point Header</b></p><div class="table-contents"><table summary="C++ TR 24733 Decimal Floating-Point Header" border="1"><colgroup><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">decimal/decimal</code></td></tr></tbody></table></div></div><br class="table-break" /><p> Also included are files for the C++ ABI interface: -</p><div class="table"><a id="id661850"></a><p class="title"><b>Table 3.9. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p> +</p><div class="table"><a id="id401869"></a><p class="title"><b>Table 3.9. C++ ABI Headers</b></p><div class="table-contents"><table summary="C++ ABI Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">cxxabi.h</code></td><td align="left"><code class="filename">cxxabi_forced.h</code></td></tr></tbody></table></div></div><br class="table-break" /><p> And a large variety of extensions. -</p><div class="table"><a id="id614025"></a><p class="title"><b>Table 3.10. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id662204"></a><p class="title"><b>Table 3.11. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id611004"></a><p class="title"><b>Table 3.12. Extension Profile Headers</b></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id592292"></a><p class="title"><b>Table 3.13. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" title="Mixing Headers"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules. +</p><div class="table"><a id="id467180"></a><p class="title"><b>Table 3.10. Extension Headers</b></p><div class="table-contents"><table summary="Extension Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">ext/algorithm</code></td><td align="left"><code class="filename">ext/atomicity.h</code></td><td align="left"><code class="filename">ext/array_allocator.h</code></td><td align="left"><code class="filename">ext/bitmap_allocator.h</code></td><td align="left"><code class="filename">ext/cast.h</code></td></tr><tr><td align="left"><code class="filename">ext/codecvt_specializations.h</code></td><td align="left"><code class="filename">ext/concurrence.h</code></td><td align="left"><code class="filename">ext/debug_allocator.h</code></td><td align="left"><code class="filename">ext/enc_filebuf.h</code></td><td align="left"><code class="filename">ext/extptr_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/functional</code></td><td align="left"><code class="filename">ext/iterator</code></td><td align="left"><code class="filename">ext/malloc_allocator.h</code></td><td align="left"><code class="filename">ext/memory</code></td><td align="left"><code class="filename">ext/mt_allocator.h</code></td></tr><tr><td align="left"><code class="filename">ext/new_allocator.h</code></td><td align="left"><code class="filename">ext/numeric</code></td><td align="left"><code class="filename">ext/numeric_traits.h</code></td><td align="left"><code class="filename">ext/pb_ds/assoc_container.h</code></td><td align="left"><code class="filename">ext/pb_ds/priority_queue.h</code></td></tr><tr><td align="left"><code class="filename">ext/pod_char_traits.h</code></td><td align="left"><code class="filename">ext/pool_allocator.h</code></td><td align="left"><code class="filename">ext/rb_tree</code></td><td align="left"><code class="filename">ext/rope</code></td><td align="left"><code class="filename">ext/slist</code></td></tr><tr><td align="left"><code class="filename">ext/stdio_filebuf.h</code></td><td align="left"><code class="filename">ext/stdio_sync_filebuf.h</code></td><td align="left"><code class="filename">ext/throw_allocator.h</code></td><td align="left"><code class="filename">ext/typelist.h</code></td><td align="left"><code class="filename">ext/type_traits.h</code></td></tr><tr><td align="left"><code class="filename">ext/vstring.h</code></td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id403996"></a><p class="title"><b>Table 3.11. Extension Debug Headers</b></p><div class="table-contents"><table summary="Extension Debug Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">debug/bitset</code></td><td align="left"><code class="filename">debug/deque</code></td><td align="left"><code class="filename">debug/list</code></td><td align="left"><code class="filename">debug/map</code></td><td align="left"><code class="filename">debug/set</code></td></tr><tr><td align="left"><code class="filename">debug/string</code></td><td align="left"><code class="filename">debug/unordered_map</code></td><td align="left"><code class="filename">debug/unordered_set</code></td><td align="left"><code class="filename">debug/vector</code></td><td class="auto-generated"> </td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id403404"></a><p class="title"><b>Table 3.12. Extension Profile Headers</b></p><div class="table-contents"><table summary="Extension Profile Headers" border="1"><colgroup><col align="left" /><col align="left" /><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">profile/bitset</code></td><td align="left"><code class="filename">profile/deque</code></td><td align="left"><code class="filename">profile/list</code></td><td align="left"><code class="filename">profile/map</code></td></tr><tr><td align="left"><code class="filename">profile/set</code></td><td align="left"><code class="filename">profile/unordered_map</code></td><td align="left"><code class="filename">profile/unordered_set</code></td><td align="left"><code class="filename">profile/vector</code></td></tr></tbody></table></div></div><br class="table-break" /><p></p><div class="table"><a id="id477245"></a><p class="title"><b>Table 3.13. Extension Parallel Headers</b></p><div class="table-contents"><table summary="Extension Parallel Headers" border="1"><colgroup><col align="left" /><col align="left" /></colgroup><tbody><tr><td align="left"><code class="filename">parallel/algorithm</code></td><td align="left"><code class="filename">parallel/numeric</code></td></tr></tbody></table></div></div><br class="table-break" /></div><div class="sect2" title="Mixing Headers"><div class="titlepage"><div><div><h3 class="title"><a id="manual.intro.using.headers.mixing"></a>Mixing Headers</h3></div></div></div><p> A few simple rules. </p><p>First, mixing different dialects of the standard headers is not possible. It's an all-or-nothing affair. Thus, code like </p><pre class="programlisting"> diff --git a/libstdc++-v3/doc/html/manual/using_macros.html b/libstdc++-v3/doc/html/manual/using_macros.html index 9daf4d3405c..ded3c5a4c35 100644 --- a/libstdc++-v3/doc/html/manual/using_macros.html +++ b/libstdc++-v3/doc/html/manual/using_macros.html @@ -59,19 +59,19 @@ <code class="code">--enable-concept-checks</code>. When defined, performs compile-time checking on certain template instantiations to detect violations of the requirements of the standard. This - is described in more detail <a class="link" href="ext_compile_checks.html" title="Chapter 29. Compile Time Checks">here</a>. + is described in more detail <a class="link" href="ext_compile_checks.html" title="Chapter 16. Compile Time Checks">here</a>. </p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG</code></span></dt><dd><p> Undefined by default. When defined, compiles user code using - the <a class="link" href="debug_mode.html" title="Chapter 30. Debug Mode">debug mode</a>. + the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>. </p></dd><dt><span class="term"><code class="code">_GLIBCXX_DEBUG_PEDANTIC</code></span></dt><dd><p> Undefined by default. When defined while compiling with - the <a class="link" href="debug_mode.html" title="Chapter 30. Debug Mode">debug mode</a>, makes + the <a class="link" href="debug_mode.html" title="Chapter 17. Debug Mode">debug mode</a>, makes the debug mode extremely picky by making the use of libstdc++ extensions and libstdc++-specific behavior into errors. </p></dd><dt><span class="term"><code class="code">_GLIBCXX_PARALLEL</code></span></dt><dd><p>Undefined by default. When defined, compiles user code - using the <a class="link" href="parallel_mode.html" title="Chapter 31. Parallel Mode">parallel + using the <a class="link" href="parallel_mode.html" title="Chapter 18. Parallel Mode">parallel mode</a>. </p></dd><dt><span class="term"><code class="code">_GLIBCXX_PROFILE</code></span></dt><dd><p>Undefined by default. When defined, compiles user code - using the <a class="link" href="profile_mode.html" title="Chapter 32. Profile Mode">profile + using the <a class="link" href="profile_mode.html" title="Chapter 19. Profile Mode">profile mode</a>. </p></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="using_headers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="using.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="using_namespaces.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Headers </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Namespaces</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/utilities.html b/libstdc++-v3/doc/html/manual/utilities.html index 643a52964a9..ecc1498d80c 100644 --- a/libstdc++-v3/doc/html/manual/utilities.html +++ b/libstdc++-v3/doc/html/manual/utilities.html @@ -1,9 +1,17 @@ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Part IV. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="spine.html" title="The GNU C++ Library" /><link rel="prev" href="bk01pt03ch07s02.html" title="Adding Data to Exceptions" /><link rel="next" href="functors.html" title="Chapter 9. Functors" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. +<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Chapter 6. Utilities</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="bk01pt02.html" title="Part II. Standard Contents" /><link rel="prev" href="bk01pt02ch05s02.html" title="Concept Checking" /><link rel="next" href="pairs.html" title="Pairs" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Utilities -</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><th width="60%" align="center">The GNU C++ Library</th><td width="20%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr></table><hr /></div><div class="part" title="Part IV. Utilities"><div class="titlepage"><div><div><h1 class="title"><a id="manual.util"></a>Part IV. +</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01pt02ch05s02.html">Prev</a> </td><th width="60%" align="center">Part II. + Standard Contents +</th><td width="20%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 6. Utilities"><div class="titlepage"><div><div><h2 class="title"><a id="std.util"></a>Chapter 6. Utilities - <a id="id596936" class="indexterm"></a> -</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="traits.html">12. Traits</a></span></dt></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt03ch07s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="spine.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="functors.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Adding Data to Exceptions </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. Functors</td></tr></table></div></body></html> + <a id="id410153" class="indexterm"></a> +</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="memory.html#std.util.memory.allocator">Allocators</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dt><span class="section"><a href="memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt></dl></dd><dt><span class="section"><a href="traits.html">Traits</a></span></dt></dl></div><div class="section" title="Functors"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="std.util.functors"></a>Functors</h2></div></div></div><p>If you don't know what functors are, you're not alone. Many people + get slightly the wrong idea. In the interest of not reinventing + the wheel, we will refer you to the introduction to the functor + concept written by SGI as chapter of their STL, in + <a class="ulink" href="http://www.sgi.com/tech/stl/functors.html" target="_top">their + http://www.sgi.com/tech/stl/functors.html</a>. + </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01pt02ch05s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pairs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Concept Checking </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Pairs</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/vector.html b/libstdc++-v3/doc/html/manual/vector.html deleted file mode 100644 index 8f554385943..00000000000 --- a/libstdc++-v3/doc/html/manual/vector.html +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>vector</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="sequences.html" title="Chapter 16. Sequences" /><link rel="prev" href="sequences.html" title="Chapter 16. Sequences" /><link rel="next" href="associative.html" title="Chapter 17. Associative" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">vector</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="sequences.html">Prev</a> </td><th width="60%" align="center">Chapter 16. Sequences</th><td width="20%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="vector"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="containers.sequences.vector"></a>vector</h2></div></div></div><p> - </p><div class="sect2" title="Space Overhead Management"><div class="titlepage"><div><div><h3 class="title"><a id="sequences.vector.management"></a>Space Overhead Management</h3></div></div></div><p> - In <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html" target="_top">this - message to the list</a>, Daniel Kostecky announced work on an - alternate form of <code class="code">std::vector</code> that would support - hints on the number of elements to be over-allocated. The design - was also described, along with possible implementation choices. - </p><p> - The first two alpha releases were announced <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html" target="_top">here</a> - and <a class="ulink" href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html" target="_top">here</a>. - </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="sequences.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="sequences.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="associative.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 16. Sequences </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 17. Associative</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/manual/verbose_termination.html b/libstdc++-v3/doc/html/manual/verbose_termination.html deleted file mode 100644 index 540e5a77577..00000000000 --- a/libstdc++-v3/doc/html/manual/verbose_termination.html +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Verbose Terminate Handler</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><meta name="keywords" content=" ISO C++ , library " /><link rel="home" href="../spine.html" title="The GNU C++ Library Documentation" /><link rel="up" href="termination.html" title="Chapter 6. Termination" /><link rel="prev" href="termination.html" title="Chapter 6. Termination" /><link rel="next" href="diagnostics.html" title="Part III. Diagnostics" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Verbose Terminate Handler</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><th width="60%" align="center">Chapter 6. Termination</th><td width="20%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr></table><hr /></div><div class="sect1" title="Verbose Terminate Handler"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="support.termination.verbose"></a>Verbose Terminate Handler</h2></div></div></div><p> - If you are having difficulty with uncaught exceptions and want a - little bit of help debugging the causes of the core dumps, you can - make use of a GNU extension, the verbose terminate handler. - </p><pre class="programlisting"> -#include <exception> - -int main() -{ - std::set_terminate(__gnu_cxx::__verbose_terminate_handler); - ... - - throw <em class="replaceable"><code>anything</code></em>; -} -</pre><p> - The <code class="function">__verbose_terminate_handler</code> function - obtains the name of the current exception, attempts to demangle - it, and prints it to stderr. If the exception is derived from - <code class="classname">exception</code> then the output from - <code class="function">what()</code> will be included. - </p><p> - Any replacement termination function is required to kill the - program without returning; this one calls abort. - </p><p> - For example: - </p><pre class="programlisting"> -#include <exception> -#include <stdexcept> - -struct argument_error : public std::runtime_error -{ - argument_error(const std::string& s): std::runtime_error(s) { } -}; - -int main(int argc) -{ - std::set_terminate(__gnu_cxx::__verbose_terminate_handler); - if (argc > 5) - throw argument_error(<span class="quote">“<span class="quote">argc is greater than 5!</span>”</span>); - else - throw argc; -} -</pre><p> - With the verbose terminate handler active, this gives: - </p><pre class="screen"> - <code class="computeroutput"> - % ./a.out - terminate called after throwing a `int' - Aborted - % ./a.out f f f f f f f f f f f - terminate called after throwing an instance of `argument_error' - what(): argc is greater than 5! - Aborted - </code> - </pre><p> - The 'Aborted' line comes from the call to - <code class="function">abort()</code>, of course. - </p><p> - This is the default termination handler; nothing need be done to - use it. To go back to the previous <span class="quote">“<span class="quote">silent death</span>”</span> - method, simply include <code class="filename">exception</code> and - <code class="filename">cstdlib</code>, and call - </p><pre class="programlisting"> - std::set_terminate(std::abort); - </pre><p> - After this, all calls to <code class="function">terminate</code> will use - <code class="function">abort</code> as the terminate handler. - </p><p> - Note: the verbose terminate handler will attempt to write to - stderr. If your application closes stderr or redirects it to an - inappropriate location, - <code class="function">__verbose_terminate_handler</code> will behave in - an unspecified manner. - </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="termination.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="termination.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="diagnostics.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 6. Termination </td><td width="20%" align="center"><a accesskey="h" href="../spine.html">Home</a></td><td width="40%" align="right" valign="top"> Part III. - Diagnostics - -</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/html/spine.html b/libstdc++-v3/doc/html/spine.html index edcf88aae34..585f7cdf1ea 100644 --- a/libstdc++-v3/doc/html/spine.html +++ b/libstdc++-v3/doc/html/spine.html @@ -5,43 +5,53 @@ </p></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="book"><a href="manual/spine.html">The GNU C++ Library</a></span></dt><dd><dl><dt><span class="part"><a href="manual/intro.html">I. Introduction -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="sect1"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="sect2"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/support.html">II. +</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/status.html">1. Status</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/status.html#manual.intro.status.iso">Implementation Status</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/status.html#status.iso.1998">C++ 1998/2003</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.200x">C++ 200x</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr1">C++ TR1</a></span></dt><dt><span class="sect2"><a href="manual/status.html#status.iso.tr24733">C++ TR 24733</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/license.html">License</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.gpl">The Code: GPL</a></span></dt><dt><span class="sect2"><a href="manual/license.html#manual.intro.status.license.fdl">The Documentation: GPL, FDL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bugs.html">Bugs</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.impl">Implementation Bugs</a></span></dt><dt><span class="sect2"><a href="manual/bugs.html#manual.intro.status.bugs.iso">Standard Bugs</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/setup.html">2. Setup</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/setup.html#manual.intro.setup.prereq">Prerequisites</a></span></dt><dt><span class="sect1"><a href="manual/configure.html">Configure</a></span></dt><dt><span class="sect1"><a href="manual/make.html">Make</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/using.html">3. Using</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/using.html#manual.intro.using.flags">Command Options</a></span></dt><dt><span class="sect1"><a href="manual/using_headers.html">Headers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.all">Header Files</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.mixing">Mixing Headers</a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.cheaders">The C Headers and <code class="code">namespace std</code></a></span></dt><dt><span class="sect2"><a href="manual/using_headers.html#manual.intro.using.headers.pre">Precompiled Headers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_macros.html">Macros</a></span></dt><dt><span class="sect1"><a href="manual/using_namespaces.html">Namespaces</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.all">Available Namespaces</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.std">namespace std</a></span></dt><dt><span class="sect2"><a href="manual/using_namespaces.html#manual.intro.using.namespaces.comp">Using Namespace Composition</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_dynamic_or_shared.html">Linking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.freestanding">Almost Nothing</a></span></dt><dt><span class="sect2"><a href="manual/using_dynamic_or_shared.html#manual.intro.using.linkage.dynamic">Finding Dynamic or Shared Libraries</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_concurrency.html">Concurrency</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.atomics">Atomics</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.io">IO</a></span></dt><dt><span class="sect2"><a href="manual/using_concurrency.html#manual.intro.using.concurrency.containers">Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/using_exceptions.html">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.safety">Exception Safety</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.propagating">Exception Neutrality</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.no">Doing without</a></span></dt><dt><span class="sect2"><a href="manual/using_exceptions.html#intro.using.exception.compat">Compatibility</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/debug.html">Debugging Support</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/debug.html#debug.compiler">Using <span class="command"><strong>g++</strong></span></a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.req">Debug Versions of Library Binary Files</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.memory">Memory Leak Hunting</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.gdb">Using <span class="command"><strong>gdb</strong></span></a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.exceptions">Tracking uncaught exceptions</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.debug_mode">Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.compile_time_checks">Compile Time Checking</a></span></dt><dt><span class="sect2"><a href="manual/debug.html#debug.profile_mode">Profile-based Performance Analysis</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/bk01pt02.html">II. + Standard Contents +</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/support.html">4. Support -</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt02pr01.html"></a></span></dt><dt><span class="chapter"><a href="manual/fundamental_types.html">4. Types</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/fundamental_types.html#manual.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s02.html">Numeric Properties</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt02ch04s03.html">NULL</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/dynamic_memory.html">5. Dynamic Memory</a></span></dt><dt><span class="chapter"><a href="manual/termination.html">6. Termination</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect1"><a href="manual/verbose_termination.html">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/diagnostics.html">III. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/support.html#std.support.types">Types</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/support.html#std.support.types.fundamental">Fundamental Types</a></span></dt><dt><span class="sect2"><a href="manual/support.html#std.support.types.numeric_limits">Numeric Properties</a></span></dt><dt><span class="sect2"><a href="manual/support.html#std.support.types.null">NULL</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/dynamic_memory.html">Dynamic Memory</a></span></dt><dt><span class="sect1"><a href="manual/termination.html">Termination</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/termination.html#support.termination.handlers">Termination Handlers</a></span></dt><dt><span class="sect2"><a href="manual/termination.html#support.termination.verbose">Verbose Terminate Handler</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/diagnostics.html">5. Diagnostics -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/exceptions.html">7. Exceptions</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/exceptions.html#manual.diagnostics.exceptions.hierarchy">Exception Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch07s02.html">Adding Data to Exceptions</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/bk01pt03ch08.html">8. Concept Checking</a></span></dt></dl></dd><dt><span class="part"><a href="manual/utilities.html">IV. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/diagnostics.html#std.diagnostics.exceptions">Exceptions</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/diagnostics.html#std.diagnostics.exceptions.api">API Reference</a></span></dt><dt><span class="sect2"><a href="manual/diagnostics.html#std.diagnostics.exceptions.data">Adding Data to <code class="classname">exception</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt02ch05s02.html">Concept Checking</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/utilities.html">6. Utilities -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/functors.html">9. Functors</a></span></dt><dt><span class="chapter"><a href="manual/pairs.html">10. Pairs</a></span></dt><dt><span class="chapter"><a href="manual/memory.html">11. Memory</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/memory.html#manual.util.memory.allocator">Allocators</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/memory.html#allocator.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.using">Using a Specific Allocator</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.custom">Custom Allocators</a></span></dt><dt><span class="sect2"><a href="manual/memory.html#allocator.ext">Extension Allocators</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/auto_ptr.html">auto_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.limitations">Limitations</a></span></dt><dt><span class="sect2"><a href="manual/auto_ptr.html#auto_ptr.using">Use in Containers</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/shared_ptr.html">shared_ptr</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.using">Use</a></span></dt><dt><span class="sect2"><a href="manual/shared_ptr.html#shared_ptr.ack">Acknowledgments</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/traits.html">12. Traits</a></span></dt></dl></dd><dt><span class="part"><a href="manual/strings.html">V. +</a></span></dt><dd><dl><dt><span class="section"><a href="manual/utilities.html#std.util.functors">Functors</a></span></dt><dt><span class="section"><a href="manual/pairs.html">Pairs</a></span></dt><dt><span class="section"><a href="manual/memory.html">Memory</a></span></dt><dd><dl><dt><span class="section"><a href="manual/memory.html#std.util.memory.allocator">Allocators</a></span></dt><dt><span class="section"><a href="manual/memory.html#std.util.memory.auto_ptr">auto_ptr</a></span></dt><dt><span class="section"><a href="manual/memory.html#std.util.memory.shared_ptr">shared_ptr</a></span></dt></dl></dd><dt><span class="section"><a href="manual/traits.html">Traits</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/strings.html">7. Strings -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt05ch13.html">13. String Classes</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt05ch13.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s02.html">Case Sensitivity</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s03.html">Arbitrary Character Types</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s04.html">Tokenizing</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s05.html">Shrink to Fit</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt05ch13s06.html">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/localization.html">VI. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/strings.html#std.strings.string">String Classes</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/strings.html#strings.string.simple">Simple Transformations</a></span></dt><dt><span class="sect2"><a href="manual/strings.html#strings.string.case">Case Sensitivity</a></span></dt><dt><span class="sect2"><a href="manual/strings.html#strings.string.character_types">Arbitrary Character Types</a></span></dt><dt><span class="sect2"><a href="manual/strings.html#strings.string.token">Tokenizing</a></span></dt><dt><span class="sect2"><a href="manual/strings.html#strings.string.shrink">Shrink to Fit</a></span></dt><dt><span class="sect2"><a href="manual/strings.html#strings.string.Cstring">CString (MFC)</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/localization.html">8. Localization -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/locales.html">14. Locales</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/locales.html#manual.localization.locales.locale">locale</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/locales.html#locales.locale.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/locales.html#locales.locale.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/locales.html#locales.locale.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/locales.html#locales.locale.future">Future</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/facets.html">15. Facets aka Categories</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/facets.html#manual.localization.facet.ctype">ctype</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/facets.html#facet.ctype.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/facets.html#facet.ctype.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/codecvt.html">codecvt</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.use">Use</a></span></dt><dt><span class="sect2"><a href="manual/codecvt.html#facet.codecvt.future">Future</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/messages.html">messages</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/messages.html#facet.messages.req">Requirements</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.use">Use</a></span></dt><dt><span class="sect2"><a href="manual/messages.html#facet.messages.future">Future</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/containers.html">VII. +</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales">Locales</a></span></dt><dd><dl><dt><span class="section"><a href="manual/localization.html#std.localization.locales.locale">locale</a></span></dt></dl></dd><dt><span class="section"><a href="manual/facets.html">Facets</a></span></dt><dd><dl><dt><span class="section"><a href="manual/facets.html#std.localization.facet.ctype">ctype</a></span></dt><dt><span class="section"><a href="manual/facets.html#std.localization.facet.codecvt">codecvt</a></span></dt><dt><span class="section"><a href="manual/facets.html#manual.localization.facet.messages">messages</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers.html">9. Containers -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/sequences.html">16. Sequences</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/sequences.html#containers.sequences.list">list</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/sequences.html#sequences.list.size">list::size() is O(n)</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/vector.html">vector</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/vector.html#sequences.vector.management">Space Overhead Management</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/associative.html">17. Associative</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect1"><a href="manual/bitset.html">bitset</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bitset.html#associative.bitset.size_variable">Size Variable</a></span></dt><dt><span class="sect2"><a href="manual/bitset.html#associative.bitset.type_string">Type String</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/containers_and_c.html">18. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/iterators.html">VIII. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/containers.html#std.containers.sequences">Sequences</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/containers.html#containers.sequences.list">list</a></span></dt><dt><span class="sect2"><a href="manual/containers.html#containers.sequences.vector">vector</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/associative.html">Associative</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/associative.html#containers.associative.insert_hints">Insertion Hints</a></span></dt><dt><span class="sect2"><a href="manual/associative.html#containers.associative.bitset">bitset</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/containers_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/containers_and_c.html#containers.c.vs_array">Containers vs. Arrays</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/iterators.html">10. Iterators -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/bk01pt08ch19.html">19. Predefined</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt08ch19.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt08ch19s02.html">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/algorithms.html">IX. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/iterators.html#std.iterators.predefined">Predefined</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/iterators.html#iterators.predefined.vs_pointers">Iterators vs. Pointers</a></span></dt><dt><span class="sect2"><a href="manual/iterators.html#iterators.predefined.end">One Past the End</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/algorithms.html">11. Algorithms -</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt09pr02.html"></a></span></dt><dt><span class="chapter"><a href="manual/bk01pt09ch20.html">20. Mutating</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/bk01pt09ch20.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt09ch20.html#algorithms.swap.specializations">Specializations</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="manual/numerics.html">X. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/algorithms.html#std.algorithms.mutating">Mutating</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/algorithms.html#algorithms.mutating.swap"><code class="function">swap</code></a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/numerics.html">12. Numerics -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/complex.html">21. Complex</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/complex.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/generalized_numeric_operations.html">22. Generalized Operations</a></span></dt><dt><span class="chapter"><a href="manual/numerics_and_c.html">23. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt10ch23s02.html">C99</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/io.html">XI. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/numerics.html#std.numerics.complex">Complex</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/numerics.html#numerics.complex.processing">complex Processing</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/generalized_numeric_operations.html">Generalized Operations</a></span></dt><dt><span class="sect1"><a href="manual/numerics_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/numerics_and_c.html#numerics.c.array">Numerics vs. Arrays</a></span></dt><dt><span class="sect2"><a href="manual/numerics_and_c.html#numerics.c.c99">C99</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/io.html">13. Input and Output -</a></span></dt><dd><dl><dt><span class="chapter"><a href="manual/iostream_objects.html">24. Iostream Objects</a></span></dt><dt><span class="chapter"><a href="manual/streambufs.html">25. Stream Buffers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch25s02.html">Buffering</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/stringstreams.html">26. Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/stringstreams.html#manual.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/fstreams.html">27. File Based Streams</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/fstreams.html#manual.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch27s02.html">Binary Input and Output</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/io_and_c.html">28. Interacting with C</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/io_and_c.html#manual.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt11ch28s02.html">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/extensions.html">XII. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/io.html#std.io.objects">Iostream Objects</a></span></dt><dt><span class="sect1"><a href="manual/streambufs.html">Stream Buffers</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/streambufs.html#io.streambuf.derived">Derived streambuf Classes</a></span></dt><dt><span class="sect2"><a href="manual/streambufs.html#io.streambuf.buffering">Buffering</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/stringstreams.html">Memory Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/stringstreams.html#std.io.memstreams.compat">Compatibility With strstream</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/fstreams.html">File Based Streams</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/fstreams.html#std.io.filestreams.copying_a_file">Copying a File</a></span></dt><dt><span class="sect2"><a href="manual/fstreams.html#std.io.filestreams.binary">Binary Input and Output</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/io_and_c.html">Interacting with C</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/io_and_c.html#std.io.c.FILE">Using FILE* and file descriptors</a></span></dt><dt><span class="sect2"><a href="manual/io_and_c.html#std.io.c.sync">Performance</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/atomics.html">14. + Atomics + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/atomics.html#std.atomics.api">API Reference</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/concurrency.html">15. + Concurrency + +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/concurrency.html#std.concurrency.api">API Reference</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/extensions.html">III. Extensions -</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt12pr03.html"></a></span></dt><dt><span class="chapter"><a href="manual/ext_compile_checks.html">29. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="manual/debug_mode.html">30. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch30s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch30s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch30s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch30s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch30s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/parallel_mode.html">31. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch31s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch31s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch31s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch31s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch31s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="manual/parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/profile_mode.html">32. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="manual/profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch32s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch32s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch32s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch32s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch32s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch32s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch32s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch32s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="manual/profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_allocators.html">33. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/ext_containers.html">34. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch34s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt12ch34s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_utilities.html">35. Utilities</a></span></dt><dt><span class="chapter"><a href="manual/ext_algorithms.html">36. Algorithms</a></span></dt><dt><span class="chapter"><a href="manual/ext_numerics.html">37. Numerics</a></span></dt><dt><span class="chapter"><a href="manual/ext_iterators.html">38. Iterators</a></span></dt><dt><span class="chapter"><a href="manual/ext_io.html">39. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_demangling.html">40. Demangling</a></span></dt><dt><span class="chapter"><a href="manual/ext_concurrency.html">41. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch41s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt12ch41s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt12ch41s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt12ch41s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_contributing.html">A. +</a></span></dt><dd><dl><dt><span class="preface"><a href="manual/bk01pt03pr01.html"></a></span></dt><dt><span class="chapter"><a href="manual/ext_compile_checks.html">16. Compile Time Checks</a></span></dt><dt><span class="chapter"><a href="manual/debug_mode.html">17. Debug Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/debug_mode.html#manual.ext.debug_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch17s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch17s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch17s03.html#debug_mode.using.mode">Using the Debug Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch17s03.html#debug_mode.using.specific">Using a Specific Debug Container</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch17s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch17s04.html#debug_mode.design.goals">Goals</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch17s04.html#debug_mode.design.methods">Methods</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch17s04.html#debug_mode.design.other">Other Implementations</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/parallel_mode.html">18. Parallel Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/parallel_mode.html#manual.ext.parallel_mode.intro">Intro</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch18s02.html">Semantics</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch18s03.html">Using</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch18s03.html#parallel_mode.using.prereq_flags">Prerequisite Compiler Flags</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch18s03.html#parallel_mode.using.parallel_mode">Using Parallel Mode</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch18s03.html#parallel_mode.using.specific">Using Specific Parallel Components</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch18s04.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch18s04.html#parallel_mode.design.intro">Interface Basics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch18s04.html#parallel_mode.design.tuning">Configuration and Tuning</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch18s04.html#parallel_mode.design.impl">Implementation Namespaces</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch18s05.html">Testing</a></span></dt><dt><span class="bibliography"><a href="manual/parallel_mode.html#parallel_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/profile_mode.html">19. Profile Mode</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/profile_mode.html#manual.ext.profile_mode.intro">Intro</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/profile_mode.html#manual.ext.profile_mode.using">Using the Profile Mode</a></span></dt><dt><span class="sect2"><a href="manual/profile_mode.html#manual.ext.profile_mode.tuning">Tuning the Profile Mode</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch19s02.html">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.wrapper">Wrapper Model</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.instrumentation">Instrumentation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.rtlib">Run Time Behavior</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.analysis">Analysis and Diagnostics</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.cost-model">Cost Model</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.reports">Reports</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s02.html#manual.ext.profile_mode.design.testing">Testing</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch19s03.html">Extensions for Custom Containers</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch19s04.html">Empirical Cost Model</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch19s05.html">Implementation Issues</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stack">Stack Traces</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.symbols">Symbolization of Instruction Addresses</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.concurrency">Concurrency</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.stdlib-in-proflib">Using the Standard Library in the Instrumentation Implementation</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.malloc-hooks">Malloc Hooks</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s05.html#manual.ext.profile_mode.implementation.construction-destruction">Construction and Destruction of Global Objects</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch19s06.html">Developer Information</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch19s06.html#manual.ext.profile_mode.developer.bigpic">Big Picture</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s06.html#manual.ext.profile_mode.developer.howto">How To Add A Diagnostic</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch19s07.html">Diagnostics</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.template">Diagnostic Template</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.containers">Containers</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.algorithms">Algorithms</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.locality">Data Locality</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.mthread">Multithreaded Data Access</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch19s07.html#manual.ext.profile_mode.analysis.statistics">Statistics</a></span></dt></dl></dd><dt><span class="bibliography"><a href="manual/profile_mode.html#profile_mode.biblio">Bibliography</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_allocators.html">20. Allocators</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_allocators.html#manual.ext.allocator.mt">mt_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.intro">Intro</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.design_issues">Design Issues</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.example_single">Single Thread Example</a></span></dt><dt><span class="sect2"><a href="manual/ext_allocators.html#allocator.mt.example_multi">Multiple Thread Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bitmap_allocator.html">bitmap_allocator</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.design">Design</a></span></dt><dt><span class="sect2"><a href="manual/bitmap_allocator.html#allocator.bitmap.impl">Implementation</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="manual/ext_containers.html">21. Containers</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_containers.html#manual.ext.containers.pbds">Policy Based Data Structures</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch21s02.html">HP/SGI</a></span></dt><dt><span class="sect1"><a href="manual/bk01pt03ch21s03.html">Deprecated HP/SGI</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_utilities.html">22. Utilities</a></span></dt><dt><span class="chapter"><a href="manual/ext_algorithms.html">23. Algorithms</a></span></dt><dt><span class="chapter"><a href="manual/ext_numerics.html">24. Numerics</a></span></dt><dt><span class="chapter"><a href="manual/ext_iterators.html">25. Iterators</a></span></dt><dt><span class="chapter"><a href="manual/ext_io.html">26. Input and Output</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_io.html#manual.ext.io.filebuf_derived">Derived filebufs</a></span></dt></dl></dd><dt><span class="chapter"><a href="manual/ext_demangling.html">27. Demangling</a></span></dt><dt><span class="chapter"><a href="manual/ext_concurrency.html">28. Concurrency</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design">Design</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design.threads">Interface to Locks and Mutexes</a></span></dt><dt><span class="sect2"><a href="manual/ext_concurrency.html#manual.ext.concurrency.design.atomics">Interface to Atomic Functions</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch28s02.html">Implementation</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/bk01pt03ch28s02.html#manual.ext.concurrency.impl.atomic_fallbacks">Using Builtin Atomic Functions</a></span></dt><dt><span class="sect2"><a href="manual/bk01pt03ch28s02.html#manual.ext.concurrency.impl.thread">Thread Abstraction</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/bk01pt03ch28s03.html">Use</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="manual/bk01pt04.html">IV. + Appendices +</a></span></dt><dd><dl><dt><span class="appendix"><a href="manual/appendix_contributing.html">A. Contributing -</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="manual/source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.docbook">Docbook</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="manual/appendix_porting.html">B. +</a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_contributing.html#contrib.list">Contributor Checklist</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.reading">Reading</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.copyright">Assignment</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.getting">Getting Sources</a></span></dt><dt><span class="sect2"><a href="manual/appendix_contributing.html#list.patches">Submitting Patches</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_organization.html">Directory Layout and Source Conventions</a></span></dt><dt><span class="sect1"><a href="manual/source_code_style.html">Coding Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.bad_identifiers">Bad Identifiers</a></span></dt><dt><span class="sect2"><a href="manual/source_code_style.html#coding_style.example">By Example</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/documentation_style.html">Documentation Style</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.doxygen">Doxygen</a></span></dt><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.docbook">Docbook</a></span></dt><dt><span class="sect2"><a href="manual/documentation_style.html#doc_style.combines">Combines</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/source_design_notes.html">Design Notes</a></span></dt></dl></dd><dt><span class="appendix"><a href="manual/appendix_porting.html">B. Porting and Maintenance </a></span></dt><dd><dl><dt><span class="sect1"><a href="manual/appendix_porting.html#appendix.porting.build_hacking">Configure and Build Hacking</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.prereq">Prerequisites</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.map">Overview: What Comes from Where</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.scripts">Storing Information in non-AC files (like configure.host)</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.conventions">Coding and Commenting Conventions</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.acinclude">The acinclude.m4 layout</a></span></dt><dt><span class="sect2"><a href="manual/appendix_porting.html#build_hacking.enable"><code class="constant">GLIBCXX_ENABLE</code>, the <code class="literal">--enable</code> maker</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/internals.html">Porting to New Hardware or Operating Systems</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/internals.html#internals.os">Operating System</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.cpu">CPU</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.char_types">Character Types</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.thread_safety">Thread Safety</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.numeric_limits">Numeric Limits</a></span></dt><dt><span class="sect2"><a href="manual/internals.html#internals.libtool">Libtool</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/test.html">Test</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/test.html#test.organization">Organization</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.run">Running the Testsuite</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.new_tests">Writing a new test case</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.harness">Test Harness and Utilities</a></span></dt><dt><span class="sect2"><a href="manual/test.html#test.special">Special Topics</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/abi.html">ABI Policy and Guidelines</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/abi.html#abi.cxx_interface">The C++ Interface</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.versioning">Versioning</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_allowed">Allowed Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.changes_no">Prohibited Changes</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.impl">Implementation</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.testing">Testing</a></span></dt><dt><span class="sect2"><a href="manual/abi.html#abi.issues">Outstanding Issues</a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/api.html">API Evolution and Deprecation History</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/api.html#api.rel_300"><code class="constant">3.0</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_310"><code class="constant">3.1</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_320"><code class="constant">3.2</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_330"><code class="constant">3.3</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_340"><code class="constant">3.4</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_400"><code class="constant">4.0</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_410"><code class="constant">4.1</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_420"><code class="constant">4.2</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_430"><code class="constant">4.3</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_440"><code class="constant">4.4</code></a></span></dt><dt><span class="sect2"><a href="manual/api.html#api.rel_450"><code class="constant">4.5</code></a></span></dt></dl></dd><dt><span class="sect1"><a href="manual/backwards.html">Backwards Compatibility</a></span></dt><dd><dl><dt><span class="sect2"><a href="manual/backwards.html#backwards.first">First</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.second">Second</a></span></dt><dt><span class="sect2"><a href="manual/backwards.html#backwards.third">Third</a></span></dt></dl></dd></dl></dd><dt><span class="appendix"><a href="manual/appendix_free.html">C. @@ -49,4 +59,4 @@ </a></span></dt><dt><span class="appendix"><a href="manual/appendix_gpl.html">D. <acronym class="acronym">GNU</acronym> General Public License version 3 - </a></span></dt><dt><span class="appendix"><a href="manual/appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt><dt><span class="index"><a href="manual/bk01ix01.html">Index</a></span></dt></dl></dd><dt><span class="book"><a href="bk02.html"></a></span></dt><dd><dl><dt><span class="article"><a href="api.html">API and Source Level Documentation</a></span></dt></dl></dd><dt><span class="book"><a href="bk03.html"></a></span></dt><dd><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> The GNU C++ Library</td></tr></table></div></body></html> + </a></span></dt><dt><span class="appendix"><a href="manual/appendix_gfdl.html">E. GNU Free Documentation License</a></span></dt></dl></dd></dl></dd><dt><span class="book"><a href="bk02.html"></a></span></dt><dd><dl><dt><span class="article"><a href="api.html">API Documentation</a></span></dt></dl></dd><dt><span class="book"><a href="bk03.html"></a></span></dt><dd><dl><dt><span class="article"><a href="faq.html">Frequently Asked Questions</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="manual/spine.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> The GNU C++ Library</td></tr></table></div></body></html> diff --git a/libstdc++-v3/doc/xml/api.xml b/libstdc++-v3/doc/xml/api.xml index 3073ed8ba6f..d29bb5c04ca 100644 --- a/libstdc++-v3/doc/xml/api.xml +++ b/libstdc++-v3/doc/xml/api.xml @@ -1,15 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> +<book xmlns="http://docbook.org/ns/docbook" version="5.0"> -<book> - -<article id="api" xreflabel="API"> +<article xml:id="api" xreflabel="API"> <?dbhtml filename="api.html"?> -<articleinfo> - <title>API Documentation</title> +<title>The GNU C++ Library API Reference</title> + +<info> <copyright> <year> 2008 @@ -18,8 +14,8 @@ 2010 </year> <holder> - <ulink url="http://www.fsf.org/">FSF - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">FSF + </link> </holder> </copyright> <legalnotice> @@ -28,7 +24,7 @@ </link> </para> </legalnotice> -</articleinfo> +</info> <para> The GNU C++ library sources have been specially formatted so that @@ -47,38 +43,38 @@ <itemizedlist> <listitem> <para> - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html">for the 3.4 release + </link> </para> </listitem> <listitem> <para> - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.1/index.html">for the 4.1 release + </link> </para> </listitem> <listitem> <para> - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/index.html">for the 4.2 release + </link> </para> </listitem> <listitem> <para> - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.3/index.html">for the 4.3 release + </link> </para> </listitem> <listitem> <para> - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/index.html">for the 4.4 release + </link> </para> </listitem> <listitem> <para> - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection" - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/index.html">"the latest collection" + </link> (For the main development tree; see the date on the first page.) </para> </listitem> @@ -89,7 +85,7 @@ gcc.org site in a directory located at <literal><URL:ftp://gcc.gnu.org/pub/gcc/libstdc++/doxygen/></literal>. You will almost certainly need to use one of the - <ulink url="http://gcc.gnu.org/mirrors.html">mirror sites</ulink> to download + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">mirror sites</link> to download the tarball. After unpacking, simply load libstdc++-html-*/index.html into a browser. </para> diff --git a/libstdc++-v3/doc/xml/authors.xml b/libstdc++-v3/doc/xml/authors.xml index 5d7909f8b14..1f26f63fbc6 100644 --- a/libstdc++-v3/doc/xml/authors.xml +++ b/libstdc++-v3/doc/xml/authors.xml @@ -1,4 +1,4 @@ -<authorgroup> +<authorgroup xmlns="http://docbook.org/ns/docbook" version="5.0"> <!-- <author> @@ -20,176 +20,101 @@ </author> --> - <author> - <firstname></firstname> - <surname></surname> - - <authorblurb> + <author><personname><firstname/><surname/></personname><personblurb> <para> </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Paolo</firstname> - <surname>Carlini</surname> - - <authorblurb> + <author><personname><firstname>Paolo</firstname><surname>Carlini</surname></personname><personblurb> <para> TR1, LWG Active, Closed, Defects lists. </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Phil</firstname> - <surname>Edwards</surname> - - <authorblurb> + <author><personname><firstname>Phil</firstname><surname>Edwards</surname></personname><personblurb> <para> Originating author, started HOWTO and FAQ, worked on sections Demangling, Macros, Strings, Iterators, Backwards Compatibility, SGI Extensions, Configure, Build, Install. </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Doug</firstname> - <surname>Gregor</surname> - - <authorblurb> + <author><personname><firstname>Doug</firstname><surname>Gregor</surname></personname><personblurb> <para> Debug Mode, TR1 function objects </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Benjamin</firstname> - <surname>Kosnik</surname> - - <authorblurb> + <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname><personblurb> <para> Allocators, ABI, API evolution and deprecation history, Backwards Compatibility, Thread, Debug Support, Locales, Facets, Parallel Mode, Headers, Namespaces, Construction and Structure, Using Exceptions, DocBook conversion and layout. </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Dhruv</firstname> - <surname>Matani</surname> - - <authorblurb> + <author><personname><firstname>Dhruv</firstname><surname>Matani</surname></personname><personblurb> <para> bitmap_allocator </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Jason</firstname> - <surname>Merrill</surname> - - <authorblurb> + <author><personname><firstname>Jason</firstname><surname>Merrill</surname></personname><personblurb> <para> License, __verbose_terminate_handler </para> - </authorblurb> - </author> - - <author> - <firstname>Mark</firstname> - <surname>Mitchell</surname> + </personblurb></author> - <authorblurb> + <author><personname><firstname>Mark</firstname><surname>Mitchell</surname></personname><personblurb> <para> Porting </para> - </authorblurb> - </author> - - <author> - <firstname>Nathan</firstname> - <surname>Myers</surname> + </personblurb></author> - <authorblurb> + <author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb> <para> Referenced counted string, C++1998 implementation status. </para> - </authorblurb> - </author> - - <author> - <firstname>Felix</firstname> - <surname>Natter</surname> + </personblurb></author> - <authorblurb> + <author><personname><firstname>Felix</firstname><surname>Natter</surname></personname><personblurb> <para> Namespace composition, Backwards Compatibility. </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Stefan</firstname> - <surname>Olsson</surname> - - <authorblurb> + <author><personname><firstname>Stefan</firstname><surname>Olsson</surname></personname><personblurb> <para> mt_allocator </para> - </authorblurb> - </author> - - <author> - <firstname>Silvius</firstname> - <surname>Rus</surname> + </personblurb></author> - <authorblurb> + <author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname><personblurb> <para> Profile mode </para> - </authorblurb> - </author> - - <author> - <firstname>Johannes</firstname> - <surname>Singler</surname> + </personblurb></author> - <authorblurb> + <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname><personblurb> <para> Parallel mode </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Ami</firstname> - <surname>Tavory</surname> - - <authorblurb> + <author><personname><firstname>Ami</firstname><surname>Tavory</surname></personname><personblurb> <para> Policy Based Data Structures, Associative Containers, Unordered Containers. </para> - </authorblurb> - </author> + </personblurb></author> - <author> - <firstname>Jonathan</firstname> - <surname>Wakely</surname> - - <authorblurb> + <author><personname><firstname>Jonathan</firstname><surname>Wakely</surname></personname><personblurb> <para> shared_ptr, markup editing and styling </para> - </authorblurb> - </author> + </personblurb></author> </authorgroup> diff --git a/libstdc++-v3/doc/xml/book.txml b/libstdc++-v3/doc/xml/book.txml index a77690d0d32..55b050271a5 100644 --- a/libstdc++-v3/doc/xml/book.txml +++ b/libstdc++-v3/doc/xml/book.txml @@ -1,32 +1,29 @@ -<?xml version='1.0'?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> +<!-- Converted by db4-upgrade version 1.0 --> + +<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="api" xreflabel="Source Level Documentation"> -<book id="api" xreflabel="Source Level Documentation"> -<title>Source Level Documentation</title> -<bookinfo> +<info> <copyright> <year>2007</year> <holder> - <ulink url="www.fsf.org">FSF - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="www.fsf.org">FSF + </link> </holder> </copyright> <legalnotice> <para> - <ulink url="17_intro/license.html">License - </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="17_intro/license.html">License + </link> </para> </legalnotice> -</bookinfo> +</info> + +<part><info><title/></info> -<part> -<title></title> - <chapter> - <title></title> - <para></para> + <chapter><info><title/></info> + + <para/> </chapter> </part> diff --git a/libstdc++-v3/doc/xml/chapter.txml b/libstdc++-v3/doc/xml/chapter.txml index 9cf5b74e855..85323e73baa 100644 --- a/libstdc++-v3/doc/xml/chapter.txml +++ b/libstdc++-v3/doc/xml/chapter.txml @@ -1,11 +1,8 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> +<!-- Converted by db4-upgrade version 1.0 --> -<chapter id="manual.intro" xreflabel="Introduction"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction"> -<chapterinfo> +<info><title>Introduction</title> <keywordset> <keyword> ISO C++ @@ -14,41 +11,41 @@ library </keyword> </keywordset> -</chapterinfo> +</info> -<title>Introduction</title> -<sect1 id="manual.intro.status" xreflabel="Status"> - <title>Status</title> + +<section xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info> + <para> The GNU C++ ... </para> -</sect1> +</section> -<sect1 id="manual.intro.setup" xreflabel="Setup"> - <title>Setup</title> +<section xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info> + <para> The GNU C++ ... </para> - <sect2 id="manual.intro.setup.next1" xreflabel="Next1"> - <title>Next1</title> + <section xml:id="manual.intro.setup.next1" xreflabel="Next1"><info><title>Next1</title></info> + <para> The GNU C++ ... </para> - </sect2> - <sect2 id="manual.intro.setup.next2" xreflabel="Next2"> - <title>Next2</title> + </section> + <section xml:id="manual.intro.setup.next2" xreflabel="Next2"><info><title>Next2</title></info> + <para> The GNU C++ ... </para> - </sect2> -</sect1> + </section> +</section> -<sect1 id="manual.intro.using" xreflabel="Using"> - <title>Using</title> +<section xml:id="manual.intro.using" xreflabel="Using"><info><title>Using</title></info> + <para> The GNU C++ ... </para> -</sect1> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/class.txml b/libstdc++-v3/doc/xml/class.txml index 83497db3720..26c9acf97f1 100644 --- a/libstdc++-v3/doc/xml/class.txml +++ b/libstdc++-v3/doc/xml/class.txml @@ -1,7 +1,9 @@ -<sect1 id="manual.util.memory.allocator" xreflabel="allocator"> +<!-- Converted by db4-upgrade version 1.0 --> + +<section xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.util.memory.allocator" xreflabel="allocator"> <?dbhtml filename="allocator.html"?> -<sect1info> +<info><title>allocator</title> <keywordset> <keyword> ISO C++ @@ -10,15 +12,15 @@ allocator </keyword> </keywordset> -</sect1info> +</info> + -<title>allocator</title> <para> </para> -<sect2 id="allocator.req" xreflabel="allocator.req"> -<title>Requirements</title> +<section xml:id="allocator.req" xreflabel="allocator.req"><info><title>Requirements</title></info> + <para> </para> @@ -35,33 +37,33 @@ <para> </para> -</sect2> +</section> + +<section xml:id="allocator.design_issues" xreflabel="allocator.design_issues"><info><title>Design Issues</title></info> -<sect2 id="allocator.design_issues" xreflabel="allocator.design_issues"> -<title>Design Issues</title> <para> </para> <para> </para> -</sect2> +</section> + +<section xml:id="allocator.impl" xreflabel="allocator.impl"><info><title>Implementation</title></info> -<sect2 id="allocator.impl" xreflabel="allocator.impl"> -<title>Implementation</title> - <sect3> - <title>Interface Design</title> + <section><info><title>Interface Design</title></info> + <para> </para> <para> </para> - </sect3> + </section> - <sect3> - <title>Selecting Default Allocation Strategy</title> + <section><info><title>Selecting Default Allocation Strategy</title></info> + <para> </para> @@ -76,38 +78,38 @@ <listitem> </listitem> </orderedlist> - </sect3> + </section> - <sect3> - <title>Disabling Memory Caching</title> + <section><info><title>Disabling Memory Caching</title></info> + <para> </para> <para> </para> - </sect3> -</sect2> + </section> +</section> + +<section xml:id="allocator.using" xreflabel="allocator.using"><info><title>Using</title></info> -<sect2 id="allocator.using" xreflabel="allocator.using"> -<title>Using</title> <para> </para> -</sect2> +</section> + +<section xml:id="allocator.custom" xreflabel="allocator.custom"><info><title>Custom Allocators</title></info> -<sect2 id="allocator.custom" xreflabel="allocator.custom"> -<title>Custom Allocators</title> <para> </para> <para> </para> -</sect2> +</section> + +<bibliography xml:id="allocator.biblio" xreflabel="allocator.biblio"><info><title>Bibliography</title></info> -<bibliography id="allocator.biblio" xreflabel="allocator.biblio"> -<title>Bibliography</title> <!-- <biblioentry> @@ -116,11 +118,11 @@ <biblioid class="uri"> <ulink url="http://about:blank"> - <citetitle> - The Title - </citetitle> </ulink> </biblioid> + <citetitle> + The Title + </citetitle> <editor> <firstname></firstname> @@ -151,4 +153,4 @@ </bibliography> -</sect1>
\ No newline at end of file +</section> diff --git a/libstdc++-v3/doc/xml/faq.xml b/libstdc++-v3/doc/xml/faq.xml index 7a0953ccbe0..f8e6312386a 100644 --- a/libstdc++-v3/doc/xml/faq.xml +++ b/libstdc++-v3/doc/xml/faq.xml @@ -1,39 +1,34 @@ -<?xml version='1.0'?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> +<book xmlns="http://docbook.org/ns/docbook" version="5.0"> -<book> - -<article id="faq" xreflabel="Frequently Asked Questions"> +<article xml:id="faq" xreflabel="Frequently Asked Questions"> <?dbhtml filename="faq.html"?> -<articleinfo> - <title>Frequently Asked Questions</title> +<info><title>Frequently Asked Questions</title> + <copyright> <year> - 2008 + 2008, 2010 </year> <holder> - <ulink url="http://www.fsf.org">FSF</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link> </holder> </copyright> -</articleinfo> +</info> <!-- FAQ starts here --> <qandaset> <!-- General Information --> -<qandadiv id="faq.info" xreflabel="General Information"> -<title>General Information</title> +<qandadiv xml:id="faq.info" xreflabel="General Information"> + -<qandaentry id="faq.what"> - <question id="faq.what.q"> +<qandaentry xml:id="faq.what"> + <question xml:id="faq.what.q"> <para> What is libstdc++? </para> </question> - <answer id="faq.what.a"> + <answer xml:id="faq.what.a"> <para> The GNU Standard C++ Library v3 is an ongoing project to implement the ISO 14882 Standard C++ library as described in @@ -41,18 +36,18 @@ exactly how far the project has come, or just want the latest bleeding-edge code, the up-to-date source is available over anonymous SVN, and can even be browsed over - the <ulink url="http://gcc.gnu.org/svn.html">web</ulink>. + the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html">web</link>. </para> </answer> </qandaentry> -<qandaentry id="faq.why"> - <question id="q-why"> +<qandaentry xml:id="faq.why"> + <question xml:id="q-why"> <para> Why should I use libstdc++? </para> </question> - <answer id="a-why"> + <answer xml:id="a-why"> <para> The completion of the ISO C++ standardization gave the C++ community a powerful set of reuseable tools in the form of the C++ @@ -66,9 +61,9 @@ (<command>gcc</command>, <command>g++</command>, etc) is widely considered to be one of the leading compilers in the world. Its development is overseen by the - <ulink url="http://gcc.gnu.org/">GCC team</ulink>. All of + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/">GCC team</link>. All of the rapid development and near-legendary - <ulink url="http://gcc.gnu.org/buildstat.html">portability</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/buildstat.html">portability</link> that are the hallmarks of an open-source project are being applied to libstdc++. </para> @@ -83,13 +78,13 @@ </answer> </qandaentry> -<qandaentry id="faq.who"> - <question id="q-who"> +<qandaentry xml:id="faq.who"> + <question xml:id="q-who"> <para> Who's in charge of it? </para> </question> - <answer id="a-who"> + <answer xml:id="a-who"> <para> The libstdc++ project is contributed to by several developers all over the world, in the same way as GCC or Linux. @@ -101,19 +96,19 @@ Development and discussion is held on the libstdc++ mailing list. Subscribing to the list, or searching the list archives, is open to everyone. You can read instructions for - doing so on the <ulink url="http://gcc.gnu.org/libstdc++/">homepage</ulink>. + doing so on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/libstdc++/">homepage</link>. If you have questions, ideas, code, or are just curious, sign up! </para> </answer> </qandaentry> -<qandaentry id="faq.when"> - <question id="q-when"> +<qandaentry xml:id="faq.when"> + <question xml:id="q-when"> <para> When is libstdc++ going to be finished? </para> </question> - <answer id="a-when"> + <answer xml:id="a-when"> <para> Nathan Myers gave the best of all possible answers, responding to a Usenet article asking this question: <emphasis>Sooner, if you @@ -122,13 +117,13 @@ </answer> </qandaentry> -<qandaentry id="faq.how"> - <question id="q-how"> +<qandaentry xml:id="faq.how"> + <question xml:id="q-how"> <para> How do I contribute to the effort? </para> </question> - <answer id="a-how"> + <answer xml:id="a-how"> <para> Here is <link linkend="appendix.contrib">a page devoted to this topic</link>. Subscribing to the mailing list (see above, or @@ -142,13 +137,13 @@ </answer> </qandaentry> -<qandaentry id="faq.whereis_old"> - <question id="q-whereis_old"> +<qandaentry xml:id="faq.whereis_old"> + <question xml:id="q-whereis_old"> <para> What happened to the older libg++? I need that! </para> </question> - <answer id="a-whereis_old"> + <answer xml:id="a-whereis_old"> <para> The most recent libg++ README states that libg++ is no longer being actively maintained. It should not be used for new @@ -160,13 +155,13 @@ </answer> </qandaentry> -<qandaentry id="faq.more_questions"> - <question id="q-more_questions"> +<qandaentry xml:id="faq.more_questions"> + <question xml:id="q-more_questions"> <para> What if I have more questions? </para> </question> - <answer id="a-more_questions"> + <answer xml:id="a-more_questions"> <para> If you have read the README file, and your question remains unanswered, then just ask the mailing list. At present, you do not @@ -187,16 +182,16 @@ </qandadiv> <!-- License --> -<qandadiv id="faq.license" xreflabel="License QA"> -<title>License</title> +<qandadiv xml:id="faq.license" xreflabel="License QA"> + -<qandaentry id="faq.license.what"> - <question id="q-license.what"> +<qandaentry xml:id="faq.license.what"> + <question xml:id="q-license.what"> <para> What are the license terms for libstdc++? </para> </question> - <answer id="a-license.what"> + <answer xml:id="a-license.what"> <para> See <link linkend="manual.intro.status.license">our license description</link> for these and related questions. @@ -204,13 +199,13 @@ </answer> </qandaentry> -<qandaentry id="faq.license.any_program"> - <question id="q-license.any_program"> +<qandaentry xml:id="faq.license.any_program"> + <question xml:id="q-license.any_program"> <para> So any program which uses libstdc++ falls under the GPL? </para> </question> - <answer id="a-license.any_program"> + <answer xml:id="a-license.any_program"> <para> No. The special exception permits use of the library in proprietary applications. @@ -219,13 +214,13 @@ </qandaentry> -<qandaentry id="faq.license.lgpl"> - <question id="q-license.lgpl"> +<qandaentry xml:id="faq.license.lgpl"> + <question xml:id="q-license.lgpl"> <para> How is that different from the GNU {Lesser,Library} GPL? </para> </question> - <answer id="a-license.lgpl"> + <answer xml:id="a-license.lgpl"> <para> The LGPL requires that users be able to replace the LGPL code with a modified version; this is trivial if the library in question is a C @@ -238,13 +233,13 @@ </answer> </qandaentry> -<qandaentry id="faq.license.what_restrictions"> - <question id="q-license.what_restrictions"> +<qandaentry xml:id="faq.license.what_restrictions"> + <question xml:id="q-license.what_restrictions"> <para> I see. So, what restrictions are there on programs that use the library? </para> </question> - <answer id="a-license.what_restrictions"> + <answer xml:id="a-license.what_restrictions"> <para> None. We encourage such programs to be released as open source, but we won't punish you or sue you if you choose otherwise. @@ -255,15 +250,15 @@ </qandadiv> <!-- Installation --> -<qandadiv id="faq.installation" xreflabel="Installation"> -<title>Installation</title> +<qandadiv xml:id="faq.installation" xreflabel="Installation"> -<qandaentry id="faq.how_to_install"> - <question id="q-how_to_install"> + +<qandaentry xml:id="faq.how_to_install"> + <question xml:id="q-how_to_install"> <para>How do I install libstdc++? </para> </question> - <answer id="a-how_to_install"> + <answer xml:id="a-how_to_install"> <para> Often libstdc++ comes pre-installed as an integral part of many existing Linux and Unix systems, as well as many embedded @@ -281,17 +276,17 @@ </answer> </qandaentry> -<qandaentry id="faq.how_to_get_sources"> - <question id="q-how_to_get_sources"> +<qandaentry xml:id="faq.how_to_get_sources"> + <question xml:id="q-how_to_get_sources"> <para>How does one get current libstdc++ sources? </para> </question> - <answer id="a-how_to_get_sources"> + <answer xml:id="a-how_to_get_sources"> <para> Libstdc++ sources for all official releases can be obtained as part of the GCC sources, available from various sites and - mirrors. A full <ulink url="http://gcc.gnu.org/mirrors.html">list of - download sites</ulink> is provided on the main GCC site. + mirrors. A full <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/mirrors.html">list of + download sites</link> is provided on the main GCC site. </para> <para> Current libstdc++ sources can always be checked out of the main @@ -303,8 +298,8 @@ <application>Subversion</application>, or <acronym>SVN</acronym>, is one of several revision control packages. It was selected for GNU projects because it's free (speech), free (beer), and very high - quality. The <ulink url="http://subversion.tigris.org"> Subversion - home page</ulink> has a better description. + quality. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://subversion.tigris.org"> Subversion + home page</link> has a better description. </para> <para> The <quote>anonymous client checkout</quote> feature of SVN is @@ -313,24 +308,24 @@ </para> <para> For more information - see <ulink url="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym> - details</ulink>. + see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svn.html"><acronym>SVN</acronym> + details</link>. </para> </answer> </qandaentry> -<qandaentry id="faq.how_to_test"> - <question id="q-how_to_test"> +<qandaentry xml:id="faq.how_to_test"> + <question xml:id="q-how_to_test"> <para>How do I know if it works? </para> </question> - <answer id="a-how_to_test"> + <answer xml:id="a-how_to_test"> <para> Libstdc++ comes with its own validation testsuite, which includes conformance testing, regression testing, ABI testing, and performance testing. Please consult the - <ulink url="http://gcc.gnu.org/install/test.html">testing - documentation</ulink> for more details. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/test.html">testing + documentation</link> for more details. </para> <para> If you find bugs in the testsuite programs themselves, or if you @@ -340,12 +335,12 @@ </answer> </qandaentry> -<qandaentry id="faq.how_to_set_paths"> - <question id="q-how_to_set_paths"> +<qandaentry xml:id="faq.how_to_set_paths"> + <question xml:id="q-how_to_set_paths"> <para>How do I insure that the dynamically linked library will be found? </para> </question> - <answer id="a-how_to_set_paths"> + <answer xml:id="a-how_to_set_paths"> <para> Depending on your platform and library version, the error message might be similar to one of the following: @@ -387,16 +382,20 @@ linker has different names on different platforms but the man page is usually called something such as <filename>ld.so/rtld/dld.so</filename>. </para> + <para> + Using LD_LIBRARY_PATH is not always the best solution, <link linkend="manual.intro.using.linkage.dynamic">Finding Dynamic or Shared + Libraries</link> in the manual gives some alternatives. + </para> </answer> </qandaentry> -<qandaentry id="faq.what_is_libsupcxx"> - <question id="q-what_is_libsupcxx"> +<qandaentry xml:id="faq.what_is_libsupcxx"> + <question xml:id="q-what_is_libsupcxx"> <para> What's libsupc++? </para> </question> - <answer id="a-what_is_libsupcxx"> + <answer xml:id="a-what_is_libsupcxx"> <para> If the only functions from <filename>libstdc++.a</filename> which you need are language support functions (those listed in @@ -416,13 +415,13 @@ </answer> </qandaentry> -<qandaentry id="faq.size"> - <question id="q-size"> +<qandaentry xml:id="faq.size"> + <question xml:id="q-size"> <para> This library is HUGE! </para> </question> - <answer id="a-size"> + <answer xml:id="a-size"> <para> Usually the size of libraries on disk isn't noticeable. When a link editor (or simply <quote>linker</quote>) pulls things from a @@ -462,16 +461,16 @@ <!-- Platform-Specific Issues --> -<qandadiv id="faq.platform-specific" xreflabel="Platform-Specific Issues"> -<title>Platform-Specific Issues</title> +<qandadiv xml:id="faq.platform-specific" xreflabel="Platform-Specific Issues"> + -<qandaentry id="faq.other_compilers"> - <question id="q-other_compilers"> +<qandaentry xml:id="faq.other_compilers"> + <question xml:id="q-other_compilers"> <para> Can libstdc++ be used with non-GNU compilers? </para> </question> - <answer id="a-other_compilers"> + <answer xml:id="a-other_compilers"> <para> Perhaps. </para> @@ -486,7 +485,7 @@ non-standard features of g++ that are not present in older versions of proprietary compilers. It may take as much as a year or two after an official release of GCC that contains these features for - proprietary tools support these constructs. + proprietary tools to support these constructs. </para> <para> In the near past, specific released versions of libstdc++ have @@ -498,13 +497,13 @@ </answer> </qandaentry> -<qandaentry id="faq.solaris_long_long"> - <question id="q-solaris_long_long"> +<qandaentry xml:id="faq.solaris_long_long"> + <question xml:id="q-solaris_long_long"> <para> No 'long long' type on Solaris? </para> </question> - <answer id="a-solaris_long_long"> + <answer xml:id="a-solaris_long_long"> <para> By default we try to support the C99 <type>long long</type> type. This requires that certain functions from your C library be present. @@ -521,13 +520,13 @@ </answer> </qandaentry> -<qandaentry id="faq.predefined"> - <question id="q-predefined"> +<qandaentry xml:id="faq.predefined"> + <question xml:id="q-predefined"> <para> <constant>_XOPEN_SOURCE</constant> and <constant>_GNU_SOURCE</constant> are always defined? </para> </question> - <answer id="a-predefined"> + <answer xml:id="a-predefined"> <para>On Solaris, g++ (but not gcc) always defines the preprocessor macro <constant>_XOPEN_SOURCE</constant>. On GNU/Linux, the same happens with <constant>_GNU_SOURCE</constant>. (This is not an exhaustive list; @@ -553,11 +552,11 @@ <para>To see which symbols are defined, look for CPLUSPLUS_CPP_SPEC in the gcc config headers for your target (and try changing them to see what happens when building complicated code). You can also run - <command>g++ -E -dM - < /dev/null"</command> to display + <command>g++ -E -dM - < /dev/null"</command> to display a list of predefined macros for any particular installation. </para> <para>This has been discussed on the mailing lists - <ulink url="http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris">quite a bit</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/cgi-bin/htsearch?method=and&format=builtin-long&sort=score&words=_XOPEN_SOURCE+Solaris">quite a bit</link>. </para> <para>This method is something of a wart. We'd like to find a cleaner solution, but nobody yet has contributed the time. @@ -566,29 +565,29 @@ </answer> </qandaentry> -<qandaentry id="faq.darwin_ctype"> - <question id="q-darwin_ctype"> +<qandaentry xml:id="faq.darwin_ctype"> + <question xml:id="q-darwin_ctype"> <para> Mac OS X <filename class="headerfile">ctype.h</filename> is broken! How can I fix it? </para> </question> - <answer id="a-darwin_ctype"> + <answer xml:id="a-darwin_ctype"> <para>This is a long-standing bug in the OS X support. Fortunately, the patch is quite simple, and well-known. - <ulink url="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a - link to the solution</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/2002-03/msg00817.html"> Here's a + link to the solution</link>. </para> </answer> </qandaentry> -<qandaentry id="faq.threads_i386"> - <question id="q-threads_i386"> +<qandaentry xml:id="faq.threads_i386"> + <question xml:id="q-threads_i386"> <para> Threading is broken on i386? </para> </question> - <answer id="a-threads_i386"> + <answer xml:id="a-threads_i386"> <para> </para> <para>Support for atomic integer operations is/was broken on i386 @@ -604,13 +603,13 @@ </answer> </qandaentry> -<qandaentry id="faq.atomic_mips"> - <question id="q-atomic_mips"> +<qandaentry xml:id="faq.atomic_mips"> + <question xml:id="q-atomic_mips"> <para> MIPS atomic operations </para> </question> - <answer id="a-atomic_mips"> + <answer xml:id="a-atomic_mips"> <para> The atomic locking routines for MIPS targets requires MIPS II and later. A patch went in just after the 3.3 release to @@ -624,18 +623,19 @@ </answer> </qandaentry> -<qandaentry id="faq.linux_glibc"> - <question id="q-linux_glibc"> +<qandaentry xml:id="faq.linux_glibc"> + <question xml:id="q-linux_glibc"> <para> Recent GNU/Linux glibc required? </para> </question> - <answer id="a-linux_glibc"> + <answer xml:id="a-linux_glibc"> <para>When running on GNU/Linux, libstdc++ 3.2.1 (shared library version 5.0.1) and later uses localization and formatting code from the system - C library (glibc) version 2.2.5. That version of glibc is over a - year old and contains necessary bugfixes. Many GNU/Linux distros make - glibc version 2.3.x available now. + C library (glibc) version 2.2.5 which contains necessary bugfixes. + Most GNU/Linux distros make more recent versions available now. + libstdc++ 4.6.0 and later require glibc 2.3 or later for this + localization and formatting code. </para> <para>The guideline is simple: the more recent the C++ library, the more recent the C library. (This is also documented in the main @@ -645,13 +645,13 @@ </answer> </qandaentry> -<qandaentry id="faq.freebsd_wchar"> - <question id="q-freebsd_wchar"> +<qandaentry xml:id="faq.freebsd_wchar"> + <question xml:id="q-freebsd_wchar"> <para> Can't use wchar_t/wstring on FreeBSD </para> </question> - <answer id="a-freebsd_wchar"> + <answer xml:id="a-freebsd_wchar"> <para> Older versions of FreeBSD's C library do not have sufficient support for wide character functions, and as a result the @@ -672,16 +672,16 @@ <!-- Known Bugs --> -<qandadiv id="faq.known_bugs" xreflabel="Known Bugs"> -<title>Known Bugs</title> +<qandadiv xml:id="faq.known_bugs" xreflabel="Known Bugs"> + -<qandaentry id="faq.what_works"> - <question id="q-what_works"> +<qandaentry xml:id="faq.what_works"> + <question xml:id="q-what_works"> <para> What works already? </para> </question> - <answer id="a-what_works"> + <answer xml:id="a-what_works"> <para> Short answer: Pretty much everything <emphasis>works</emphasis> except for some corner cases. Support for localization @@ -699,13 +699,13 @@ </answer> </qandaentry> -<qandaentry id="faq.standard_bugs"> - <question id="q-standard_bugs"> +<qandaentry xml:id="faq.standard_bugs"> + <question xml:id="q-standard_bugs"> <para> Bugs in the ISO C++ language or library specification </para> </question> - <answer id="a-standard_bugs"> + <answer xml:id="a-standard_bugs"> <para> Unfortunately, there are some. </para> @@ -713,7 +713,7 @@ For those people who are not part of the ISO Library Group (i.e., nearly all of us needing to read this page in the first place), a public list of the library defects is occasionally - published <ulink url="http://anubis.dkuug.dk/jtc1/sc22/wg21/">here</ulink>. + published <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">here</link>. Some of these issues have resulted in code changes in libstdc++. </para> <para> @@ -725,13 +725,13 @@ </answer> </qandaentry> -<qandaentry id="faq.compiler_bugs"> - <question id="q-compiler_bugs"> +<qandaentry xml:id="faq.compiler_bugs"> + <question xml:id="q-compiler_bugs"> <para> Bugs in the compiler (gcc/g++) and not libstdc++ </para> </question> - <answer id="a-compiler_bugs"> + <answer xml:id="a-compiler_bugs"> <para> On occasion, the compiler is wrong. Please be advised that this happens much less often than one would think, and avoid jumping to @@ -745,7 +745,7 @@ </para> <para> Before reporting a bug, please examine the - <ulink url="http://gcc.gnu.org/bugs.html">bugs database</ulink> with the + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs.html">bugs database</link> with the category set to <quote>g++</quote>. </para> </answer> @@ -754,21 +754,21 @@ </qandadiv> <!-- Known Non-Bugs --> -<qandadiv id="faq.known_non-bugs" xreflabel="Known Non-Bugs"> -<title>Known Non-Bugs</title> +<qandadiv xml:id="faq.known_non-bugs" xreflabel="Known Non-Bugs"> -<qandaentry id="faq.stream_reopening_fails"> - <question id="q-stream_reopening_fails"> + +<qandaentry xml:id="faq.stream_reopening_fails"> + <question xml:id="q-stream_reopening_fails"> <para> Reopening a stream fails </para> </question> - <answer id="a-stream_reopening_fails"> + <answer xml:id="a-stream_reopening_fails"> <para> One of the most-reported non-bug reports. Executing a sequence like: </para> - <literallayout> + <literallayout class="normal"> #include <fstream> ... std::fstream fs(<quote>a_file</quote>); @@ -797,13 +797,13 @@ </answer> </qandaentry> -<qandaentry id="faq.wefcxx_verbose"> - <question id="q-wefcxx_verbose"> +<qandaentry xml:id="faq.wefcxx_verbose"> + <question xml:id="q-wefcxx_verbose"> <para> -Weffc++ complains too much </para> </question> - <answer id="a-wefcxx_verbose"> + <answer xml:id="a-wefcxx_verbose"> <para> Many warnings are emitted when <literal>-Weffc++</literal> is used. Making libstdc++ <literal>-Weffc++</literal>-clean is not a goal of the project, @@ -819,13 +819,13 @@ </answer> </qandaentry> -<qandaentry id="faq.ambiguous_overloads"> - <question id="q-ambiguous_overloads"> +<qandaentry xml:id="faq.ambiguous_overloads"> + <question xml:id="q-ambiguous_overloads"> <para> Ambiguous overloads after including an old-style header </para> </question> - <answer id="a-ambiguous_overloads"> + <answer xml:id="a-ambiguous_overloads"> <para> Another problem is the <literal>rel_ops</literal> namespace and the template comparison operator functions contained therein. If they become @@ -833,27 +833,27 @@ (e.g., <quote>using</quote> them and the <iterator> header), then you will suddenly be faced with huge numbers of ambiguity errors. This was discussed on the -v3 list; Nathan Myers - <ulink url="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums - things up here</ulink>. The collisions with vector/string iterator + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-01/msg00247.html">sums + things up here</link>. The collisions with vector/string iterator types have been fixed for 3.1. </para> </answer> </qandaentry> -<qandaentry id="faq.v2_headers"> - <question id="q-v2_headers"> +<qandaentry xml:id="faq.v2_headers"> + <question xml:id="q-v2_headers"> <para> The g++-3 headers are <emphasis>not ours</emphasis> </para> </question> - <answer id="a-v2_headers"> + <answer xml:id="a-v2_headers"> <para> If you have found an extremely broken header file which is causing problems for you, look carefully before submitting a - "high" priority bug report (which you probably + "high" priority bug report (which you probably shouldn't do anyhow; see the last paragraph of the page - describing <ulink url="http://gcc.gnu.org/bugs.html">the GCC - bug database</ulink>). + describing <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs.html">the GCC + bug database</link>). </para> <para> If the headers are in <filename>${prefix}/include/g++-3</filename>, or @@ -875,14 +875,14 @@ </answer> </qandaentry> -<qandaentry id="faq.boost_concept_checks"> - <question id="q-boost_concept_checks"> +<qandaentry xml:id="faq.boost_concept_checks"> + <question xml:id="q-boost_concept_checks"> <para> Errors about <emphasis>*Concept</emphasis> and <emphasis>constraints</emphasis> in the STL </para> </question> - <answer id="a-boost_concept_checks"> + <answer xml:id="a-boost_concept_checks"> <para> If you see compilation errors containing messages about <errortext>foo Concept </errortext>and something to do with a @@ -895,27 +895,28 @@ </para> <para> More information, including how to optionally enable/disable the - checks, is available - <link linkend="std.diagnostics.concept_checking">here</link>. + checks, is available in the + <link linkend="std.diagnostics.concept_checking">Diagnostics</link>. + chapter of the manual. </para> </answer> </qandaentry> -<qandaentry id="faq.dlopen_crash"> - <question id="q-dlopen_crash"> +<qandaentry xml:id="faq.dlopen_crash"> + <question xml:id="q-dlopen_crash"> <para> Program crashes when using library code in a dynamically-loaded library </para> </question> - <answer id="a-dlopen_crash"> + <answer xml:id="a-dlopen_crash"> <para> If you are using the C++ library across dynamically-loaded objects, make certain that you are passing the correct options when compiling and linking: </para> - <literallayout> + <literallayout class="normal"> // compile your library components g++ -fPIC -c a.cc g++ -fPIC -c b.cc @@ -931,17 +932,17 @@ </answer> </qandaentry> -<qandaentry id="faq.memory_leaks"> - <question id="q-memory_leaks"> +<qandaentry xml:id="faq.memory_leaks"> + <question xml:id="q-memory_leaks"> <para> <quote>Memory leaks</quote> in containers </para> </question> - <answer id="a-memory_leaks"> + <answer xml:id="a-memory_leaks"> <para> A few people have reported that the standard containers appear to leak memory when tested with memory checkers such as - <ulink url="http://valgrind.org/">valgrind</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://valgrind.org/">valgrind</link>. The library's default allocators keep free memory in a pool for later reuse, rather than returning it to the OS. Although this memory is always reachable by the library and is never @@ -953,13 +954,13 @@ </answer> </qandaentry> -<qandaentry id="faq.list_size_on"> - <question id="q-list_size_on"> +<qandaentry xml:id="faq.list_size_on"> + <question xml:id="q-list_size_on"> <para> list::size() is O(n)! </para> </question> - <answer id="a-list_size_on"> + <answer xml:id="a-list_size_on"> <para> See the <link linkend="std.containers">Containers</link> @@ -968,18 +969,18 @@ </answer> </qandaentry> -<qandaentry id="faq.easy_to_fix"> - <question id="q-easy_to_fix"> +<qandaentry xml:id="faq.easy_to_fix"> + <question xml:id="q-easy_to_fix"> <para> Aw, that's easy to fix! </para> </question> - <answer id="a-easy_to_fix"> + <answer xml:id="a-easy_to_fix"> <para> If you have found a bug in the library and you think you have a working fix, then send it in! The main GCC site has a page - on <ulink url="http://gcc.gnu.org/contribute.html">submitting - patches</ulink> that covers the procedure, but for libstdc++ you + on <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/contribute.html">submitting + patches</link> that covers the procedure, but for libstdc++ you should also send the patch to our mailing list in addition to the GCC patches mailing list. The libstdc++ <link linkend="appendix.contrib">contributors' page</link> @@ -988,10 +989,10 @@ <para> In addition to the description, the patch, and the ChangeLog entry, it is a Good Thing if you can additionally create a small - test program to test for the presence of the bug that your - patch fixes. Bugs have a way of being reintroduced; if an old - bug creeps back in, it will be caught immediately by the - <ulink url="#2_4">testsuite</ulink> -- but only if such a test exists. + test program to test for the presence of the bug that your patch + fixes. Bugs have a way of being reintroduced; if an old bug + creeps back in, it will be caught immediately by the testsuite - + but only if such a test exists. </para> </answer> </qandaentry> @@ -1000,16 +1001,16 @@ <!-- Miscellaneous --> -<qandadiv id="faq.misc" xreflabel="Miscellaneous"> -<title>Miscellaneous</title> +<qandadiv xml:id="faq.misc" xreflabel="Miscellaneous"> + -<qandaentry id="faq.iterator_as_pod"> - <question id="faq.iterator_as_pod_q"> +<qandaentry xml:id="faq.iterator_as_pod"> + <question xml:id="faq.iterator_as_pod_q"> <para> string::iterator is not char*; vector<T>::iterator is not T* </para> </question> - <answer id="faq.iterator_as_pod_a"> + <answer xml:id="faq.iterator_as_pod_a"> <para> If you have code that depends on container<T> iterators being implemented as pointer-to-T, your code is broken. It's @@ -1033,13 +1034,13 @@ </answer> </qandaentry> -<qandaentry id="faq.what_is_next"> - <question id="q-what_is_next"> +<qandaentry xml:id="faq.what_is_next"> + <question xml:id="q-what_is_next"> <para> What's next after libstdc++? </para> </question> - <answer id="a-what_is_next"> + <answer xml:id="a-what_is_next"> <para> Hopefully, not much. The goal of libstdc++ is to produce a fully-compliant, fully-portable Standard Library. After that, @@ -1050,21 +1051,21 @@ There is an effort underway to add significant extensions to the standard library specification. The latest version of this effort is described in - <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> - The C++ Library Technical Report 1</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> + The C++ Library Technical Report 1</link>. </para> </answer> </qandaentry> -<qandaentry id="faq.sgi_stl"> - <question id="q-sgi_stl"> +<qandaentry xml:id="faq.sgi_stl"> + <question xml:id="q-sgi_stl"> <para> What about the STL from SGI? </para> </question> - <answer id="a-sgi_stl"> + <answer xml:id="a-sgi_stl"> <para> - The <ulink url="http://www.sgi.com/tech/stl/">STL from SGI</ulink>, + The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/">STL from SGI</link>, version 3.3, was the final merge of the STL codebase. The code in libstdc++ contains many fixes and changes, and the SGI code is no longer under active @@ -1072,7 +1073,7 @@ </para> <para> In particular, <classname>string</classname> is not from SGI and makes no - use of their "rope" class (which is included as an + use of their "rope" class (which is included as an optional extension), nor is <classname>valarray</classname> and some others. Classes like <classname>vector<></classname> are, but have been extensively modified. @@ -1091,50 +1092,48 @@ </answer> </qandaentry> -<qandaentry id="faq.extensions_and_backwards_compat"> - <question id="q-extensions_and_backwards_compat"> +<qandaentry xml:id="faq.extensions_and_backwards_compat"> + <question xml:id="q-extensions_and_backwards_compat"> <para> Extensions and Backward Compatibility </para> </question> - <answer id="a-extensions_and_backwards_compat"> + <answer xml:id="a-extensions_and_backwards_compat"> <para> See the <link linkend="manual.appendix.porting.backwards">link</link> on backwards compatibility and <link linkend="appendix.porting.api">link</link> on evolution. </para> </answer> </qandaentry> -<qandaentry id="faq.tr1_support"> - <question id="q-tr1_support"> +<qandaentry xml:id="faq.tr1_support"> + <question xml:id="q-tr1_support"> <para> Does libstdc++ support TR1? </para> </question> - <answer id="a-tr1_support"> + <answer xml:id="a-tr1_support"> <para> Yes. </para> <para> The C++ Standard Library Technical Report adds many new features to the library. The latest version of this effort is described in - <ulink url= - "http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> - Technical Report 1</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf"> + Technical Report 1</link>. </para> <para> - The implementation status of TR1 in libstdc++ can be tracked <link - linkend="status.iso.tr1">on the TR1 status + The implementation status of TR1 in libstdc++ can be tracked <link linkend="status.iso.tr1">on the TR1 status page</link>. </para> </answer> </qandaentry> -<qandaentry id="faq.get_iso_cxx"> - <question id="q-get_iso_cxx"> +<qandaentry xml:id="faq.get_iso_cxx"> + <question xml:id="q-get_iso_cxx"> <para>How do I get a copy of the ISO C++ Standard? </para> </question> - <answer id="a-get_iso_cxx"> + <answer xml:id="a-get_iso_cxx"> <para> Copies of the full ISO 14882 standard are available on line via the ISO mirror site for committee members. Non-members, or those @@ -1143,14 +1142,14 @@ get a copy of the standard from their respective national standards organization. In the USA, this national standards organization is ANSI and their website is - right <ulink url="http://www.ansi.org">here</ulink>. (And if + right <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ansi.org">here</link>. (And if you've already registered with them, clicking this link will take you to directly to the place where you can - <ulink url="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</link>. </para> <para> Who is your country's member body? Visit the - <ulink url="http://www.iso.ch/">ISO homepage</ulink> and find out! + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.iso.ch/">ISO homepage</link> and find out! </para> <para> The 2003 version of the standard (the 1998 version plus TC1) is @@ -1159,13 +1158,13 @@ </answer> </qandaentry> -<qandaentry id="faq.what_is_abi"> - <question id="q-what_is_abi"> +<qandaentry xml:id="faq.what_is_abi"> + <question xml:id="q-what_is_abi"> <para> What's an ABI and why is it so messy? </para> </question> - <answer id="a-what_is_abi"> + <answer xml:id="a-what_is_abi"> <para> <acronym>ABI</acronym> stands for <quote>Application Binary Interface</quote>. Conventionally, it refers to a great @@ -1219,19 +1218,19 @@ </answer> </qandaentry> -<qandaentry id="faq.size_equals_capacity"> - <question id="q-size_equals_capacity"> +<qandaentry xml:id="faq.size_equals_capacity"> + <question xml:id="q-size_equals_capacity"> <para> How do I make std::vector<T>::capacity() == std::vector<T>::size? </para> </question> - <answer id="a-size_equals_capacity"> + <answer xml:id="a-size_equals_capacity"> <para> The standard idiom for deallocating a <classname>vector<T></classname>'s unused memory is to create a temporary copy of the vector and swap their contents, e.g. for <classname>vector<T> v</classname> </para> - <literallayout> + <literallayout class="normal"> std::vector<T>(v).swap(v); </literallayout> <para> diff --git a/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml b/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml index 8ad3a41c964..ebf54f4a21b 100644 --- a/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml +++ b/libstdc++-v3/doc/xml/gnu/fdl-1.2.xml @@ -1,15 +1,16 @@ -<appendix id="appendix.gfdl-1.2"> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.gfdl-1.2"> +<info><title>GNU Free Documentation License</title></info> <?dbhtml filename="appendix_gfdl.html"?> - <title>GNU Free Documentation License</title> + <para> Copyright (C) 2000, 2001, 2002 Free Software Foundation, <abbrev>Inc.</abbrev> 51 Franklin <abbrev>St</abbrev>, Fifth Floor, - Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev - role="initialism">USA</abbrev>. Everyone is permitted to copy and + Boston, <abbrev>MA</abbrev> 02110-1301 <abbrev role="initialism">USA</abbrev>. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. </para> - <bridgehead id="fdl-1-preamble" renderas="sect1"> + <bridgehead xml:id="fdl-1-preamble" renderas="sect1"> 0. PREAMBLE </bridgehead> <para> @@ -35,7 +36,7 @@ for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.</para> - <bridgehead id="fdl-1-definitions" renderas="sect1"> + <bridgehead xml:id="fdl-1-definitions" renderas="sect1"> 1. APPLICABILITY AND DEFINITIONS </bridgehead> <para> @@ -131,7 +132,7 @@ these Warranty Disclaimers may have is void and has no effect on the meaning of this License. </para> - <bridgehead id="VerbatimCopying" renderas="sect1"> + <bridgehead xml:id="VerbatimCopying" renderas="sect1"> 2. VERBATIM COPYING </bridgehead> <para> @@ -149,7 +150,7 @@ You may also lend copies, under the same conditions stated above, and you may publicly display copies. </para> - <bridgehead id="QuantityCopying" renderas="sect1"> + <bridgehead xml:id="QuantityCopying" renderas="sect1"> 3. COPYING IN QUANTITY </bridgehead> <para> @@ -190,7 +191,7 @@ them a chance to provide you with an updated version of the Document. </para> - <bridgehead id="Modifications" renderas="sect1"> + <bridgehead xml:id="Modifications" renderas="sect1"> 4. MODIFICATIONS </bridgehead> <para> @@ -340,7 +341,7 @@ permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. </para> - <bridgehead id="Combining" renderas="sect1"> + <bridgehead xml:id="Combining" renderas="sect1"> 5. COMBINING DOCUMENTS </bridgehead> <para> @@ -368,7 +369,7 @@ sections Entitled "Dedications". You must delete all sections Entitled "Endorsements". </para> - <bridgehead id="Collections" renderas="sect1"> + <bridgehead xml:id="Collections" renderas="sect1"> 6. COLLECTIONS OF DOCUMENTS </bridgehead> <para> @@ -384,7 +385,7 @@ License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. </para> - <bridgehead id="Aggregation" renderas="sect1"> + <bridgehead xml:id="Aggregation" renderas="sect1"> 7. AGGREGATION WITH INDEPENDENT WORKS </bridgehead> <para> @@ -405,7 +406,7 @@ if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. </para> - <bridgehead id="Translation" renderas="sect1"> + <bridgehead xml:id="Translation" renderas="sect1"> 8. TRANSLATION </bridgehead> <para> @@ -426,7 +427,7 @@ "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. </para> - <bridgehead id="fdl-1-termination" renderas="sect1"> + <bridgehead xml:id="fdl-1-termination" renderas="sect1"> 9. TERMINATION </bridgehead> <para> @@ -438,15 +439,14 @@ have their licenses terminated so long as such parties remain in full compliance. </para> - <bridgehead id="FutureRevisions" renderas="sect1"> + <bridgehead xml:id="FutureRevisions" renderas="sect1"> 10. FUTURE REVISIONS OF THIS LICENSE </bridgehead> <para> The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to - address new problems or concerns. See <ulink - url="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</ulink>. + address new problems or concerns. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</link>. </para> <para> Each version of the License is given a distinguishing version number. If @@ -458,7 +458,7 @@ License, you may choose any version ever published (not as a draft) by the Free Software Foundation. </para> - <bridgehead id="HowToUse" renderas="sect1"> + <bridgehead xml:id="HowToUse" renderas="sect1"> ADDENDUM: How to use this License for your documents </bridgehead> <para> diff --git a/libstdc++-v3/doc/xml/gnu/fdl-1.3.xml b/libstdc++-v3/doc/xml/gnu/fdl-1.3.xml new file mode 100644 index 00000000000..9500e11fe2e --- /dev/null +++ b/libstdc++-v3/doc/xml/gnu/fdl-1.3.xml @@ -0,0 +1,562 @@ +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.gfdl-1.3"> +<info><title>GNU Free Documentation License</title></info> + <?dbhtml filename="appendix_gfdl.html"?> + + <simpara>Version 1.3, 3 November 2008</simpara> + <simpara> + Copyright © 2000, 2001, 2002, 2007, 2008 + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">Free Software Foundation, Inc.</link> + </simpara> + <simpara> + Everyone is permitted to copy and distribute verbatim copies of this + license document, but changing it is not allowed. + </simpara> + <bridgehead xml:id="fdl-1-section0" renderas="sect2"> + 0. PREAMBLE + </bridgehead> + <simpara> + The purpose of this License is to make a manual, textbook, or other + functional and useful document “free” in the sense of freedom: + to assure everyone the effective freedom to copy and redistribute it, with + or without modifying it, either commercially or + noncommercially. Secondarily, this License preserves for the author and + publisher a way to get credit for their work, while not being considered + responsible for modifications made by others. + </simpara> + <simpara> + This License is a kind of “copyleft”, which means that + derivative works of the document must themselves be free in the same + sense. It complements the GNU General Public License, which is a copyleft + license designed for free software. + </simpara> + <simpara> + We have designed this License in order to use it for manuals for free + software, because free software needs free documentation: a free program + should come with manuals providing the same freedoms that the software + does. But this License is not limited to software manuals; it can be used + for any textual work, regardless of subject matter or whether it is + published as a printed book. We recommend this License principally for + works whose purpose is instruction or reference. + </simpara> + <bridgehead xml:id="fdl-1-section1" renderas="sect2"> + 1. APPLICABILITY AND DEFINITIONS + </bridgehead> + <simpara> + This License applies to any manual or other work, in any medium, that + contains a notice placed by the copyright holder saying it can be + distributed under the terms of this License. Such a notice grants a + world-wide, royalty-free license, unlimited in duration, to use that work + under the conditions stated herein. The “Document”, below, + refers to any such manual or work. Any member of the public is a licensee, + and is addressed as “you”. You accept the license if you copy, + modify or distribute the work in a way requiring permission under + copyright law. + </simpara> + <simpara> + A “Modified Version” of the Document means any work containing + the Document or a portion of it, either copied verbatim, or with + modifications and/or translated into another language. + </simpara> + <simpara> + A “Secondary Section” is a named appendix or a front-matter + section of the Document that deals exclusively with the relationship of + the publishers or authors of the Document to the Document’s overall + subject (or to related matters) and contains nothing that could fall + directly within that overall subject. (Thus, if the Document is in part a + textbook of mathematics, a Secondary Section may not explain any + mathematics.) The relationship could be a matter of historical connection + with the subject or with related matters, or of legal, commercial, + philosophical, ethical or political position regarding them. + </simpara> + <simpara> + The “Invariant Sections” are certain Secondary Sections whose + titles are designated, as being those of Invariant Sections, in the notice + that says that the Document is released under this License. If a section + does not fit the above definition of Secondary then it is not allowed to + be designated as Invariant. The Document may contain zero Invariant + Sections. If the Document does not identify any Invariant Sections then + there are none. + </simpara> + <simpara> + The “Cover Texts” are certain short passages of text that are + listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says + that the Document is released under this License. A Front-Cover Text may + be at most 5 words, and a Back-Cover Text may be at most 25 words. + </simpara> + <simpara> + A “Transparent” copy of the Document means a machine-readable + copy, represented in a format whose specification is available to the + general public, that is suitable for revising the document + straightforwardly with generic text editors or (for images composed of + pixels) generic paint programs or (for drawings) some widely available + drawing editor, and that is suitable for input to text formatters or for + automatic translation to a variety of formats suitable for input to text + formatters. A copy made in an otherwise Transparent file format whose + markup, or absence of markup, has been arranged to thwart or discourage + subsequent modification by readers is not Transparent. An image format is + not Transparent if used for any substantial amount of text. A copy that is + not “Transparent” is called “Opaque”. + </simpara> + <simpara> + Examples of suitable formats for Transparent copies include plain ASCII + without markup, Texinfo input format, LaTeX input format, SGML or XML + using a publicly available DTD, and standard-conforming simple HTML, + PostScript or PDF designed for human modification. Examples of transparent + image formats include PNG, XCF and JPG. Opaque formats include proprietary + formats that can be read and edited only by proprietary word processors, + SGML or XML for which the DTD and/or processing tools are not generally + available, and the machine-generated HTML, PostScript or PDF produced by + some word processors for output purposes only. + </simpara> + <simpara> + The “Title Page” means, for a printed book, the title page + itself, plus such following pages as are needed to hold, legibly, the + material this License requires to appear in the title page. For works in + formats which do not have any title page as such, “Title Page” + means the text near the most prominent appearance of the work’s + title, preceding the beginning of the body of the text. + </simpara> + <simpara> + The “publisher” means any person or entity that distributes + copies of the Document to the public. + </simpara> + <simpara> + A section “Entitled XYZ” means a named subunit of the Document + whose title either is precisely XYZ or contains XYZ in parentheses + following text that translates XYZ in another language. (Here XYZ stands + for a specific section name mentioned below, such as + “Acknowledgements”, “Dedications”, + “Endorsements”, or “History”.) To “Preserve + the Title” of such a section when you modify the Document means that + it remains a section “Entitled XYZ” according to this + definition. + </simpara> + <simpara> + The Document may include Warranty Disclaimers next to the notice which + states that this License applies to the Document. These Warranty + Disclaimers are considered to be included by reference in this License, + but only as regards disclaiming warranties: any other implication that + these Warranty Disclaimers may have is void and has no effect on the + meaning of this License. + </simpara> + <bridgehead xml:id="fdl-1-section2" renderas="sect2"> + 2. VERBATIM COPYING + </bridgehead> + <simpara> + You may copy and distribute the Document in any medium, either + commercially or noncommercially, provided that this License, the copyright + notices, and the license notice saying this License applies to the + Document are reproduced in all copies, and that you add no other + conditions whatsoever to those of this License. You may not use technical + measures to obstruct or control the reading or further copying of the + copies you make or distribute. However, you may accept compensation in + exchange for copies. If you distribute a large enough number of copies you + must also follow the conditions in section 3. + </simpara> + <simpara> + You may also lend copies, under the same conditions stated above, and you + may publicly display copies. + </simpara> + <bridgehead xml:id="fdl-1-section3" renderas="sect2"> + 3. COPYING IN QUANTITY + </bridgehead> + <simpara> + If you publish printed copies (or copies in media that commonly have + printed covers) of the Document, numbering more than 100, and the + Document’s license notice requires Cover Texts, you must enclose + the copies in covers that carry, clearly and legibly, all these Cover + Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the + back cover. Both covers must also clearly and legibly identify you as the + publisher of these copies. The front cover must present the full title + with all words of the title equally prominent and visible. You may add + other material on the covers in addition. Copying with changes limited to + the covers, as long as they preserve the title of the Document and satisfy + these conditions, can be treated as verbatim copying in other respects. + </simpara> + <simpara> + If the required texts for either cover are too voluminous to fit legibly, + you should put the first ones listed (as many as fit reasonably) on the + actual cover, and continue the rest onto adjacent pages. + </simpara> + <simpara> + If you publish or distribute Opaque copies of the Document numbering more + than 100, you must either include a machine-readable Transparent copy + along with each Opaque copy, or state in or with each Opaque copy a + computer-network location from which the general network-using public has + access to download using public-standard network protocols a complete + Transparent copy of the Document, free of added material. If you use the + latter option, you must take reasonably prudent steps, when you begin + distribution of Opaque copies in quantity, to ensure that this Transparent + copy will remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. + </simpara> + <simpara> + It is requested, but not required, that you contact the authors of the + Document well before redistributing any large number of copies, to give + them a chance to provide you with an updated version of the Document. + </simpara> + <bridgehead xml:id="fdl-1-section4" renderas="sect2"> + 4. MODIFICATIONS + </bridgehead> + <simpara> + You may copy and distribute a Modified Version of the Document under the + conditions of sections 2 and 3 above, provided that you release the + Modified Version under precisely this License, with the Modified Version + filling the role of the Document, thus licensing distribution and + modification of the Modified Version to whoever possesses a copy of it. In + addition, you must do these things in the Modified Version: + </simpara> + <orderedlist numeration="upperalpha"> + <listitem> + <simpara> + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions (which + should, if there were any, be listed in the History section of the + Document). You may use the same title as a previous version if the + original publisher of that version gives permission. + </simpara> + </listitem> + <listitem> + <simpara> + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + </simpara> + </listitem> + <listitem> + <simpara> + State on the Title page the name of the publisher of the Modified + Version, as the publisher. + </simpara> + </listitem> + <listitem> + <simpara> + Preserve all the copyright notices of the Document. + </simpara> + </listitem> + <listitem> + <simpara> + Add an appropriate copyright notice for your modifications adjacent to + the other copyright notices. + </simpara> + </listitem> + <listitem> + <simpara> + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + </simpara> + </listitem> + <listitem> + <simpara> + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document’s license + notice. + </simpara> + </listitem> + <listitem> + <simpara> + Include an unaltered copy of this License. + </simpara> + </listitem> + <listitem> + <simpara> + Preserve the section Entitled “History”, Preserve its + Title, and add to it an item stating at least the title, year, new + authors, and publisher of the Modified Version as given on the Title + Page. If there is no section Entitled “History” in the + Document, create one stating the title, year, authors, and publisher + of the Document as given on its Title Page, then add an item + describing the Modified Version as stated in the previous sentence. + </simpara> + </listitem> + <listitem> + <simpara> + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise the + network locations given in the Document for previous versions it was + based on. These may be placed in the “History” + section. You may omit a network location for a work that was published + at least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + </simpara> + </listitem> + <listitem> + <simpara> + For any section Entitled “Acknowledgements” or + “Dedications”, Preserve the Title of the section, and + preserve in the section all the substance and tone of each of the + contributor acknowledgements and/or dedications given therein. + </simpara> + </listitem> + <listitem> + <simpara> + Preserve all the Invariant Sections of the Document, unaltered in + their text and in their titles. Section numbers or the equivalent are + not considered part of the section titles. + </simpara> + </listitem> + <listitem> + <simpara> + Delete any section Entitled “Endorsements”. Such a section + may not be included in the Modified Version. + </simpara> + </listitem> + <listitem> + <simpara> + Do not retitle any existing section to be Entitled + “Endorsements” or to conflict in title with any Invariant + Section. + </simpara> + </listitem> + <listitem> + <simpara> + Preserve any Warranty Disclaimers. + </simpara> + </listitem> + </orderedlist> + <simpara> + If the Modified Version includes new front-matter sections or appendices + that qualify as Secondary Sections and contain no material copied from the + Document, you may at your option designate some or all of these sections + as invariant. To do this, add their titles to the list of Invariant + Sections in the Modified Version’s license notice. These titles + must be distinct from any other section titles. + </simpara> + <simpara> + You may add a section Entitled “Endorsements”, provided it + contains nothing but endorsements of your Modified Version by various + parties — for example, statements of peer review or that the text + has been approved by an organization as the authoritative definition of a + standard. + </simpara> + <simpara> + You may add a passage of up to five words as a Front-Cover Text, and a + passage of up to 25 words as a Back-Cover Text, to the end of the list of + Cover Texts in the Modified Version. Only one passage of Front-Cover Text + and one of Back-Cover Text may be added by (or through arrangements made + by) any one entity. If the Document already includes a cover text for the + same cover, previously added by you or by arrangement made by the same + entity you are acting on behalf of, you may not add another; but you may + replace the old one, on explicit permission from the previous publisher + that added the old one. + </simpara> + <simpara> + The author(s) and publisher(s) of the Document do not by this License give + permission to use their names for publicity for or to assert or imply + endorsement of any Modified Version. + </simpara> + <bridgehead xml:id="fdl-1-section5" renderas="sect2"> + 5. COMBINING DOCUMENTS + </bridgehead> + <simpara> + You may combine the Document with other documents released under this + License, under the terms defined in section 4 above for modified versions, + provided that you include in the combination all of the Invariant Sections + of all of the original documents, unmodified, and list them all as + Invariant Sections of your combined work in its license notice, and that + you preserve all their Warranty Disclaimers. + </simpara> + <simpara> + The combined work need only contain one copy of this License, and multiple + identical Invariant Sections may be replaced with a single copy. If there + are multiple Invariant Sections with the same name but different contents, + make the title of each such section unique by adding at the end of it, in + parentheses, the name of the original author or publisher of that section + if known, or else a unique number. Make the same adjustment to the section + titles in the list of Invariant Sections in the license notice of the + combined work. + </simpara> + <simpara> + In the combination, you must combine any sections Entitled + “History” in the various original documents, forming one + section Entitled “History”; likewise combine any sections + Entitled “Acknowledgements”, and any sections Entitled + “Dedications”. You must delete all sections Entitled + “Endorsements”. + </simpara> + <bridgehead xml:id="fdl-1-section6" renderas="sect2"> + 6. COLLECTIONS OF DOCUMENTS + </bridgehead> + <simpara> + You may make a collection consisting of the Document and other documents + released under this License, and replace the individual copies of this + License in the various documents with a single copy that is included in + the collection, provided that you follow the rules of this License for + verbatim copying of each of the documents in all other respects. + </simpara> + <simpara> + You may extract a single document from such a collection, and distribute + it individually under this License, provided you insert a copy of this + License into the extracted document, and follow this License in all other + respects regarding verbatim copying of that document. + </simpara> + <bridgehead xml:id="fdl-1-section7" renderas="sect2"> + 7. AGGREGATION WITH INDEPENDENT WORKS + </bridgehead> + <simpara> + A compilation of the Document or its derivatives with other separate and + independent documents or works, in or on a volume of a storage or + distribution medium, is called an “aggregate” if the copyright + resulting from the compilation is not used to limit the legal rights of + the compilation’s users beyond what the individual works + permit. When the Document is included in an aggregate, this License does + not apply to the other works in the aggregate which are not themselves + derivative works of the Document. + </simpara> + <simpara> + If the Cover Text requirement of section 3 is applicable to these copies + of the Document, then if the Document is less than one half of the entire + aggregate, the Document’s Cover Texts may be placed on covers that + bracket the Document within the aggregate, or the electronic equivalent of + covers if the Document is in electronic form. Otherwise they must appear + on printed covers that bracket the whole aggregate. + </simpara> + <bridgehead xml:id="fdl-1-section8" renderas="sect2"> + 8. TRANSLATION + </bridgehead> + <simpara> + Translation is considered a kind of modification, so you may distribute + translations of the Document under the terms of section 4. Replacing + Invariant Sections with translations requires special permission from + their copyright holders, but you may include translations of some or all + Invariant Sections in addition to the original versions of these Invariant + Sections. You may include a translation of this License, and all the + license notices in the Document, and any Warranty Disclaimers, provided + that you also include the original English version of this License and the + original versions of those notices and disclaimers. In case of a + disagreement between the translation and the original version of this + License or a notice or disclaimer, the original version will prevail. + </simpara> + <simpara> + If a section in the Document is Entitled “Acknowledgements”, + “Dedications”, or “History”, the requirement + (section 4) to Preserve its Title (section 1) will typically require + changing the actual title. + </simpara> + <bridgehead xml:id="fdl-1-section9" renderas="sect2"> + 9. TERMINATION + </bridgehead> + <simpara> + You may not copy, modify, sublicense, or distribute the Document except as + expressly provided under this License. Any attempt otherwise to copy, + modify, sublicense, or distribute it is void, and will automatically + terminate your rights under this License. + </simpara> + <simpara> + However, if you cease all violation of this License, then your license + from a particular copyright holder is reinstated (a) provisionally, unless + and until the copyright holder explicitly and finally terminates your + license, and (b) permanently, if the copyright holder fails to notify you + of the violation by some reasonable means prior to 60 days after the + cessation. + </simpara> + <simpara> + Moreover, your license from a particular copyright holder is reinstated + permanently if the copyright holder notifies you of the violation by some + reasonable means, this is the first time you have received notice of + violation of this License (for any work) from that copyright holder, and + you cure the violation prior to 30 days after your receipt of the notice. + </simpara> + <simpara> + Termination of your rights under this section does not terminate the + licenses of parties who have received copies or rights from you under this + License. If your rights have been terminated and not permanently + reinstated, receipt of a copy of some or all of the same material does not + give you any rights to use it. + </simpara> + <bridgehead xml:id="fdl-1-section10" renderas="sect2"> + 10. FUTURE REVISIONS OF THIS LICENSE + </bridgehead> + <simpara> + The Free Software Foundation may publish new, revised versions of the GNU + Free Documentation License from time to time. Such new versions will be + similar in spirit to the present version, but may differ in detail to + address new problems or concerns. See + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/copyleft/">Copyleft</link>. + </simpara> + <simpara> + Each version of the License is given a distinguishing version number. If + the Document specifies that a particular numbered version of this License + “or any later version” applies to it, you have the option of + following the terms and conditions either of that specified version or of + any later version that has been published (not as a draft) by the Free + Software Foundation. If the Document does not specify a version number of + this License, you may choose any version ever published (not as a draft) + by the Free Software Foundation. If the Document specifies that a proxy + can decide which future versions of this License can be used, that + proxy’s public statement of acceptance of a version permanently + authorizes you to choose that version for the Document. + </simpara> + <bridgehead xml:id="fdl-1-section11" renderas="sect2"> + 11. RELICENSING + </bridgehead> + <simpara> + “Massive Multiauthor Collaboration Site” (or “MMC + Site”) means any World Wide Web server that publishes copyrightable + works and also provides prominent facilities for anybody to edit those + works. A public wiki that anybody can edit is an example of such a + server. A “Massive Multiauthor Collaboration” (or + “MMC”) contained in the site means any set of copyrightable + works thus published on the MMC site. + </simpara> + <simpara> + “CC-BY-SA” means the Creative Commons Attribution-Share Alike + 3.0 license published by Creative Commons Corporation, a not-for-profit + corporation with a principal place of business in San Francisco, + California, as well as future copyleft versions of that license published + by that same organization. + </simpara> + <simpara> + “Incorporate” means to publish or republish a Document, in + whole or in part, as part of another Document. + </simpara> + <simpara> + An MMC is “eligible for relicensing” if it is licensed under + this License, and if all works that were first published under this + License somewhere other than this MMC, and subsequently incorporated in + whole or in part into the MMC, (1) had no cover texts or invariant + sections, and (2) were thus incorporated prior to November 1, 2008. + </simpara> + <simpara> + The operator of an MMC Site may republish an MMC contained in the site + under CC-BY-SA on the same site at any time before August 1, 2009, + provided the MMC is eligible for relicensing. + </simpara> + <bridgehead xml:id="fdl-1-addendum" renderas="sect2"> + ADDENDUM: How to use this License for your documents + </bridgehead> + <simpara> + To use this License in a document you have written, include a copy of the + License in the document and put the following copyright and license + notices just after the title page: + </simpara> + <screen>Copyright © YEAR YOUR NAME + +Permission is granted to copy, distribute and/or modify this document under the +terms of the GNU Free Documentation License, Version 1.3 or any later version +published by the Free Software Foundation; with no Invariant Sections, no +Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in +the section entitled “GNU Free Documentation License”.</screen> + <simpara> + If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, + replace the “with… Texts.” line with this: + </simpara> + <screen>with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts +being LIST, and with the Back-Cover Texts being LIST.</screen> + <simpara> + If you have Invariant Sections without Cover Texts, or some other + combination of the three, merge those two alternatives to suit the + situation. + </simpara> + <simpara> + If your document contains nontrivial examples of program code, we + recommend releasing these examples in parallel under your choice of free + software license, such as the GNU General Public License, to permit their + use in free software. + </simpara> +</appendix> diff --git a/libstdc++-v3/doc/xml/gnu/gpl-2.0.xml b/libstdc++-v3/doc/xml/gnu/gpl-2.0.xml index 151a9523f07..cf012ec960b 100644 --- a/libstdc++-v3/doc/xml/gnu/gpl-2.0.xml +++ b/libstdc++-v3/doc/xml/gnu/gpl-2.0.xml @@ -1,15 +1,13 @@ -<?xml version='1.0' encoding='ISO-8859-1'?> -<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> -<appendix id="appendix.gpl-2.0"> - <appendixinfo> - <title>GNU General Public License</title> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.gpl-2.0"> + <info><title>GNU General Public License</title> + <pubdate>Version 2, June 1991</pubdate> <copyright> <year>1989, 1991</year> <holder>Free Software Foundation, Inc.</holder> </copyright> - <legalnotice id="gpl-legalnotice"> + <legalnotice xml:id="gpl-legalnotice"> <para> <address>Free Software Foundation, Inc. <street>51 Franklin Street, Fifth Floor</street>, @@ -20,16 +18,16 @@ <para>Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.</para> </legalnotice> <releaseinfo>Version 2, June 1991</releaseinfo> - </appendixinfo> - <title>GNU General Public License</title> - <section id="gpl-1"> - <title>Preamble</title> + </info> + + <section xml:id="gpl-1"><info><title>Preamble</title></info> + <para>The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software - to make sure the software is free for all its users. This General Public License applies to most of the Free Software - Foundation's software and to any other program whose authors commit + Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.</para> @@ -52,7 +50,7 @@ must show them these terms so they know their rights.</para> <para>We protect your rights with two steps: - <orderedlist> + <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>copyright the software, and</para> </listitem> @@ -63,26 +61,26 @@ </orderedlist> </para> - <para>Also, for each author's protection and ours, we want to make certain that + <para>Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any - problems introduced by others will not reflect on the original authors' + problems introduced by others will not reflect on the original authors' reputations.</para> <para>Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be - licensed for everyone's free use or not licensed at all.</para> + licensed for everyone's free use or not licensed at all.</para> <para>The precise terms and conditions for copying, distribution and modification follow.</para> </section> - <section id="gpl-2"> - <title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title> - <section id="gpl-2-0"> - <title>Section 0</title> + <section xml:id="gpl-2"><info><title>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</title></info> + + <section xml:id="gpl-2-0"><info><title>Section 0</title></info> + <para>This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The <quote>Program</quote>, below, refers to any such @@ -100,9 +98,9 @@ constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.</para> </section> - <section id="gpl-2-1"> - <title>Section 1</title> - <para>You may copy and distribute verbatim copies of the Program's source code as you + <section xml:id="gpl-2-1"><info><title>Section 1</title></info> + + <para>You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any @@ -112,14 +110,14 @@ <para>You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.</para> </section> - <section id="gpl-2-2"> - <title>Section 2</title> + <section xml:id="gpl-2-2"><info><title>Section 2</title></info> + <para>You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of <link linkend="gpl-2-1">Section 1</link> above, provided that you also meet all of these conditions: - <orderedlist numeration="loweralpha"> + <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts"> <listitem> <para>You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.</para> @@ -161,13 +159,13 @@ (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.</para> </section> - <section id="gpl-2-3"> - <title>Section 3</title> + <section xml:id="gpl-2-3"><info><title>Section 3</title></info> + <para>You may copy and distribute the Program (or a work based on it, under <link linkend="gpl-2-2">Section 2</link> in object code or executable form under the terms of <link linkend="gpl-2-1">Sections 1</link> and <link linkend="gpl-2-2">2</link> above provided that you also do one of the following: - <orderedlist numeration="loweralpha"> + <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts"> <listitem> <para>Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium @@ -202,16 +200,16 @@ counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.</para> </section> - <section id="gpl-2-4"> - <title>Section 4</title> + <section xml:id="gpl-2-4"><info><title>Section 4</title></info> + <para>You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.</para> </section> - <section id="gpl-2-5"> - <title>Section 5</title> + <section xml:id="gpl-2-5"><info><title>Section 5</title></info> + <para>You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying @@ -219,16 +217,16 @@ of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.</para> </section> - <section id="gpl-2-6"> - <title>Section 6</title> + <section xml:id="gpl-2-6"><info><title>Section 6</title></info> + <para>Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions - on the recipients' exercise of the rights granted herein. You are not responsible for enforcing + on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.</para> </section> - <section id="gpl-2-7"> - <title>Section 7</title> + <section xml:id="gpl-2-7"><info><title>Section 7</title></info> + <para>If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you @@ -254,16 +252,16 @@ <para>This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.</para> </section> - <section id="gpl-2-8"> - <title>Section 8</title> + <section xml:id="gpl-2-8"><info><title>Section 8</title></info> + <para>If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.</para> </section> - <section id="gpl-2-9"> - <title>Section 9</title> + <section xml:id="gpl-2-9"><info><title>Section 9</title></info> + <para>The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.</para> @@ -274,16 +272,16 @@ Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.</para> </section> - <section id="gpl-2-10"> - <title>Section 10</title> + <section xml:id="gpl-2-10"><info><title>Section 10</title></info> + <para>If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.</para> </section> - <section id="gpl-2-11"> - <title>NO WARRANTY Section 11</title> + <section xml:id="gpl-2-11"><info><title>NO WARRANTY Section 11</title></info> + <para>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM <quote>AS IS</quote> WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, @@ -291,8 +289,8 @@ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</para> </section> - <section id="gpl-2-12"> - <title>Section 12</title> + <section xml:id="gpl-2-12"><info><title>Section 12</title></info> + <para>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE @@ -304,8 +302,8 @@ <para>END OF TERMS AND CONDITIONS</para> </section> </section> - <section id="gpl-3"> - <title>How to Apply These Terms to Your New Programs</title> + <section xml:id="gpl-3"><info><title>How to Apply These Terms to Your New Programs</title></info> + <para>If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.</para> @@ -315,7 +313,7 @@ convey the exclusion of warranty; and each file should have at least the <quote>copyright</quote> line and a pointer to where the full notice is found.</para> - <para><one line to give the program's name and a brief idea of what it does.> + <para><one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author></para> <para>This program is free software; you can redistribute it and/or modify diff --git a/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml b/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml index 90fa18be431..d5a5eae203b 100644 --- a/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml +++ b/libstdc++-v3/doc/xml/gnu/gpl-3.0.xml @@ -1,23 +1,21 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"> -<appendix id="appendix.gpl-3.0"> - <?dbhtml filename="appendix_gpl.html"?> - <title> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.gpl-3.0"><info><title> <acronym>GNU</acronym> General Public License version 3 - </title> + </title></info> + <?dbhtml filename="appendix_gpl.html"?> + <para> Version 3, 29 June 2007 </para> <para> - Copyright © 2007 Free Software Foundation, Inc. - <ulink url="http://www.fsf.org/">http://www.fsf.org/</ulink> + Copyright © 2007 Free Software Foundation, Inc. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/">http://www.fsf.org/</link> </para> <para> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. </para> - <bridgehead id="gpl-3-preamble" renderas="sect1"> + <bridgehead xml:id="gpl-3-preamble" renderas="sect1"> Preamble </bridgehead> <para> @@ -28,7 +26,7 @@ The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the <acronym>GNU</acronym> General Public License is intended to guarantee your - freedom to share and change all versions of a program—to make sure it + freedom to share and change all versions of a program—to make sure it remains free software for all its users. We, the Free Software Foundation, use the <acronym>GNU</acronym> General Public License for most of our software; it applies also to any other work released this way by its @@ -61,9 +59,9 @@ distribute and/or modify it. </para> <para> - For the developers’ and authors’ protection, the + For the developers’ and authors’ protection, the <acronym>GPL</acronym> clearly explains that there is no warranty for this - free software. For both users’ and authors’ sake, the + free software. For both users’ and authors’ sake, the <acronym>GPL</acronym> requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. @@ -71,7 +69,7 @@ <para> Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. - This is fundamentally incompatible with the aim of protecting users’ + This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the @@ -95,36 +93,36 @@ <bridgehead> TERMS AND CONDITIONS </bridgehead> - <bridgehead id="gpl-3-definitions" renderas="sect1"> + <bridgehead xml:id="gpl-3-definitions" renderas="sect1"> 0. Definitions. </bridgehead> <para> - “This License” refers to version 3 of the <acronym>GNU</acronym> + “This License” refers to version 3 of the <acronym>GNU</acronym> General Public License. </para> <para> - “Copyright” also means copyright-like laws that apply to other + “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. </para> <para> - “The Program” refers to any copyrightable work licensed under - this License. Each licensee is addressed as “you”. - “Licensees” and “recipients” may be individuals or + “The Program” refers to any copyrightable work licensed under + this License. Each licensee is addressed as “you”. + “Licensees” and “recipients” may be individuals or organizations. </para> <para> - To “modify” a work means to copy from or adapt all or part of + To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making - of an exact copy. The resulting work is called a “modified - version” of the earlier work or a work “based on” the + of an exact copy. The resulting work is called a “modified + version” of the earlier work or a work “based on” the earlier work. </para> <para> - A “covered work” means either the unmodified Program or a work + A “covered work” means either the unmodified Program or a work based on the Program. </para> <para> - To “propagate” a work means to do anything with it that, without + To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with @@ -132,13 +130,13 @@ countries other activities as well. </para> <para> - To “convey” a work means any kind of propagation that enables + To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. </para> <para> - An interactive user interface displays “Appropriate Legal - Notices” to the extent that it includes a convenient and prominently + An interactive user interface displays “Appropriate Legal + Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this @@ -146,37 +144,37 @@ a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. </para> - <bridgehead id="SourceCode" renderas="sect1"> + <bridgehead xml:id="SourceCode" renderas="sect1"> 1. Source Code. </bridgehead> <para> - The “source code” for a work means the preferred form of the - work for making modifications to it. “Object code” means any + The “source code” for a work means the preferred form of the + work for making modifications to it. “Object code” means any non-source form of a work. </para> <para> - A “Standard Interface” means an interface that either is an + A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. </para> <para> - The “System Libraries” of an executable work include anything, + The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available - to the public in source code form. A “Major Component”, in this + to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. </para> <para> - The “Corresponding Source” for a work in object code form means + The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to - control those activities. However, it does not include the work’s + control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes @@ -193,7 +191,7 @@ <para> The Corresponding Source for a work in source code form is that same work. </para> - <bridgehead id="BasicPermissions" renderas="sect1"> + <bridgehead xml:id="BasicPermissions" renderas="sect1"> 2. Basic Permissions. </bridgehead> <para> @@ -222,8 +220,8 @@ conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. </para> - <bridgehead id="Protecting" renderas="sect1"> - 3. Protecting Users’ Legal Rights From Anti-Circumvention Law. + <bridgehead xml:id="Protecting" renderas="sect1"> + 3. Protecting Users’ Legal Rights From Anti-Circumvention Law. </bridgehead> <para> No covered work shall be deemed part of an effective technological measure @@ -236,15 +234,15 @@ circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of - the work as a means of enforcing, against the work’s users, your or - third parties’ legal rights to forbid circumvention of technological + the work as a means of enforcing, against the work’s users, your or + third parties’ legal rights to forbid circumvention of technological measures. </para> - <bridgehead id="ConveyingVerbatim" renderas="sect1"> + <bridgehead xml:id="ConveyingVerbatim" renderas="sect1"> 4. Conveying Verbatim Copies. </bridgehead> <para> - You may convey verbatim copies of the Program’s source code as you + You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in @@ -256,7 +254,7 @@ You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. </para> - <bridgehead id="ConveyingModified" renderas="sect1"> + <bridgehead xml:id="ConveyingModified" renderas="sect1"> 5. Conveying Modified Source Versions. </bridgehead> <para> @@ -264,7 +262,7 @@ it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: </para> - <orderedlist numeration="loweralpha"> + <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts"> <listitem> <para> The work must carry prominent notices stating that you modified it, and @@ -275,8 +273,8 @@ <para> The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement - modifies the requirement in section 4 to “keep intact all - notices”. + modifies the requirement in section 4 to “keep intact all + notices”. </para> </listitem> <listitem> @@ -303,13 +301,13 @@ A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of - a storage or distribution medium, is called an “aggregate” if + a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access - or legal rights of the compilation’s users beyond what the individual works + or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. </para> - <bridgehead id="ConveyingNonSource" renderas="sect1"> + <bridgehead xml:id="ConveyingNonSource" renderas="sect1"> 6. Conveying Non-Source Forms. </bridgehead> <para> @@ -317,7 +315,7 @@ sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: </para> - <orderedlist numeration="loweralpha"> + <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts"> <listitem> <para> Convey the object code in, or embodied in, a physical product (including @@ -379,13 +377,13 @@ conveying the object code work. </para> <para> - A “User Product” is either (1) a “consumer product”, + A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. - For a particular product received by a particular user, “normally - used” refers to a typical or common use of that class of product, + For a particular product received by a particular user, “normally + used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product @@ -393,7 +391,7 @@ uses represent the only significant mode of use of the product. </para> <para> - “Installation Information” for a User Product means any methods, + “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice @@ -429,11 +427,11 @@ and must require no special password or key for unpacking, reading or copying. </para> - <bridgehead id="AdditionalTerms" renderas="sect1"> + <bridgehead xml:id="AdditionalTerms" renderas="sect1"> 7. Additional Terms. </bridgehead> <para> - “Additional permissions” are terms that supplement the terms of + “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that @@ -455,7 +453,7 @@ to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: </para> - <orderedlist numeration="loweralpha"> + <orderedlist numeration="loweralpha" inheritnum="ignore" continuation="restarts"> <listitem> <para> Disclaiming warranty or limiting liability differently from the terms @@ -499,8 +497,8 @@ </listitem> </orderedlist> <para> - All other non-permissive additional terms are considered “further - restrictions” within the meaning of section 10. If the Program as + All other non-permissive additional terms are considered “further + restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further @@ -520,7 +518,7 @@ of a separately written license, or stated as exceptions; the above requirements apply either way. </para> - <bridgehead id="gpl-3-termination" renderas="sect1"> + <bridgehead xml:id="gpl-3-termination" renderas="sect1"> 8. Termination. </bridgehead> <para> @@ -551,7 +549,7 @@ reinstated, you do not qualify to receive new licenses for the same material under section 10. </para> - <bridgehead id="AcceptanceNotRequired" renderas="sect1"> + <bridgehead xml:id="AcceptanceNotRequired" renderas="sect1"> 9. Acceptance Not Required for Having Copies. </bridgehead> <para> @@ -564,7 +562,7 @@ Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. </para> - <bridgehead id="AutomaticDownstream" renderas="sect1"> + <bridgehead xml:id="AutomaticDownstream" renderas="sect1"> 10. Automatic Licensing of Downstream Recipients. </bridgehead> <para> @@ -574,12 +572,12 @@ compliance by third parties with this License. </para> <para> - An “entity transaction” is a transaction transferring control + An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the - party’s predecessor in interest had or could give under the previous + party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. @@ -593,36 +591,36 @@ by making, using, selling, offering for sale, or importing the Program or any portion of it. </para> - <bridgehead id="Patents" renderas="sect1"> + <bridgehead xml:id="Patents" renderas="sect1"> 11. Patents. </bridgehead> <para> - A “contributor” is a copyright holder who authorizes use under + A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The - work thus licensed is called the contributor’s “contributor - version”. + work thus licensed is called the contributor’s “contributor + version”. </para> <para> - A contributor’s “essential patent claims” are all patent + A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, - “control” includes the right to grant patent sublicenses in a + “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. </para> <para> Each contributor grants you a non-exclusive, worldwide, royalty-free patent - license under the contributor’s essential patent claims, to make, use, + license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. </para> <para> - In the following three paragraphs, a “patent license” is any + In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not - to sue for patent infringement). To “grant” such a patent + to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. </para> @@ -634,10 +632,10 @@ cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, - to extend the patent license to downstream recipients. “Knowingly - relying” means you have actual knowledge that, but for the patent + to extend the patent license to downstream recipients. “Knowingly + relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your - recipient’s use of the covered work in a country, would infringe one + recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. </para> @@ -650,7 +648,7 @@ all recipients of the covered work and works based on it. </para> <para> - A patent license is “discriminatory” if it does not include + A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work @@ -669,8 +667,8 @@ implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. </para> - <bridgehead id="NoSurrender" renderas="sect1"> - 12. No Surrender of Others’ Freedom. + <bridgehead xml:id="NoSurrender" renderas="sect1"> + 12. No Surrender of Others’ Freedom. </bridgehead> <para> If conditions are imposed on you (whether by court order, agreement or @@ -683,7 +681,7 @@ Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. </para> - <bridgehead id="UsedWithAGPL" renderas="sect1"> + <bridgehead xml:id="UsedWithAGPL" renderas="sect1"> 13. Use with the <acronym>GNU</acronym> Affero General Public License. </bridgehead> <para> @@ -696,7 +694,7 @@ section 13, concerning interaction through a network will apply to the combination as such. </para> - <bridgehead id="RevisedVersions" renderas="sect1"> + <bridgehead xml:id="RevisedVersions" renderas="sect1"> 14. Revised Versions of this License. </bridgehead> <para> @@ -708,7 +706,7 @@ <para> Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the <acronym>GNU</acronym> - General Public License “or any later version” applies to it, you + General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the @@ -718,7 +716,7 @@ <para> If the Program specifies that a proxy can decide which future versions of the <acronym>GNU</acronym> General Public License can be used, that - proxy’s public statement of acceptance of a version permanently + proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program. </para> <para> @@ -726,20 +724,20 @@ However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. </para> - <bridgehead id="WarrantyDisclaimer" renderas="sect1"> + <bridgehead xml:id="WarrantyDisclaimer" renderas="sect1"> 15. Disclaimer of Warranty. </bridgehead> <para> THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF + OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. </para> - <bridgehead id="LiabilityLimitation" renderas="sect1"> + <bridgehead xml:id="LiabilityLimitation" renderas="sect1"> 16. Limitation of Liability. </bridgehead> <para> @@ -753,7 +751,7 @@ EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. </para> - <bridgehead id="InterpretationSecs1516" renderas="sect1"> + <bridgehead xml:id="InterpretationSecs1516" renderas="sect1"> 17. Interpretation of Sections 15 and 16. </bridgehead> <para> @@ -767,7 +765,7 @@ <bridgehead> END OF TERMS AND CONDITIONS </bridgehead> - <bridgehead id="HowToApply" renderas="sect1"> + <bridgehead xml:id="HowToApply" renderas="sect1"> How to Apply These Terms to Your New Programs </bridgehead> <para> @@ -779,11 +777,11 @@ To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the - “copyright” line and a pointer to where the full notice is + “copyright” line and a pointer to where the full notice is found. </para> <screen> -<replaceable>one line to give the program’s name and a brief idea of what it does.</replaceable> +<replaceable>one line to give the program’s name and a brief idea of what it does.</replaceable> Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable> This program is free software: you can redistribute it and/or modify @@ -797,7 +795,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <acronym>GNU</acronym> General Public License for more details. You should have received a copy of the <acronym>GNU</acronym> General Public License -along with this program. If not, see <ulink url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>. +along with this program. If not, see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</link>. </screen> <para> Also add information on how to contact you by electronic and paper mail. @@ -808,22 +806,22 @@ along with this program. If not, see <ulink url="http://www.gnu.org/licenses/"> </para> <screen> <replaceable>program</replaceable> Copyright (C) <replaceable>year</replaceable> <replaceable>name of author</replaceable> -This program comes with ABSOLUTELY NO WARRANTY; for details type ‘<literal>show w</literal>’. +This program comes with ABSOLUTELY NO WARRANTY; for details type ‘<literal>show w</literal>’. This is free software, and you are welcome to redistribute it -under certain conditions; type ‘<literal>show c</literal>’ for details. +under certain conditions; type ‘<literal>show c</literal>’ for details. </screen> <para> - The hypothetical commands ‘<literal>show w</literal>’ and - ‘<literal>show c</literal>’ should show the appropriate parts of - the General Public License. Of course, your program’s commands might be - different; for a GUI interface, you would use an “about box”. + The hypothetical commands ‘<literal>show w</literal>’ and + ‘<literal>show c</literal>’ should show the appropriate parts of + the General Public License. Of course, your program’s commands might be + different; for a GUI interface, you would use an “about box”. </para> <para> You should also get your employer (if you work as a programmer) or school, - if any, to sign a “copyright disclaimer” for the program, if + if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the <acronym>GNU</acronym> <acronym>GPL</acronym>, see - <ulink url="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/licenses/">http://www.gnu.org/licenses/</link>. </para> <para> The <acronym>GNU</acronym> General Public License does not permit @@ -831,7 +829,6 @@ under certain conditions; type ‘<literal>show c</literal>’ for detai subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the <acronym>GNU</acronym> Lesser General Public License instead of this - License. But first, please read <ulink - url="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</ulink>. + License. But first, please read <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/philosophy/why-not-lgpl.html">http://www.gnu.org/philosophy/why-not-lgpl.html</link>. </para> </appendix> diff --git a/libstdc++-v3/doc/xml/manual/abi.xml b/libstdc++-v3/doc/xml/manual/abi.xml index cc5370e26ac..268f0a69199 100644 --- a/libstdc++-v3/doc/xml/manual/abi.xml +++ b/libstdc++-v3/doc/xml/manual/abi.xml @@ -1,7 +1,8 @@ -<sect1 id="appendix.porting.abi" xreflabel="abi"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.porting.abi" xreflabel="abi"> <?dbhtml filename="abi.html"?> -<sect1info> +<info><title>ABI Policy and Guidelines</title> <keywordset> <keyword> C++ @@ -22,20 +23,20 @@ compatibility </keyword> </keywordset> -</sect1info> +</info> + -<title>ABI Policy and Guidelines</title> <para> </para> -<sect2 id="abi.cxx_interface"> -<title>The C++ Interface</title> +<section xml:id="abi.cxx_interface"><info><title>The C++ Interface</title></info> + <para> - C++ applications often dependent on specific language support + C++ applications often depend on specific language support routines, say for throwing exceptions, or catching exceptions, and - perhaps also dependent on features in the C++ Standard Library. + perhaps also depend on features in the C++ Standard Library. </para> <para> @@ -53,9 +54,8 @@ virtual functions, etc. These details are defined as the compiler Application Binary Interface, or ABI. The GNU C++ compiler uses an industry-standard C++ ABI starting with version 3. Details can be - found in the <ulink - url="http://www.codesourcery.com/cxx-abi/abi.html"> ABI - specification</ulink>. + found in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html"> ABI + specification</link>. </para> <para> @@ -65,8 +65,8 @@ g++ command line options may change the ABI as a side-effect of use. Such flags include <code>-fpack-struct</code> and <code>-fno-exceptions</code>, but include others: see the complete - list in the GCC manual under the heading <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options - for Code Generation Conventions</ulink>. + list in the GCC manual under the heading <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code%20Gen%20Options">Options + for Code Generation Conventions</link>. </para> <para> @@ -105,24 +105,24 @@ given compiler ABI. In a nutshell: implements the C++ ABI in question. </para> -</sect2> +</section> + +<section xml:id="abi.versioning"><info><title>Versioning</title></info> -<sect2 id="abi.versioning"> -<title>Versioning</title> <para> The C++ interface has evolved throughout the history of the GNU C++ toolchain. With each release, various details have been changed so as to give distinct versions to the C++ interface. </para> - <sect3 id="abi.versioning.goals"> - <title>Goals</title> + <section xml:id="abi.versioning.goals"><info><title>Goals</title></info> + <para>Extending existing, stable ABIs. Versioning gives subsequent releases of library binaries the ability to add new symbols and add functionality, all the while retaining compatibility with the previous releases in the series. Thus, program binaries linked with the initial -release of a library binary will still link correctly if the library +release of a library binary will still run correctly if the library binary is replaced by carefully-managed subsequent library binaries. This is called forward compatibility. </para> @@ -136,10 +136,10 @@ compatible. <para>Allows multiple, incompatible ABIs to coexist at the same time. </para> - </sect3> + </section> - <sect3 id="abi.versioning.history"> - <title>History</title> + <section xml:id="abi.versioning.history"><info><title>History</title></info> + <para> How can this complexity be managed? What does C++ versioning mean? @@ -179,11 +179,26 @@ compatible. <listitem><para>gcc-3.3.1: libgcc_s.so.1</para></listitem> <listitem><para>gcc-3.3.2: libgcc_s.so.1</para></listitem> <listitem><para>gcc-3.3.3: libgcc_s.so.1</para></listitem> - <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: on m68k-linux and - hppa-linux this is either libgcc_s.so.1 (when configuring - <code>--with-sjlj-exceptions</code>) or libgcc_s.so.2. For all - others, this is libgcc_s.so.1. </para> - </listitem> + <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: libgcc_s.so.1</para></listitem> + </itemizedlist> + + <para>For m68k-linux the versions differ as follows: </para> + + <itemizedlist> + <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: libgcc_s.so.1 + when configuring <code>--with-sjlj-exceptions</code>, or + libgcc_s.so.2 </para> </listitem> + </itemizedlist> + + <para>For hppa-linux the versions differ as follows: </para> + + <itemizedlist> + <listitem><para>gcc-3.4.x, gcc-4.[0-1].x: either libgcc_s.so.1 + when configuring <code>--with-sjlj-exceptions</code>, or + libgcc_s.so.2 </para> </listitem> + <listitem><para>gcc-4.[2-5].x: either libgcc_s.so.3 when configuring + <code>--with-sjlj-exceptions</code>) or libgcc_s.so.4 + </para> </listitem> </itemizedlist> </listitem> @@ -217,7 +232,7 @@ compatible. <listitem> <para> Release versioning on the libstdc++.so binary, implemented in - the same was as the libgcc_s.so binary above. Listed is the + the same way as the libgcc_s.so binary above. Listed is the filename: <constant>DT_SONAME</constant> can be deduced from the filename by removing the last two period-delimited numbers. For example, filename <filename>libstdc++.so.5.0.4</filename> @@ -283,18 +298,17 @@ compatible. </para> <para> Note 3: This release (but not previous or subsequent) has one - known incompatibility, see <ulink - url="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</ulink> + known incompatibility, see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33678">33678</link> in the GCC bug database. </para> </listitem> <listitem><para>Symbol versioning on the libstdc++.so binary.</para> - <para>mapfile: libstdc++/config/linker-map.gnu</para> + <para>mapfile: libstdc++-v3/config/abi/pre/gnu.ver</para> <para>It is versioned with the following labels and version definitions, where the version definition is the maximum for a - particular release. Note, only symbol which are newly introduced + particular release. Note, only symbols which are newly introduced will use the maximum version definition. Thus, for release series with the same label, but incremented version definitions, the later release has both versions. (An example of this would be the @@ -364,7 +378,7 @@ compatible. <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 1000 + n (when n>1) </para></listitem> <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: 999999 (when n=0)</para></listitem> </itemizedlist> - <para></para> + <para/> </listitem> <listitem> @@ -381,7 +395,7 @@ compatible. <listitem><para>gcc-3.3.x: <code>-fabi-version=1</code></para></listitem> <listitem><para>gcc-3.4.x, gcc-4.[0-5].x: <code>-fabi-version=2</code> <emphasis>(Incompatible with previous)</emphasis></para></listitem> </itemizedlist> - <para></para> + <para/> </listitem> <listitem> @@ -395,7 +409,7 @@ compatible. <para> This macro is defined in the file "c++config" in the - "libstdc++/include/bits" directory. (Up to gcc-4.1.0, it was + "libstdc++-v3/include/bits" directory. (Up to gcc-4.1.0, it was changed every night by an automated script. Since gcc-4.1.0, it is the same value as gcc/DATESTAMP.) </para> @@ -445,7 +459,7 @@ compatible. <listitem><para>gcc-4.4.1: 20090722</para></listitem> <listitem><para>gcc-4.4.2: 20091015</para></listitem> </itemizedlist> - <para></para> + <para/> </listitem> <listitem> @@ -459,7 +473,7 @@ compatible. <para> This macro is defined in the file "c++config" in the - "libstdc++/include/bits" directory and is generated + "libstdc++-v3/include/bits" directory and is generated automatically by autoconf as part of the configure-time generation of config.h. </para> @@ -486,7 +500,7 @@ compatible. <listitem><para>gcc-3.4.x: "version-unused"</para></listitem> <listitem><para>gcc-4.[0-5].x: "version-unused"</para></listitem> </itemizedlist> - <para></para> + <para/> </listitem> <listitem> @@ -499,7 +513,7 @@ compatible. All C++ includes are installed in include/c++, then nest in a directory hierarchy corresponding to the C++ compiler's released version. This version corresponds to the variable "gcc_version" in - "libstdc++/acinclude.m4," and more details can be found in that + "libstdc++-v3/acinclude.m4," and more details can be found in that file's macro GLIBCXX_CONFIGURE (GLIBCPP_CONFIGURE before gcc-3.4.0). </para> <para> @@ -549,7 +563,7 @@ compatible. <listitem><para>gcc-4.4.2: include/c++/4.4.2</para></listitem> <listitem><para>gcc-4.5.0: include/c++/4.5.0</para></listitem> </itemizedlist> - <para></para> + <para/> </listitem> </orderedlist> @@ -562,14 +576,15 @@ compatible. </para> - </sect3> + </section> - <sect3 id="abi.versioning.prereq"> - <title>Prerequisites</title> + <section xml:id="abi.versioning.prereq"><info><title>Prerequisites</title></info> + <para> Minimum environment that supports a versioned ABI: A supported dynamic linker, a GNU linker of sufficient vintage to understand - demangled C++ name globbing (ld), a shared executable compiled + demangled C++ name globbing (ld) or the Sun linker, a shared + executable compiled with g++, and shared libraries (libgcc_s, libstdc++) compiled by a compiler (g++) with a compatible ABI. Phew. </para> @@ -583,12 +598,12 @@ compatible. <para> Most modern Linux and BSD versions, particularly ones using gcc-3.1.x tools and more recent vintages, will meet the - requirements above. + requirements above, as does Solaris 2.5 and up. </para> - </sect3> + </section> - <sect3 id="abi.versioning.config"> - <title>Configuring</title> + <section xml:id="abi.versioning.config"><info><title>Configuring</title></info> + <para> It turns out that most of the configure options that change @@ -599,7 +614,7 @@ compatible. <para> For more information on configure options, including ABI impacts, see: - http://gcc.gnu.org/onlinedocs/libstdc++/configopts.html + <link linkend="manual.intro.setup.configure">here</link> </para> <para> @@ -608,17 +623,17 @@ compatible. </para> <para> - In particular, libstdc++/acinclude.m4 has a macro called + In particular, libstdc++-v3/acinclude.m4 has a macro called GLIBCXX_ENABLE_SYMVERS that defaults to yes (or the argument passed in via --enable-symvers=foo). At that point, the macro attempts to make sure that all the requirement for symbol versioning are in place. For more information, please consult acinclude.m4. </para> - </sect3> + </section> - <sect3 id="abi.versioning.active"> - <title>Checking Active</title> + <section xml:id="abi.versioning.active"><info><title>Checking Active</title></info> + <para> When the GNU C++ library is being built with symbol versioning @@ -633,6 +648,7 @@ compatible. </screen> <para> + or another of the supported styles. If you don't see this line in the configure output, or if this line appears but the last word is 'no', then you are out of luck. </para> @@ -670,11 +686,28 @@ of the name, then the executable is versioned. Here's an example: <code>U _ZNSt8ios_base4InitC1Ev@@GLIBCXX_3.4</code> </para> - </sect3> -</sect2> +<para> +On Solaris 2, you can use <code>pvs -r</code> instead: +</para> + +<programlisting> +%g++ hello.cc -o hello.out + +%pvs -r hello.out + libstdc++.so.6 (GLIBCXX_3.4, GLIBCXX_3.4.12); + libgcc_s.so.1 (GCC_3.0); + libc.so.1 (SUNWprivate_1.1, SYSVABI_1.3); +</programlisting> + +<para> +<code>ldd -v</code> works too, but is very verbose. +</para> + + </section> +</section> + +<section xml:id="abi.changes_allowed"><info><title>Allowed Changes</title></info> -<sect2 id="abi.changes_allowed"> -<title>Allowed Changes</title> <para> The following will cause the library minor version number to @@ -689,10 +722,10 @@ increase, say from "libstdc++.so.3.0.4" to "libstdc++.so.3.0.5". Other allowed changes are possible. </para> -</sect2> +</section> + +<section xml:id="abi.changes_no"><info><title>Prohibited Changes</title></info> -<sect2 id="abi.changes_no"> -<title>Prohibited Changes</title> <para> The following non-exhaustive list will cause the library major version @@ -720,19 +753,19 @@ number to increase, say from "libstdc++.so.3.0.4" to <listitem><para> Adding an explicit copy constructor or destructor to a class that would otherwise have implicit versions. This will change the way the compiler deals with this class in by-value return -statements or parameters: instead of being passing instances of this -class in registers, the compiler will be forced to use memory. See <ulink url="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</ulink> +statements or parameters: instead of passing instances of this +class in registers, the compiler will be forced to use memory. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/cxx-abi/abi.html#calls"> this part</link> of the C++ ABI documentation for further details. </para></listitem> </orderedlist> -</sect2> +</section> + +<section xml:id="abi.impl"><info><title>Implementation</title></info> -<sect2 id="abi.impl"> -<title>Implementation</title> <orderedlist> <listitem> @@ -846,13 +879,13 @@ standard includes.</para> </listitem> </orderedlist> -</sect2> +</section> -<sect2 id="abi.testing"> -<title>Testing</title> +<section xml:id="abi.testing"><info><title>Testing</title></info> - <sect3 id="abi.testing.single"> - <title>Single ABI Testing</title> + + <section xml:id="abi.testing.single"><info><title>Single ABI Testing</title></info> + <para> Testing for GNU C++ ABI changes is composed of two distinct @@ -905,7 +938,7 @@ Use the 'make check-abi' rule in the libstdc++ Makefile. </para> <para> -This is a proactive check the library ABI. Currently, exported symbol +This is a proactive check of the library ABI. Currently, exported symbol names that are either weak or defined are checked against a last known good baseline. Currently, this baseline is keyed off of 3.4.0 binaries, as this was the last time the .so number was incremented. In @@ -940,7 +973,7 @@ Another approach might be to use the -fdump-class-hierarchy flag to get information. However, currently this approach gives insufficient data for use in library testing, as class data members, their offsets, and other detailed data is not displayed with this flag. -(See g++/7470 on how this was used to find bugs.) +(See PR g++/7470 on how this was used to find bugs.) </para> <para> @@ -948,12 +981,12 @@ Perhaps there are other C++ ABI checkers. If so, please notify us. We'd like to know about them! </para> - </sect3> - <sect3 id="abi.testing.multi"> - <title>Multiple ABI Testing</title> + </section> + <section xml:id="abi.testing.multi"><info><title>Multiple ABI Testing</title></info> + <para> A "C" application, dynamically linked to two shared libraries, liba, -libb. The dependent library liba is C++ shared library compiled with +libb. The dependent library liba is a C++ shared library compiled with gcc-3.3.x, and uses io, exceptions, locale, etc. The dependent library libb is a C++ shared library compiled with gcc-3.4.x, and also uses io, exceptions, locale, etc. @@ -1035,11 +1068,11 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. code from both liba, and the dependent libstdc++.so.6, and libb, with the dependent libstdc++.so.5. </para> - </sect3> -</sect2> + </section> +</section> + +<section xml:id="abi.issues"><info><title>Outstanding Issues</title></info> -<sect2 id="abi.issues"> -<title>Outstanding Issues</title> <para> Some features in the C++ language make versioning especially @@ -1055,149 +1088,119 @@ gcc test.c -g -O2 -L. -lone -ltwo /usr/lib/libstdc++.so.5 /usr/lib/libstdc++.so. </para> <para> -<ulink url="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</ulink> +<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR24660">24660: versioning weak symbols in libstdc++</link> </para> <para> -<ulink url="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</ulink> +<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR19664">19664: libstdc++ headers should have pop/push of the visibility around the declarations</link> </para> -</sect2> +</section> + +<bibliography xml:id="abi.biblio"><info><title>Bibliography</title></info> -<bibliography id="abi.biblio"> -<title>Bibliography</title> <biblioentry> - <biblioid class="uri"> - <ulink url="http://abicheck.sourceforge.net/"> - <citetitle> - ABIcheck, a vague idea of checking ABI compatibility - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://abicheck.sourceforge.net/" class="uri"> + </biblioid> + <citetitle> + ABIcheck, a vague idea of checking ABI compatibility + </citetitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.codesourcery.com/public/cxx-abi/"> - <citetitle> - C++ ABI Reference - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.codesourcery.com/public/cxx-abi/" class="uri"> </biblioid> + <citetitle> + C++ ABI Reference + </citetitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm"> - <citetitle> - Intel Compilers for Linux Compatibility with the GNU Compilers - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.intel.com/cd/software/products/asmo-na/eng/284736.htm" class="uri"> + </biblioid> + <citetitle> + Intel Compilers for Linux Compatibility with the GNU Compilers + </citetitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://docs.sun.com/app/docs/doc/817-1984"> - <citetitle> - Sun Solaris 2.9 : Linker and Libraries Guide (document 816-1386) - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-0690" class="uri"> + </biblioid> + <citetitle> + Linker and Libraries Guide (document 819-0690) + </citetitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://docs.sun.com/app/docs/doc/819-5266"> - <citetitle> - Sun Solaris 2.9 : C++ Migration Guide (document 816-2459) - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docs.sun.com/app/docs/doc/819-3689" class="uri"> </biblioid> + <citetitle> + Sun Studio 11: C++ Migration Guide (document 819-3689) + </citetitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://people.redhat.com/drepper/dsohowto.pdf"> - <citetitle> - How to Write Shared Libraries - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://people.redhat.com/drepper/dsohowto.pdf" class="uri"> </biblioid> + <citetitle> + How to Write Shared Libraries + </citetitle> <author> - <firstname>Ulrich</firstname> - <surname>Drepper</surname> + <personname> + <firstname>Ulrich</firstname><surname>Drepper</surname> + </personname> </author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.arm.com/miscPDFs/8033.pdf"> - <citetitle> - C++ ABI for the ARM Architecture - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.arm.com/miscPDFs/8033.pdf" class="uri"> </biblioid> + <citetitle> + C++ ABI for the ARM Architecture + </citetitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html"> - <citetitle> - Dynamic Shared Objects: Survey and Issues - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1976.html" class="uri"> </biblioid> + <citetitle> + Dynamic Shared Objects: Survey and Issues + </citetitle> <subtitle> ISO C++ J16/06-0046 </subtitle> - <author> - <firstname>Benjamin</firstname> - <surname>Kosnik</surname> - </author> + <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html"> - <citetitle> - Versioning With Namespaces - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2013.html" class="uri"> + </biblioid> + <citetitle> + Versioning With Namespaces + </citetitle> <subtitle> ISO C++ J16/06-0083 </subtitle> - <author> - <firstname>Benjamin</firstname> - <surname>Kosnik</surname> - </author> + <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf"> - <citetitle> - Binary Compatibility of Shared Libraries Implemented in C++ - on GNU/Linux Systems - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://syrcose.ispras.ru/2009/files/SYRCoSE2009-CfP.pdf" class="uri"> </biblioid> + <citetitle> + Binary Compatibility of Shared Libraries Implemented in C++ + on GNU/Linux Systems + </citetitle> + <subtitle> SYRCoSE 2009 </subtitle> - <author> - <firstname>Pavel</firstname> - <surname>Shved</surname> - </author> - <author> - <firstname>Denis</firstname> - <surname>Silakov</surname> - </author> + <author><personname><firstname>Pavel</firstname><surname>Shved</surname></personname></author> + <author><personname><firstname>Denis</firstname><surname>Silakov</surname></personname></author> </biblioentry> </bibliography> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/algorithms.xml b/libstdc++-v3/doc/xml/manual/algorithms.xml index 008fd0286ed..831fe5fe602 100644 --- a/libstdc++-v3/doc/xml/manual/algorithms.xml +++ b/libstdc++-v3/doc/xml/manual/algorithms.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.algorithms" xreflabel="Algorithms"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.algorithms" xreflabel="Algorithms"> <?dbhtml filename="algorithms.html"?> -<chapterinfo> +<info><title> + Algorithms + <indexterm><primary>Algorithms</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -18,19 +17,16 @@ algorithm </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Algorithms - <indexterm><primary>Algorithms</primary></indexterm> -</title> <para> The neatest accomplishment of the algorithms sect1 is that all the work is done via iterators, not containers directly. This means two important things: </para> -<orderedlist> +<orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para> Anything that behaves like an iterator can be used in one of @@ -63,7 +59,7 @@ <para> The single thing that trips people up the most is the definition of <emphasis>range</emphasis> used with iterators; the famous - "past-the-end" rule that everybody loves to hate. The + "past-the-end" rule that everybody loves to hate. The <link linkend="std.iterators">iterators sect1</link> of this document has a complete explanation of this simple rule that seems to cause so much confusion. Once you @@ -74,14 +70,14 @@ <!-- Sect1 01 : Non Modifying --> <!-- Sect1 02 : Mutating --> -<sect1 id="std.algorithms.mutating" xreflabel="Mutating"> - <title>Mutating</title> +<section xml:id="std.algorithms.mutating" xreflabel="Mutating"><info><title>Mutating</title></info> + - <sect2 id="algorithms.mutating.swap" xreflabel="swap"> - <title><function>swap</function></title> + <section xml:id="algorithms.mutating.swap" xreflabel="swap"><info><title><function>swap</function></title></info> + - <sect3 id="algorithms.swap.specializations" xreflabel="Specializations"> - <title>Specializations</title> + <section xml:id="algorithms.swap.specializations" xreflabel="Specializations"><info><title>Specializations</title></info> + <para>If you call <code> std::swap(x,y); </code> where x and y are standard containers, then the call will automatically be replaced by a call to @@ -89,16 +85,16 @@ </para> <para>This allows member functions of each container class to take over, and containers' swap functions should have O(1) complexity according to - the standard. (And while "should" allows implementations to + the standard. (And while "should" allows implementations to behave otherwise and remain compliant, this implementation does in fact use constant-time swaps.) This should not be surprising, since for two containers of the same type to swap contents, only some internal pointers to storage need to be exchanged. </para> - </sect3> - </sect2> -</sect1> + </section> + </section> +</section> <!-- Sect1 03 : Sorting --> diff --git a/libstdc++-v3/doc/xml/manual/allocator.xml b/libstdc++-v3/doc/xml/manual/allocator.xml index ca1c8cb8609..b73554eb90e 100644 --- a/libstdc++-v3/doc/xml/manual/allocator.xml +++ b/libstdc++-v3/doc/xml/manual/allocator.xml @@ -1,7 +1,8 @@ -<section id="std.util.memory.allocator" xreflabel="Allocator"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.util.memory.allocator" xreflabel="Allocator"> <?dbhtml filename="allocator.html"?> -<sectioninfo> +<info><title>Allocators</title> <keywordset> <keyword> ISO C++ @@ -10,9 +11,9 @@ allocator </keyword> </keywordset> -</sectioninfo> +</info> + -<title>Allocators</title> <para> Memory management for Standard Library entities is encapsulated in a @@ -24,8 +25,8 @@ management classes. </para> -<section id="allocator.req"> -<title>Requirements</title> +<section xml:id="allocator.req"><info><title>Requirements</title></info> + <para> The C++ standard only gives a few directives in this area: @@ -87,15 +88,14 @@ </section> -<section id="allocator.design_issues"> -<title>Design Issues</title> +<section xml:id="allocator.design_issues"><info><title>Design Issues</title></info> + <para> The easiest way of fulfilling the requirements is to call <function>operator new</function> each time a container needs memory, and to call <function>operator delete</function> each time - the container releases memory. This method may be <ulink - url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html">slower</ulink> + the container releases memory. This method may be <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00105.html">slower</link> than caching the allocations and re-using previously-allocated memory, but has the advantage of working correctly across a wide variety of hardware and operating systems, including large @@ -138,11 +138,11 @@ </section> -<section id="allocator.impl"> -<title>Implementation</title> +<section xml:id="allocator.impl"><info><title>Implementation</title></info> - <section> - <title>Interface Design</title> + + <section><info><title>Interface Design</title></info> + <para> The only allocator interface that @@ -165,8 +165,8 @@ </section> - <section> - <title>Selecting Default Allocation Policy</title> + <section><info><title>Selecting Default Allocation Policy</title></info> + <para> It's difficult to pick an allocation strategy that will provide @@ -189,8 +189,8 @@ Over multiple iterations, various STL container objects have elements inserted to some maximum amount. A variety of allocators are tested. - Test source for <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup">sequence</ulink> - and <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</ulink> + Test source for <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/sequence.cc?view=markup">sequence</link> + and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert/associative.cc?view=markup">associative</link> containers. </para> @@ -205,7 +205,7 @@ on a per-thread basis, as well as measuring thread contention for memory resources. Test source - <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc%2B%2B-v3/testsuite/performance/23_containers/insert_erase/associative.cc?view=markup">here</link>. </para> </listitem> @@ -215,9 +215,9 @@ </para> <para> Test source for - <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc?view=markup">sequence</link> and - <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc?view=markup">associative</link> containers. </para> </listitem> @@ -231,8 +231,8 @@ </section> - <section> - <title>Disabling Memory Caching</title> + <section><info><title>Disabling Memory Caching</title></info> + <para> In use, <classname>allocator</classname> may allocate and @@ -285,8 +285,8 @@ </section> -<section id="allocator.using"> -<title>Using a Specific Allocator</title> +<section xml:id="allocator.using"><info><title>Using a Specific Allocator</title></info> + <para> You can specify different memory management schemes on a @@ -305,8 +305,8 @@ </programlisting> </section> -<section id="allocator.custom"> -<title>Custom Allocators</title> +<section xml:id="allocator.custom"><info><title>Custom Allocators</title></info> + <para> Writing a portable C++ allocator would dictate that the interface @@ -323,8 +323,8 @@ </section> -<section id="allocator.ext"> -<title>Extension Allocators</title> +<section xml:id="allocator.ext"><info><title>Extension Allocators</title></info> + <para> Several other allocators are provided as part of this @@ -472,8 +472,7 @@ <para> A high-performance fixed-size allocator with exponentially-increasing allocations. It has its own - documentation, found <link - linkend="manual.ext.allocator.mt">here</link>. + documentation, found <link linkend="manual.ext.allocator.mt">here</link>. </para> </listitem> @@ -484,21 +483,20 @@ <para> A high-performance allocator that uses a bit-map to keep track of the used and unused memory locations. It has its own - documentation, found <link - linkend="manual.ext.allocator.bitmap">here</link>. + documentation, found <link linkend="manual.ext.allocator.bitmap">here</link>. </para> </listitem> </orderedlist> </section> -<bibliography id="allocator.biblio"> -<title>Bibliography</title> +<bibliography xml:id="allocator.biblio"><info><title>Bibliography</title></info> + <biblioentry> - <title> + <citetitle> ISO/IEC 14882:1998 Programming languages - C++ - </title> + </citetitle> <abbrev> isoc++_1998 </abbrev> @@ -506,17 +504,13 @@ </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.drdobbs.com/cpp/184403759"> - <citetitle> - The Standard Librarian: What Are Allocators Good For? - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.drdobbs.com/cpp/184403759" class="uri"> </biblioid> - <author> - <firstname>Matt</firstname> - <surname>Austern</surname> - </author> + <citetitle> + The Standard Librarian: What Are Allocators Good For? + </citetitle> + + <author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author> <publisher> <publishername> C/C++ Users Journal @@ -525,39 +519,25 @@ </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.cs.umass.edu/~emery/hoard/"> - <citetitle> - The Hoard Memory Allocator - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cs.umass.edu/~emery/hoard/" class="uri"> </biblioid> - <author> - <firstname>Emery</firstname> - <surname>Berger</surname> - </author> + <citetitle> + The Hoard Memory Allocator + </citetitle> + + <author><personname><firstname>Emery</firstname><surname>Berger</surname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf"> - <citetitle> - Reconsidering Custom Memory Allocation - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cs.umass.edu/~emery/pubs/berger-oopsla2002.pdf" class="uri"> </biblioid> - <author> - <firstname>Emery</firstname> - <surname>Berger</surname> - </author> - <author> - <firstname>Ben</firstname> - <surname>Zorn</surname> - </author> - <author> - <firstname>Kathryn</firstname> - <surname>McKinley</surname> - </author> + <citetitle> + Reconsidering Custom Memory Allocation + </citetitle> + + <author><personname><firstname>Emery</firstname><surname>Berger</surname></personname></author> + <author><personname><firstname>Ben</firstname><surname>Zorn</surname></personname></author> + <author><personname><firstname>Kathryn</firstname><surname>McKinley</surname></personname></author> <copyright> <year>2002</year> <holder>OOPSLA</holder> @@ -566,21 +546,14 @@ <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html"> - <citetitle> - Allocator Types - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.angelikalanger.com/Articles/C++Report/Allocators/Allocators.html" class="uri"> </biblioid> - <author> - <firstname>Klaus</firstname> - <surname>Kreft</surname> - </author> - <author> - <firstname>Angelika</firstname> - <surname>Langer</surname> - </author> + <citetitle> + Allocator Types + </citetitle> + + <author><personname><firstname>Klaus</firstname><surname>Kreft</surname></personname></author> + <author><personname><firstname>Angelika</firstname><surname>Langer</surname></personname></author> <publisher> <publishername> C/C++ Users Journal @@ -589,14 +562,11 @@ </biblioentry> <biblioentry> - <title>The C++ Programming Language</title> - <author> - <firstname>Bjarne</firstname> - <surname>Stroustrup</surname> - </author> + <citetitle>The C++ Programming Language</citetitle> + <author><personname><firstname>Bjarne</firstname><surname>Stroustrup</surname></personname></author> <copyright> <year>2000</year> - <holder></holder> + <holder/> </copyright> <pagenums>19.4 Allocators</pagenums> <publisher> @@ -607,11 +577,8 @@ </biblioentry> <biblioentry> - <title>Yalloc: A Recycling C++ Allocator</title> - <author> - <firstname>Felix</firstname> - <surname>Yen</surname> - </author> + <citetitle>Yalloc: A Recycling C++ Allocator</citetitle> + <author><personname><firstname>Felix</firstname><surname>Yen</surname></personname></author> </biblioentry> </bibliography> diff --git a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml index 279e7038a9b..7dfe8e0ddf4 100644 --- a/libstdc++-v3/doc/xml/manual/appendix_contributing.xml +++ b/libstdc++-v3/doc/xml/manual/appendix_contributing.xml @@ -1,12 +1,14 @@ -<?xml version='1.0'?> -<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<appendix id="appendix.contrib" xreflabel="Contributing"> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.contrib" xreflabel="Contributing"> <?dbhtml filename="appendix_contributing.html"?> -<appendixinfo> +<info><title> + Contributing + <indexterm> + <primary>Appendix</primary> + <secondary>Contributing</secondary> + </indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,15 +17,9 @@ library </keyword> </keywordset> -</appendixinfo> +</info> + -<title> - Contributing - <indexterm> - <primary>Appendix</primary> - <secondary>Contributing</secondary> - </indexterm> -</title> <para> The GNU C++ Library follows an open development model. Active @@ -32,11 +28,11 @@ should follow this procedure: </para> -<sect1 id="contrib.list" xreflabel="Contributor Checklist"> - <title>Contributor Checklist</title> +<section xml:id="contrib.list" xreflabel="Contributor Checklist"><info><title>Contributor Checklist</title></info> + - <sect2 id="list.reading"> - <title>Reading</title> + <section xml:id="list.reading"><info><title>Reading</title></info> + <itemizedlist> <listitem> @@ -50,9 +46,9 @@ the standard from their respective national standards organization. In the USA, this national standards organization is ANSI and their web-site is right - <ulink url="http://www.ansi.org">here.</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.ansi.org">here.</link> (And if you've already registered with them, clicking this link will take you to directly to the place where you can - <ulink url="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line.)</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC+14882:2003">buy the standard on-line</link>.) </para> </listitem> @@ -60,7 +56,7 @@ <para> The library working group bugs, and known defects, can be obtained here: - <ulink url="http://www.open-std.org/jtc1/sc22/wg21/">http://www.open-std.org/jtc1/sc22/wg21 </ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">http://www.open-std.org/jtc1/sc22/wg21 </link> </para> </listitem> @@ -69,16 +65,16 @@ The newsgroup dedicated to standardization issues is comp.std.c++: this FAQ for this group is quite useful and can be - found <ulink url="http://www.comeaucomputing.com/csc/faq.html"> - here </ulink>. + found <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.comeaucomputing.com/csc/faq.html"> + here </link>. </para> </listitem> <listitem> <para> Peruse - the <ulink url="http://www.gnu.org/prep/standards">GNU - Coding Standards</ulink>, and chuckle when you hit the part + the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/standards">GNU + Coding Standards</link>, and chuckle when you hit the part about <quote>Using Languages Other Than C</quote>. </para> </listitem> @@ -100,9 +96,9 @@ </listitem> </itemizedlist> - </sect2> - <sect2 id="list.copyright"> - <title>Assignment</title> + </section> + <section xml:id="list.copyright"><info><title>Assignment</title></info> + <para> Small changes can be accepted without a copyright assignment form on file. New code and additions to the library need completed copyright @@ -129,8 +125,8 @@ <para> For more information about getting a copyright assignment, please see - <ulink url="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal - Matters</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/maintain/html_node/Legal-Matters.html">Legal + Matters</link>. </para> <para> @@ -141,18 +137,18 @@ <email>mailto:assign@gnu.org</email>, please cc the libstdc++ maintainer above so that progress can be monitored. </para> - </sect2> + </section> - <sect2 id="list.getting"> - <title>Getting Sources</title> + <section xml:id="list.getting"><info><title>Getting Sources</title></info> + <para> - <ulink url="http://gcc.gnu.org/svnwrite.html">Getting write access - (look for "Write after approval")</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/svnwrite.html">Getting write access + (look for "Write after approval")</link> </para> - </sect2> + </section> - <sect2 id="list.patches"> - <title>Submitting Patches</title> + <section xml:id="list.patches"><info><title>Submitting Patches</title></info> + <para> Every patch must have several pieces of information before it can be @@ -195,8 +191,8 @@ else, use <command>diff -cp OLD NEW</command> ... If your version of diff does not support these options, then get the latest version of GNU - diff. The <ulink url="http://gcc.gnu.org/wiki/SvnTricks">SVN - Tricks</ulink> wiki page has information on customising the + diff. The <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/wiki/SvnTricks">SVN + Tricks</link> wiki page has information on customising the output of <code>svn diff</code>. </para> </listitem> @@ -211,20 +207,20 @@ </listitem> </itemizedlist> - </sect2> + </section> -</sect1> +</section> -<sect1 id="contrib.organization" xreflabel="Source Organization"> +<section xml:id="contrib.organization" xreflabel="Source Organization"><info><title>Directory Layout and Source Conventions</title></info> <?dbhtml filename="source_organization.html"?> - <title>Directory Layout and Source Conventions</title> + <para> The unpacked source directory of libstdc++ contains the files needed to create the GNU C++ Library. </para> - <literallayout> + <literallayout class="normal"> It has subdirectories: doc @@ -311,20 +307,20 @@ a bug or incompletely-implemented feature. Lines marked "XXX MT" indicate a place that may require attention for multi-thread safety. </literallayout> -</sect1> +</section> -<sect1 id="contrib.coding_style" xreflabel="Coding Style"> +<section xml:id="contrib.coding_style" xreflabel="Coding Style"><info><title>Coding Style</title></info> <?dbhtml filename="source_code_style.html"?> - <title>Coding Style</title> + <para> </para> - <sect2 id="coding_style.bad_identifiers"> - <title>Bad Identifiers</title> + <section xml:id="coding_style.bad_identifiers"><info><title>Bad Identifiers</title></info> + <para> Identifiers that conflict and should be avoided. </para> - <literallayout> + <literallayout class="normal"> This is the list of names <quote>reserved to the implementation</quote> that have been claimed by certain compilers and system headers of interest, and should not be used @@ -509,63 +505,71 @@ indicate a place that may require attention for multi-thread safety. __embedded_cplusplus // long double conversion members mangled as __opr // http://gcc.gnu.org/ml/libstdc++/1999-q4/msg00060.html - _opr + __opr </literallayout> - </sect2> + </section> - <sect2 id="coding_style.example"> - <title>By Example</title> - <literallayout> + <section xml:id="coding_style.example"><info><title>By Example</title></info> + + <literallayout class="normal"> This library is written to appropriate C++ coding standards. As such, it is intended to precede the recommendations of the GNU Coding Standard, which can be referenced in full here: - http://www.gnu.org/prep/standards/standards.html#Formatting + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/prep/standards/standards.html#Formatting">http://www.gnu.org/prep/standards/standards.html#Formatting</link> The rest of this is also interesting reading, but skip the "Design Advice" part. The GCC coding conventions are here, and are also useful: - http://gcc.gnu.org/codingconventions.html + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/codingconventions.html">http://gcc.gnu.org/codingconventions.html</link> In addition, because it doesn't seem to be stated explicitly anywhere else, there is an 80 column source limit. - ChangeLog entries for member functions should use the + <filename>ChangeLog</filename> entries for member functions should use the classname::member function name syntax as follows: - 1999-04-15 Dennis Ritchie <dr@att.com> +<code> +1999-04-15 Dennis Ritchie <dr@att.com> * src/basic_file.cc (__basic_file::open): Fix thinko in _G_HAVE_IO_FILE_OPEN bits. +</code> Notable areas of divergence from what may be previous local practice (particularly for GNU C) include: 01. Pointers and references - char* p = "flop"; - char& c = *p; - -NOT- - char *p = "flop"; // wrong - char &c = *p; // wrong + <code> + char* p = "flop"; + char& c = *p; + -NOT- + char *p = "flop"; // wrong + char &c = *p; // wrong + </code> Reason: In C++, definitions are mixed with executable code. Here, - p is being initialized, not *p. This is near-universal + <code>p</code> is being initialized, not <code>*p</code>. This is near-universal practice among C++ programmers; it is normal for C hackers to switch spontaneously as they gain experience. 02. Operator names and parentheses - operator==(type) - -NOT- - operator == (type) // wrong + <code> + operator==(type) + -NOT- + operator == (type) // wrong + </code> - Reason: The == is part of the function name. Separating + Reason: The <code>==</code> is part of the function name. Separating it makes the declaration look like an expression. 03. Function names and parentheses - void mangle() - -NOT- - void mangle () // wrong + <code> + void mangle() + -NOT- + void mangle () // wrong + </code> Reason: no space before parentheses (except after a control-flow keyword) is near-universal practice for C++. It identifies the @@ -573,86 +577,98 @@ indicate a place that may require attention for multi-thread safety. opposed to an expression or other overloaded use of parentheses. 04. Template function indentation - template<typename T> - void - template_function(args) - { } - -NOT- - template<class T> - void template_function(args) {}; + <code> + template<typename T> + void + template_function(args) + { } + -NOT- + template<class T> + void template_function(args) {}; + </code> Reason: In class definitions, without indentation whitespace is needed both above and below the declaration to distinguish it visually from other members. (Also, re: "typename" - rather than "class".) T often could be int, which is + rather than "class".) <code>T</code> often could be <code>int</code>, which is not a class. ("class", here, is an anachronism.) 05. Template class indentation - template<typename _CharT, typename _Traits> - class basic_ios : public ios_base - { - public: - // Types: - }; - -NOT- - template<class _CharT, class _Traits> - class basic_ios : public ios_base - { - public: - // Types: - }; - -NOT- - template<class _CharT, class _Traits> - class basic_ios : public ios_base - { - public: - // Types: - }; + <code> + template<typename _CharT, typename _Traits> + class basic_ios : public ios_base + { + public: + // Types: + }; + -NOT- + template<class _CharT, class _Traits> + class basic_ios : public ios_base + { + public: + // Types: + }; + -NOT- + template<class _CharT, class _Traits> + class basic_ios : public ios_base + { + public: + // Types: + }; + </code> 06. Enumerators - enum - { - space = _ISspace, - print = _ISprint, - cntrl = _IScntrl - }; - -NOT- - enum { space = _ISspace, print = _ISprint, cntrl = _IScntrl }; + <code> + enum + { + space = _ISspace, + print = _ISprint, + cntrl = _IScntrl + }; + -NOT- + enum { space = _ISspace, print = _ISprint, cntrl = _IScntrl }; + </code> 07. Member initialization lists All one line, separate from class name. - gribble::gribble() - : _M_private_data(0), _M_more_stuff(0), _M_helper(0); - { } - -NOT- - gribble::gribble() : _M_private_data(0), _M_more_stuff(0), _M_helper(0); - { } + <code> + gribble::gribble() + : _M_private_data(0), _M_more_stuff(0), _M_helper(0) + { } + -NOT- + gribble::gribble() : _M_private_data(0), _M_more_stuff(0), _M_helper(0) + { } + </code> 08. Try/Catch blocks - try - { - // - } - catch (...) - { - // - } - -NOT- - try { - // - } catch(...) { - // - } + <code> + try + { + // + } + catch (...) + { + // + } + -NOT- + try { + // + } catch(...) { + // + } + </code> 09. Member functions declarations and definitions Keywords such as extern, static, export, explicit, inline, etc go on the line above the function name. Thus + <code> virtual int foo() -NOT- virtual int foo() + </code> Reason: GNU coding conventions dictate return types for functions are on a separate line than the function name and parameter list @@ -663,42 +679,49 @@ indicate a place that may require attention for multi-thread safety. 10. Invocation of member functions with "this->" - For non-uglified names, use this->name to call the function. + For non-uglified names, use <code>this->name</code> to call the function. + <code> this->sync() -NOT- sync() + </code> Reason: Koenig lookup. 11. Namespaces + <code> namespace std { - blah blah blah; + blah blah blah; } // namespace std -NOT- namespace std { - blah blah blah; + blah blah blah; } // namespace std + </code> 12. Spacing under protected and private in class declarations: space above, none below i.e. + <code> public: - int foo; + int foo; -NOT- public: - int foo; + int foo; + </code> 13. Spacing WRT return statements. no extra spacing before returns, no parenthesis i.e. + <code> } return __ret; @@ -711,21 +734,22 @@ indicate a place that may require attention for multi-thread safety. } return (__ret); + </code> 14. Location of global variables. All global variables of class type, whether in the "user visible" - space (e.g., cin) or the implementation namespace, must be defined + space (e.g., <code>cin</code>) or the implementation namespace, must be defined as a character array with the appropriate alignment and then later re-initialized to the correct value. This is due to startup issues on certain platforms, such as AIX. - For more explanation and examples, see src/globals.cc. All such + For more explanation and examples, see <filename>src/globals.cc</filename>. All such variables should be contained in that file, for simplicity. 15. Exception abstractions - Use the exception abstractions found in functexcept.h, which allow - C++ programmers to use this library with -fno-exceptions. (Even if + Use the exception abstractions found in <filename class="headerfile">functexcept.h</filename>, which allow + C++ programmers to use this library with <literal>-fno-exceptions</literal>. (Even if that is rarely advisable, it's a necessary evil for backwards compatibility.) @@ -733,9 +757,11 @@ indicate a place that may require attention for multi-thread safety. All start with the name of the function where the exception is thrown, and then (optional) descriptive text is added. Example: + <code> __throw_logic_error(__N("basic_string::_S_construct NULL not valid")); + </code> - Reason: The verbose terminate handler prints out exception::what(), + Reason: The verbose terminate handler prints out <code>exception::what()</code>, as well as the typeinfo for the thrown exception. As this is the default terminate handler, by putting location info into the exception string, a very useful error message is printed out for @@ -755,21 +781,21 @@ indicate a place that may require attention for multi-thread safety. to use names that begin with underscores. This is called "uglification". The convention is: - Local and argument names: __[a-z].* + Local and argument names: <literal>__[a-z].*</literal> - Examples: __count __ix __s1 + Examples: <code>__count __ix __s1</code> - Type names and template formal-argument names: _[A-Z][^_].* + Type names and template formal-argument names: <literal>_[A-Z][^_].*</literal> - Examples: _Helper _CharT _N + Examples: <code>_Helper _CharT _N</code> - Member data and function names: _M_.* + Member data and function names: <literal>_M_.*</literal> - Examples: _M_num_elements _M_initialize () + Examples: <code>_M_num_elements _M_initialize ()</code> - Static data members, constants, and enumerations: _S_.* + Static data members, constants, and enumerations: <literal>_S_.*</literal> - Examples: _S_max_elements _S_default_value + Examples: <code>_S_max_elements _S_default_value</code> Don't use names in the same scope that differ only in the prefix, e.g. _S_top and _M_top. See BADNAMES for a list of forbidden names. @@ -781,87 +807,88 @@ indicate a place that may require attention for multi-thread safety. -------------------------- [BY EXAMPLE] + <code> #ifndef _HEADER_ #define _HEADER_ 1 namespace std { - class gribble - { - public: - gribble() throw(); + class gribble + { + public: + gribble() throw(); - gribble(const gribble&); + gribble(const gribble&); - explicit - gribble(int __howmany); + explicit + gribble(int __howmany); - gribble& - operator=(const gribble&); + gribble& + operator=(const gribble&); - virtual - ~gribble() throw (); + virtual + ~gribble() throw (); - // Start with a capital letter, end with a period. - inline void - public_member(const char* __arg) const; + // Start with a capital letter, end with a period. + inline void + public_member(const char* __arg) const; - // In-class function definitions should be restricted to one-liners. - int - one_line() { return 0 } + // In-class function definitions should be restricted to one-liners. + int + one_line() { return 0 } - int - two_lines(const char* arg) - { return strchr(arg, 'a'); } + int + two_lines(const char* arg) + { return strchr(arg, 'a'); } - inline int - three_lines(); // inline, but defined below. + inline int + three_lines(); // inline, but defined below. - // Note indentation. - template<typename _Formal_argument> - void - public_template() const throw(); + // Note indentation. + template<typename _Formal_argument> + void + public_template() const throw(); - template<typename _Iterator> - void - other_template(); + template<typename _Iterator> + void + other_template(); - private: - class _Helper; + private: + class _Helper; - int _M_private_data; - int _M_more_stuff; - _Helper* _M_helper; - int _M_private_function(); + int _M_private_data; + int _M_more_stuff; + _Helper* _M_helper; + int _M_private_function(); - enum _Enum - { - _S_one, - _S_two - }; + enum _Enum + { + _S_one, + _S_two + }; - static void - _S_initialize_library(); - }; + static void + _S_initialize_library(); + }; - // More-or-less-standard language features described by lack, not presence. + // More-or-less-standard language features described by lack, not presence. # ifndef _G_NO_LONGLONG - extern long long _G_global_with_a_good_long_name; // avoid globals! + extern long long _G_global_with_a_good_long_name; // avoid globals! # endif - // Avoid in-class inline definitions, define separately; - // likewise for member class definitions: - inline int - gribble::public_member() const - { int __local = 0; return __local; } + // Avoid in-class inline definitions, define separately; + // likewise for member class definitions: + inline int + gribble::public_member() const + { int __local = 0; return __local; } - class gribble::_Helper - { - int _M_stuff; + class gribble::_Helper + { + int _M_stuff; - friend class gribble; - }; + friend class gribble; + }; } // Names beginning with "__": only for arguments and @@ -873,57 +900,58 @@ indicate a place that may require attention for multi-thread safety. namespace std { - template<typename T> // notice: "typename", not "class", no space - long_return_value_type<with_many, args> - function_name(char* pointer, // "char *pointer" is wrong. - char* argument, - const Reference& ref) - { - // int a_local; /* wrong; see below. */ - if (test) - { - nested code - } - - int a_local = 0; // declare variable at first use. - - // char a, b, *p; /* wrong */ - char a = 'a'; - char b = a + 1; - char* c = "abc"; // each variable goes on its own line, always. - - // except maybe here... - for (unsigned i = 0, mask = 1; mask; ++i, mask <<= 1) { - // ... - } - } - - gribble::gribble() - : _M_private_data(0), _M_more_stuff(0), _M_helper(0); - { } - - inline int - gribble::three_lines() - { - // doesn't fit in one line. - } + template<typename T> // notice: "typename", not "class", no space + long_return_value_type<with_many, args> + function_name(char* pointer, // "char *pointer" is wrong. + char* argument, + const Reference& ref) + { + // int a_local; /* wrong; see below. */ + if (test) + { + nested code + } + + int a_local = 0; // declare variable at first use. + + // char a, b, *p; /* wrong */ + char a = 'a'; + char b = a + 1; + char* c = "abc"; // each variable goes on its own line, always. + + // except maybe here... + for (unsigned i = 0, mask = 1; mask; ++i, mask <<= 1) { + // ... + } + } + + gribble::gribble() + : _M_private_data(0), _M_more_stuff(0), _M_helper(0) + { } + + int + gribble::three_lines() + { + // doesn't fit in one line. + } } // namespace std + </code> </literallayout> - </sect2> -</sect1> + </section> +</section> -<sect1 id="contrib.doc_style" xreflabel="Documentation Style"> +<section xml:id="contrib.doc_style" xreflabel="Documentation Style"><info><title>Documentation Style</title></info> <?dbhtml filename="documentation_style.html"?> - <title>Documentation Style</title> - <sect2 id="doc_style.doxygen"> - <title>Doxygen</title> - <sect3 id="doxygen.prereq"> - <title>Prerequisites</title> + + <section xml:id="doc_style.doxygen"><info><title>Doxygen</title></info> + + <section xml:id="doxygen.prereq"><info><title>Prerequisites</title></info> + <para> - Prerequisite tools are Bash 2.x, - <ulink url="http://www.doxygen.org/">Doxygen</ulink>, and - the <ulink url="http://www.gnu.org/software/coreutils/">GNU - coreutils</ulink>. (GNU versions of find, xargs, and possibly + Prerequisite tools are Bash 2.0 or later, + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.doxygen.org/">Doxygen</link>, and + the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/coreutils/">GNU + coreutils</link>. (GNU versions of find, xargs, and possibly sed and grep are used, just because the GNU versions make things very easy.) </para> @@ -931,18 +959,18 @@ indicate a place that may require attention for multi-thread safety. <para> To generate the pretty pictures and hierarchy graphs, the - <ulink url="http://www.graphviz.org">Graphviz</ulink> package + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.graphviz.org">Graphviz</link> package will need to be installed. For PDF - output, <ulink url="http://www.tug.org/applications/pdftex/"> - pdflatex</ulink> is required. + output, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.tug.org/applications/pdftex/"> + pdflatex</link> is required. </para> - </sect3> + </section> - <sect3 id="doxygen.rules"> - <title>Generating the Doxygen Files</title> + <section xml:id="doxygen.rules"><info><title>Generating the Doxygen Files</title></info> + <para> The following Makefile rules run Doxygen to generate HTML - docs, XML docs, PDF docs, and the man pages. + docs, XML docs, XML docs as a single file, PDF docs, and the man pages. </para> <para> @@ -954,6 +982,10 @@ indicate a place that may require attention for multi-thread safety. </para> <para> + <screen><userinput>make doc-xml-single-doxygen</userinput></screen> + </para> + + <para> <screen><userinput>make doc-pdf-doxygen</userinput></screen> </para> @@ -962,6 +994,13 @@ indicate a place that may require attention for multi-thread safety. </para> <para> + Generated files are output into separate sub directores of + <filename class="directory">doc/doxygen/</filename> in the + build directory, based on the output format. For instance, the + HTML docs will be in <filename class="directory">doc/doxygen/html</filename>. + </para> + + <para> Careful observers will see that the Makefile rules simply call a script from the source tree, <filename>run_doxygen</filename>, which does the actual work of running Doxygen and then (most @@ -976,10 +1015,10 @@ indicate a place that may require attention for multi-thread safety. library hackers are written in triple-# comments. </para> - </sect3> + </section> - <sect3 id="doxygen.markup"> - <title>Markup</title> + <section xml:id="doxygen.markup"><info><title>Markup</title></info> + <para> In general, libstdc++ files should be formatted according to @@ -993,7 +1032,7 @@ indicate a place that may require attention for multi-thread safety. Adding Doxygen markup to a file (informally called <quote>doxygenating</quote>) is very simple. The Doxygen manual can be found - <ulink url="http://www.stack.nl/~dimitri/doxygen/download.html#latestman">here</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stack.nl/~dimitri/doxygen/download.html#latestman">here</link>. We try to use a very-recent version of Doxygen. </para> @@ -1009,12 +1048,12 @@ indicate a place that may require attention for multi-thread safety. <para> Some commentary to accompany - the first list in the <ulink url="http://www.stack.nl/~dimitri/doxygen/docblocks.html">Special - Documentation Blocks</ulink> section of + the first list in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stack.nl/~dimitri/doxygen/docblocks.html">Special + Documentation Blocks</link> section of the Doxygen manual: </para> - <orderedlist> + <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>For longer comments, use the Javadoc style...</para> </listitem> @@ -1072,7 +1111,7 @@ indicate a place that may require attention for multi-thread safety. </para> <para> -<literallayout> +<literallayout class="normal"> /** * @brief A model of a linear congruential random number generator. * @@ -1090,11 +1129,12 @@ indicate a place that may require attention for multi-thread safety. doubt, consult the following table. </para> -<table frame='all'> +<table frame="all"> <title>HTML to Doxygen Markup Comparison</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <thead> <row> @@ -1110,12 +1150,12 @@ indicate a place that may require attention for multi-thread safety. </row> <row> - <entry>"</entry> + <entry>"</entry> <entry>\"</entry> </row> <row> - <entry>'</entry> + <entry>'</entry> <entry>\'</entry> </row> @@ -1149,15 +1189,15 @@ indicate a place that may require attention for multi-thread safety. </table> - </sect3> + </section> - </sect2> + </section> - <sect2 id="doc_style.docbook"> - <title>Docbook</title> + <section xml:id="doc_style.docbook"><info><title>Docbook</title></info> + - <sect3 id="docbook.prereq"> - <title>Prerequisites</title> + <section xml:id="docbook.prereq"><info><title>Prerequisites</title></info> + <para> Editing the DocBook sources requires an XML editor. Many exist: some notable options @@ -1178,16 +1218,16 @@ indicate a place that may require attention for multi-thread safety. </para> <para> - Access to the DocBook stylesheets and DTD is required. The + Access to the DocBook 5.0 stylesheets and schema is required. The stylesheets are usually packaged by vendor, in something - like <filename>docbook-style-xsl</filename>. To exactly match + like <filename>docbook5-style-xsl</filename>. To exactly match generated output, please use a version of the stylesheets equivalent - to <filename>docbook-style-xsl-1.74.0-5</filename>. The + to <filename>docbook5-style-xsl-1.75.2-3</filename>. The installation directory for this package corresponds to the <literal>XSL_STYLE_DIR</literal> in <filename>doc/Makefile.am</filename> and defaults - to <filename class="directory">/usr/share/sgml/docbook/xsl-stylesheets</filename>. + to <filename class="directory">/usr/share/sgml/docbook/xsl-ns-stylesheets</filename>. </para> <para> @@ -1199,26 +1239,30 @@ indicate a place that may require attention for multi-thread safety. <para> For validating the XML document, you'll need something like <command>xmllint</command> and access to the - DocBook DTD. These are provided - by a vendor package like <filename>libxml2</filename>. + relevant DocBook schema. These are provided + by a vendor package like <filename>libxml2</filename> and <filename>docbook5-schemas-5.0-4</filename> </para> <para> - For PDF output, something that transforms valid XML to PDF is - required. Possible solutions include - <ulink url="http://dblatex.sourceforge.net">dblatex</ulink>, - <command>xmlto</command>, or <command>prince</command>. Other - options are listed on the DocBook - web <ulink url="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</ulink>. Please + For PDF output, something that transforms valid Docbook XML to PDF is + required. Possible solutions include <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dblatex.sourceforge.net">dblatex</link>, + <command>xmlto</command>, or <command>prince</command>. Of + these, <command>dblatex</command> is the default. Other + options are listed on the DocBook web <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://wiki.docbook.org/topic/DocBookPublishingTools">pages</link>. Please consult the <email>libstdc++@gcc.gnu.org</email> list when preparing printed manuals for current best practice and suggestions. </para> <para> - Make sure that the XML documentation and markup is valid for - any change. This can be done easily, with the validation rules - in the <filename>Makefile</filename>, which is equivalent to doing: + For Texinfo output, something that transforms valid Docbook + XML to Texinfo is required. The default choice is <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://docbook2x.sourceforge.net/">docbook2X</link>. + </para> + + <para> + Please make sure that the XML documentation and markup is valid for + any change. This can be done easily, with the validation rule + detailed below, which is equivalent to doing: </para> <screen> @@ -1226,10 +1270,10 @@ indicate a place that may require attention for multi-thread safety. xmllint --noout --valid <filename>xml/index.xml</filename> </userinput> </screen> - </sect3> + </section> - <sect3 id="docbook.rules"> - <title>Generating the DocBook Files</title> + <section xml:id="docbook.rules"><info><title>Generating the DocBook Files</title></info> + <para> The following Makefile rules generate (in order): an HTML @@ -1254,12 +1298,18 @@ xmllint --noout --valid <filename>xml/index.xml</filename> <screen><userinput>make doc-xml-validate-docbook</userinput></screen> </para> - </sect3> + <para> + Generated files are output into separate sub directores of + <filename class="directory">doc/docbook/</filename> in the + build directory, based on the output format. For instance, the + HTML docs will be in <filename class="directory">doc/docbook/html</filename>. + </para> + </section> - <sect3 id="docbook.examples"> - <title>File Organization and Basics</title> + <section xml:id="docbook.examples"><info><title>File Organization and Basics</title></info> + - <literallayout> + <literallayout class="normal"> <emphasis>Which files are important</emphasis> All Docbook files are in the directory @@ -1320,24 +1370,25 @@ xmllint --noout --valid <filename>xml/index.xml</filename> </set> </literallayout> - </sect3> + </section> - <sect3 id="docbook.markup"> - <title>Markup By Example</title> + <section xml:id="docbook.markup"><info><title>Markup By Example</title></info> + <para> Complete details on Docbook markup can be found in the DocBook Element Reference, - <ulink url="http://www.docbook.org/tdg/en/html/part2.html">online</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.docbook.org/tdg/en/html/part2.html">online</link>. An incomplete reference for HTML to Docbook conversion is detailed in the table below. </para> -<table frame='all'> +<table frame="all"> <title>HTML to Docbook XML Markup Comparison</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <thead> <row> @@ -1398,7 +1449,7 @@ xmllint --noout --valid <filename>xml/index.xml</filename> <entry><emphasis></entry> </row> <row> - <entry>"</entry> + <entry>"</entry> <entry><quote></entry> </row> </tbody> @@ -1410,11 +1461,12 @@ xmllint --noout --valid <filename>xml/index.xml</filename> equivalents are listed in the table below. </para> -<table frame='all'> +<table frame="all"> <title>Docbook XML Element Use</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <thead> <row> @@ -1481,42 +1533,112 @@ xmllint --noout --valid <filename>xml/index.xml</filename> </tgroup> </table> - </sect3> - </sect2> + </section> + </section> - <sect2 id="doc_style.combines"> - <title>Combines</title> + <section xml:id="doc_style.combines"><info><title>Combines</title></info> + - <sect3 id="combines.rules"> - <title>Generating Combines and Assemblages</title> + <section xml:id="combines.rules"><info><title>Generating Combines and Assemblages</title></info> + <para> The following Makefile rules are defaults, and are usually - aliased to variable rules. + aliased to more detailed rules. They are shortcuts for + generating HTML, PDF, Texinfo, XML, or man files and then collecting + the generated files into the build directory's doc directory. </para> +<variablelist> + +<varlistentry><term> + <emphasis>make doc-html</emphasis> + </term> +<listitem> <para> - <screen><userinput>make doc-html</userinput></screen> + Generates multi-page HTML documentation in the following directories: </para> + <para> + <filename class="directory">doc/libstdc++-api.html</filename> + </para> + <para> + <filename class="directory">doc/libstdc++-manual.html</filename> + </para> +</listitem> +</varlistentry> + +<varlistentry><term> + <emphasis>make doc-man</emphasis> + </term> +<listitem> + <para> + Generates man pages in the following directory: + </para> + <para> + <filename class="directory">doc/libstdc++-api.man</filename> + </para> +</listitem> +</varlistentry> + +<varlistentry><term> + <emphasis>make doc-pdf</emphasis> + </term> +<listitem> + <para> + Generates indexed PDF documentation in the following files: + </para> + <para> + <filename>doc/libstdc++-api.pdf</filename> + </para> + <para> + <filename>doc/libstdc++-manual.pdf</filename> + </para> +</listitem> +</varlistentry> +<varlistentry><term> + <emphasis>make doc-texinfo</emphasis> + </term> +<listitem> + <para> + Generates Texinfo documentation in the following files: + </para> <para> - <screen><userinput>make doc-man</userinput></screen> + <filename>doc/libstdc++-manual.texinfo</filename> </para> +</listitem> +</varlistentry> +<varlistentry><term> + <emphasis>make doc-xml</emphasis> + </term> +<listitem> + <para> + Generates single-file XML documentation in the following files: + </para> <para> - <screen><userinput>make doc-pdf</userinput></screen> + <filename>doc/libstdc++-api.xml</filename> </para> - </sect3> - </sect2> -</sect1> + <para> + <filename>doc/libstdc++-manual.xml</filename> + </para> +</listitem> +</varlistentry> + +</variablelist> + + + </section> + </section> +</section> -<sect1 id="contrib.design_notes" xreflabel="Design Notes"> +<section xml:id="contrib.design_notes" xreflabel="Design Notes"><info><title>Design Notes</title></info> <?dbhtml filename="source_design_notes.html"?> - <title>Design Notes</title> + <para> </para> - <literallayout> + <literallayout class="normal"> The Library ----------- @@ -2370,6 +2492,6 @@ xmllint --noout --valid <filename>xml/index.xml</filename> include them via "<backward/hash_map.h>" or "<ext/hash_map>" than to search the subdirectory itself via a "-I" directive. </literallayout> -</sect1> +</section> </appendix> diff --git a/libstdc++-v3/doc/xml/manual/appendix_free.xml b/libstdc++-v3/doc/xml/manual/appendix_free.xml index 61df179eb3a..86d503c9452 100644 --- a/libstdc++-v3/doc/xml/manual/appendix_free.xml +++ b/libstdc++-v3/doc/xml/manual/appendix_free.xml @@ -1,12 +1,14 @@ -<?xml version='1.0'?> -<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<appendix id="appendix.free" xreflabel="Free"> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.free" xreflabel="Free"> <?dbhtml filename="appendix_free.html"?> -<appendixinfo> +<info><title> + Free Software Needs Free Documentation + <indexterm> + <primary>Appendix</primary> + <secondary>Free Documentation</secondary> + </indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,15 +17,9 @@ library </keyword> </keywordset> -</appendixinfo> +</info> + -<title> - Free Software Needs Free Documentation - <indexterm> - <primary>Appendix</primary> - <secondary>Free Documentation</secondary> - </indexterm> -</title> <para> The biggest deficiency in free operating systems is not in the @@ -68,7 +64,7 @@ can ill afford to lose manuals this way. Free documentation, like free software, is a matter of freedom, not price. The problem with these manuals was not that O'Reilly Associates charged a price for printed copies--that in itself is fine. -(The Free Software Foundation <ulink url="http://www.gnu.org/doc/doc.html">sells printed copies</ulink> of +(The Free Software Foundation <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/doc/doc.html">sells printed copies</link> of free GNU manuals, too.) But GNU manuals are available in source code form, while these manuals are available only on paper. GNU manuals come with permission to copy and modify; the Perl manuals do not. @@ -167,8 +163,8 @@ check the distribution terms of a manual before you buy it, and prefer copylefted manuals to non-copylefted ones. </para> <para> -[Note: We now maintain a <ulink url="http://www.fsf.org/licensing/doc/other-free-books.html">web page -that lists free books available from other publishers</ulink>]. +[Note: We now maintain a <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org/licensing/doc/other-free-books.html">web page +that lists free books available from other publishers</link>]. </para> <para>Copyright © 2004, 2005, 2006, 2007 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</para> diff --git a/libstdc++-v3/doc/xml/manual/appendix_porting.xml b/libstdc++-v3/doc/xml/manual/appendix_porting.xml index 80884533fab..dc29a35353f 100644 --- a/libstdc++-v3/doc/xml/manual/appendix_porting.xml +++ b/libstdc++-v3/doc/xml/manual/appendix_porting.xml @@ -1,12 +1,14 @@ -<?xml version='1.0'?> -<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<appendix id="appendix.porting" xreflabel="Porting"> +<appendix xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.porting" xreflabel="Porting"> <?dbhtml filename="appendix_porting.html"?> -<appendixinfo> +<info><title> + Porting and Maintenance + <indexterm> + <primary>Appendix</primary> + <secondary>Porting and Maintenance</secondary> + </indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,44 +17,32 @@ library </keyword> </keywordset> -</appendixinfo> +</info> + -<title> - Porting and Maintenance - <indexterm> - <primary>Appendix</primary> - <secondary>Porting and Maintenance</secondary> - </indexterm> -</title> <!-- Hacking the Build System --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="build_hacking.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="build_hacking.xml"> </xi:include> <!-- Internals: Porting to New Hardware or Operating Systems --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="internals.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="internals.xml"> </xi:include> <!-- Test --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="test.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="test.xml"> </xi:include> <!-- ABI Policy and Guidelines --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="abi.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="abi.xml"> </xi:include> <!-- API Evolution and Deprecation History --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="evolution.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="evolution.xml"> </xi:include> <!-- Backwards Compatibility --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="backwards_compatibility.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="backwards_compatibility.xml"> </xi:include> </appendix> diff --git a/libstdc++-v3/doc/xml/manual/atomics.xml b/libstdc++-v3/doc/xml/manual/atomics.xml index 345b2b7f6c1..ddeea0185d5 100644 --- a/libstdc++-v3/doc/xml/manual/atomics.xml +++ b/libstdc++-v3/doc/xml/manual/atomics.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.atomics" xreflabel="Atomics"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.atomics" xreflabel="Atomics"> <?dbhtml filename="atomics.html"?> -<chapterinfo> +<info><title> + Atomics + <indexterm><primary>Atomics</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -18,20 +17,17 @@ atomic </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Atomics - <indexterm><primary>Atomics</primary></indexterm> -</title> <para> Facilities for atomic operations. </para> <!-- Sect1 01 : API --> -<sect1 id="std.atomics.api"> - <title>API Reference</title> +<section xml:id="std.atomics.api"><info><title>API Reference</title></info> + <para> All items are declared in the standard header @@ -56,6 +52,6 @@ <!-- Doxygen XML: api/group__atomics.xml --> -</sect1> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/auto_ptr.xml b/libstdc++-v3/doc/xml/manual/auto_ptr.xml index 6c49a5567f3..f62d8f472b4 100644 --- a/libstdc++-v3/doc/xml/manual/auto_ptr.xml +++ b/libstdc++-v3/doc/xml/manual/auto_ptr.xml @@ -1,7 +1,8 @@ -<section id="std.util.memory.auto_ptr" xreflabel="auto_ptr"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.util.memory.auto_ptr" xreflabel="auto_ptr"> <?dbhtml filename="auto_ptr.html"?> -<sectioninfo> +<info><title>auto_ptr</title> <keywordset> <keyword> ISO C++ @@ -10,12 +11,12 @@ auto_ptr </keyword> </keywordset> -</sectioninfo> +</info> -<title>auto_ptr</title> -<section id="auto_ptr.limitations"> -<title>Limitations</title> + +<section xml:id="auto_ptr.limitations"><info><title>Limitations</title></info> + <para>Explaining all of the fun and delicious things that can happen with misuse of the <classname>auto_ptr</classname> class @@ -81,8 +82,8 @@ </para> </section> -<section id="auto_ptr.using"> -<title>Use in Containers</title> +<section xml:id="auto_ptr.using"><info><title>Use in Containers</title></info> + <para> </para> diff --git a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml index c6135530c18..1f7348a0e90 100644 --- a/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml +++ b/libstdc++-v3/doc/xml/manual/backwards_compatibility.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.appendix.porting.backwards" xreflabel="backwards"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.appendix.porting.backwards" xreflabel="backwards"> <?dbhtml filename="backwards.html"?> -<sect1info> +<info><title>Backwards Compatibility</title> <keywordset> <keyword> ISO C++ @@ -10,12 +11,12 @@ backwards </keyword> </keywordset> -</sect1info> +</info> -<title>Backwards Compatibility</title> -<sect2 id="backwards.first"> -<title>First</title> + +<section xml:id="backwards.first"><info><title>First</title></info> + <para>The first generation GNU C++ library was called libg++. It was a separate GNU project, although reliably paired with GCC. Rumors imply @@ -41,15 +42,15 @@ Committee couldn't include everything, and so a lot of those <para>Portability notes and known implementation limitations are as follows.</para> -<sect3> - <title>No <code>ios_base</code></title> +<section><info><title>No <code>ios_base</code></title></info> + <para> At least some older implementations don't have <code>std::ios_base</code>, so you should use <code>std::ios::badbit</code>, <code>std::ios::failbit</code> and <code>std::ios::eofbit</code> and <code>std::ios::goodbit</code>. </para> -</sect3> +</section> + +<section><info><title>No <code>cout</code> in <code>ostream.h</code>, no <code>cin</code> in <code>istream.h</code></title></info> -<sect3> -<title>No <code>cout</code> in <code>ostream.h</code>, no <code>cin</code> in <code>istream.h</code></title> <para> In earlier versions of the standard, @@ -65,15 +66,15 @@ Committee couldn't include everything, and so a lot of those <para>This project is no longer maintained or supported, and the sources archived. For the desperate, -the <ulink url="http://gcc.gnu.org/extensions.html">GCC extensions -page</ulink> describes where to find the last libg++ source. The code is +the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/extensions.html">GCC extensions +page</link> describes where to find the last libg++ source. The code is considered replaced and rewritten. </para> -</sect3> -</sect2> +</section> +</section> + +<section xml:id="backwards.second"><info><title>Second</title></info> -<sect2 id="backwards.second"> -<title>Second</title> <para> The second generation GNU C++ library was called libstdc++, or @@ -95,8 +96,8 @@ considered replaced and rewritten. Portability notes and known implementation limitations are as follows. </para> -<sect3> - <title>Namespace <code>std::</code> not supported</title> +<section><info><title>Namespace <code>std::</code> not supported</title></info> + <para> Some care is required to support C++ compiler and or library @@ -179,10 +180,10 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ fi ]) </programlisting> -</sect3> +</section> + +<section><info><title>Illegal iterator usage</title></info> -<sect3> -<title>Illegal iterator usage</title> <para> The following illustrate implementation-allowed illegal iterator use, and then correct use. @@ -209,15 +210,14 @@ AC_DEFUN([AC_CXX_NAMESPACE_STD], [ </para> </listitem> </itemizedlist> -</sect3> +</section> -<sect3> - <title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro - </title> +<section><info><title><code>isspace</code> from <filename class="headerfile">cctype</filename> is a macro + </title></info> + <para> - Glibc 2.0.x and 2.1.x define <filename - class="headerfile">ctype.h</filename> functionality as macros + Glibc 2.0.x and 2.1.x define <filename class="headerfile">ctype.h</filename> functionality as macros (isspace, isalpha etc.). </para> @@ -259,17 +259,16 @@ std:: (__ctype_b[(int) ( ( 'X' ) )] & (unsigned short int) _ISspace ) ; <para> Another problem arises if you put a <code>using namespace - std;</code> declaration at the top, and include <filename - class="headerfile">ctype.h</filename>. This will result in + std;</code> declaration at the top, and include <filename class="headerfile">ctype.h</filename>. This will result in ambiguities between the definitions in the global namespace (<filename class="headerfile">ctype.h</filename>) and the definitions in namespace <code>std::</code> (<code><cctype></code>). </para> -</sect3> +</section> + +<section><info><title>No <code>vector::at</code>, <code>deque::at</code>, <code>string::at</code></title></info> -<sect3> -<title>No <code>vector::at</code>, <code>deque::at</code>, <code>string::at</code></title> <para> One solution is to add an autoconf-test for this: @@ -303,10 +302,10 @@ AC_DEFINE(HAVE_CONTAINER_AT)], to check for <code>string::at</code> separately. </para> -</sect3> +</section> + +<section><info><title>No <code>std::char_traits<char>::eof</code></title></info> -<sect3> -<title>No <code>std::char_traits<char>::eof</code></title> <para> Use some kind of autoconf test, plus this: @@ -320,10 +319,10 @@ AC_DEFINE(HAVE_CONTAINER_AT)], #endif </programlisting> -</sect3> +</section> + +<section><info><title>No <code>string::clear</code></title></info> -<sect3> -<title>No <code>string::clear</code></title> <para> There are two functions for deleting the contents of a string: @@ -350,28 +349,27 @@ erase(size_type __pos = 0, size_type __n = npos) version, so you should use <code>erase</code> (which is probably faster than <code>operator=(charT*)</code>). </para> -</sect3> +</section> -<sect3> -<title> +<section><info><title> Removal of <code>ostream::form</code> and <code>istream::scan</code> extensions -</title> +</title></info> + <para> These are no longer supported. Please use stringstreams instead. </para> -</sect3> +</section> + +<section><info><title>No <code>basic_stringbuf</code>, <code>basic_stringstream</code></title></info> -<sect3> -<title>No <code>basic_stringbuf</code>, <code>basic_stringstream</code></title> <para> Although the ISO standard <code>i/ostringstream</code>-classes are provided, (<filename class="headerfile">sstream</filename>), for compatibility with older implementations the pre-ISO - <code>i/ostrstream</code> (<filename - class="headerfile">strstream</filename>) interface is also provided, + <code>i/ostrstream</code> (<filename class="headerfile">strstream</filename>) interface is also provided, with these caveats: </para> @@ -484,34 +482,33 @@ any = temp; </programlisting> <para> - Another example of using stringstreams is in <link - linkend="strings.string.shrink">this howto</link>. + Another example of using stringstreams is in <link linkend="strings.string.shrink">this howto</link>. </para> <para> There is additional information in the libstdc++-v2 info files, in particular <quote>info iostream</quote>. </para> -</sect3> +</section> -<sect3> - <title>Little or no wide character support</title> +<section><info><title>Little or no wide character support</title></info> + <para> Classes <classname>wstring</classname> and <classname>char_traits<wchar_t></classname> are not supported. </para> -</sect3> +</section> -<sect3> - <title>No templatized iostreams</title> +<section><info><title>No templatized iostreams</title></info> + <para> Classes <classname>wfilebuf</classname> and <classname>wstringstream</classname> are not supported. </para> -</sect3> +</section> + +<section><info><title>Thread safety issues</title></info> -<sect3> -<title>Thread safety issues</title> <para> Earlier GCC releases had a somewhat different approach to @@ -541,10 +538,9 @@ particular <quote>info iostream</quote>. written against per-CPU-architecture spinlocks and other parts against the gthr.h abstraction layer which is provided by gcc. A minor problem that pops up every so often is different - interpretations of what "thread-safe" means for a - library (not a general program). We currently use the <ulink - url="http://www.sgi.com/tech/stl/thread_safety.html">same - definition that SGI</ulink> uses for their STL subset. However, + interpretations of what "thread-safe" means for a + library (not a general program). We currently use the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/thread_safety.html">same + definition that SGI</link> uses for their STL subset. However, the exception for read-only containers only applies to the STL components. This definition is widely-used and something similar will be used in the next version of the C++ standard library. @@ -554,23 +550,22 @@ particular <quote>info iostream</quote>. Here is a small link farm to threads (no pun) in the mail archives that discuss the threading problem. Each link is to the first relevant message in the thread; from there you can use - "Thread Next" to move down the thread. This farm is in + "Thread Next" to move down the thread. This farm is in latest-to-oldest order. </para> <itemizedlist> <listitem> <para> - Our threading expert Loren gives a breakdown of <ulink - url="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the - six situations involving threads</ulink> for the 3.0 + Our threading expert Loren gives a breakdown of <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-10/msg00024.html">the + six situations involving threads</link> for the 3.0 release series. </para> </listitem> <listitem> <para> - <ulink url="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html"> - This message</ulink> inspired a recent updating of issues with + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2001-05/msg00384.html"> + This message</link> inspired a recent updating of issues with threading and the SGI STL library. It also contains some example POSIX-multithreaded STL code. </para> @@ -584,12 +579,12 @@ particular <quote>info iostream</quote>. with work to restore them. Many of the points have been superseded anyhow.) </para> -</sect3> +</section> + +</section> -</sect2> +<section xml:id="backwards.third"><info><title>Third</title></info> -<sect2 id="backwards.third"> -<title>Third</title> <para> The third generation GNU C++ library is called libstdc++, or libstdc++-v3. @@ -606,8 +601,8 @@ libstdc++-v3. <para>Portability notes and known implementation limitations are as follows.</para> -<sect3> -<title>Pre-ISO headers moved to backwards or removed</title> +<section><info><title>Pre-ISO headers moved to backwards or removed</title></info> + <para> The pre-ISO C++ headers (<code>iostream.h</code>, <code>defalloc.h</code> etc.) are @@ -621,8 +616,8 @@ libstdc++-v3. </para> <para>For those of you new to ISO C++ (welcome, time travelers!), no, that isn't a typo. Yes, the headers really have new names. - Marshall Cline's C++ FAQ Lite has a good explanation in <ulink url="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4">item - [27.4]</ulink>. + Marshall Cline's C++ FAQ Lite has a good explanation in <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.4">item + [27.4]</link>. </para> <para> Some include adjustment may be required. What follows is an @@ -691,10 +686,10 @@ directive <code>using namespace std;</code> can be put at the global scope. This should be enough to get this code compiling, assuming the other usage is correct. </para> -</sect3> +</section> + +<section><info><title>Extension headers hash_map, hash_set moved to ext or backwards</title></info> -<sect3> -<title>Extension headers hash_map, hash_set moved to ext or backwards</title> <para>At this time most of the features of the SGI STL extension have been replaced by standardized libraries. @@ -781,11 +776,11 @@ AC_DEFUN([AC_HEADER_EXT_HASH_SET], [ fi ]) </programlisting> -</sect3> +</section> + +<section><info><title>No <code>ios::nocreate/ios::noreplace</code>. +</title></info> -<sect3> -<title>No <code>ios::nocreate/ios::noreplace</code>. -</title> <para> The existence of <code>ios::nocreate</code> being used for input-streams has been confirmed, most probably because the author @@ -800,12 +795,12 @@ decide whether you want to create/replace or not. To my knowledge, even older implementations support <code>app</code>, <code>ate</code> and <code>trunc</code> (except for <code>app</code> ?). </para> -</sect3> +</section> -<sect3> -<title> +<section><info><title> No <code>stream::attach(int fd)</code> -</title> +</title></info> + <para> Phil Edwards writes: It was considered and rejected for the ISO @@ -825,22 +820,22 @@ No <code>stream::attach(int fd)</code> <para> An extension is available that implements this. <filename class="headerfile">ext/stdio_filebuf.h</filename> contains a derived class called - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></link>. This class can be constructed from a C <code>FILE*</code> or a file descriptor, and provides the <code>fd()</code> function. </para> <para> For another example of this, refer to - <ulink url="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.josuttis.com/cppcode/fdstream.html">fdstream example</link> by Nicolai Josuttis. </para> -</sect3> +</section> -<sect3> -<title> +<section><info><title> Support for C++98 dialect. -</title> +</title></info> + <para>Check for complete library coverage of the C++1998/2003 standard. </para> @@ -911,12 +906,12 @@ AC_DEFUN([AC_HEADER_STDCXX_98], [ fi ]) </programlisting> -</sect3> +</section> -<sect3> -<title> +<section><info><title> Support for C++TR1 dialect. -</title> +</title></info> + <para>Check for library coverage of the TR1 standard. </para> @@ -1002,13 +997,13 @@ AC_DEFUN([AC_HEADER_TR1_UNORDERED_SET], [ fi ]) </programlisting> -</sect3> +</section> -<sect3> -<title> +<section><info><title> Support for C++0x dialect. -</title> +</title></info> + <para>Check for baseline language coverage in the compiler for the C++0xstandard. </para> @@ -1234,63 +1229,54 @@ AC_DEFUN([AC_HEADER_UNORDERED_SET], [ fi ]) </programlisting> -</sect3> +</section> -<sect3> -<title> +<section><info><title> Container::iterator_type is not necessarily Container::value_type* -</title> +</title></info> + <para> This is a change in behavior from the previous version. Now, most <type>iterator_type</type> typedefs in container classes are POD objects, not <type>value_type</type> pointers. </para> -</sect3> +</section> + +</section> -</sect2> +<bibliography xml:id="backwards.biblio"><info><title>Bibliography</title></info> -<bibliography id="backwards.biblio"> -<title>Bibliography</title> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.kegel.com/gcc/gcc4.html"> - <citetitle> - Migrating to GCC 4.1 - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.kegel.com/gcc/gcc4.html" class="uri"> </biblioid> - <author> - <firstname>Dan</firstname> - <surname>Kegel</surname> - </author> + <citetitle> + Migrating to GCC 4.1 + </citetitle> + + <author><personname><firstname>Dan</firstname><surname>Kegel</surname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://lists.debian.org/debian-gcc/2006/03/msg00405.html"> - <citetitle> - Building the Whole Debian Archive with GCC 4.1: A Summary - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://lists.debian.org/debian-gcc/2006/03/msg00405.html" class="uri"> </biblioid> - <author> - <firstname>Martin</firstname> - <surname>Michlmayr</surname> - </author> + <citetitle> + Building the Whole Debian Archive with GCC 4.1: A Summary + </citetitle> + + <author><personname><firstname>Martin</firstname><surname>Michlmayr</surname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html"> - <citetitle> - Migration guide for GCC-3.2 - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://annwm.lbl.gov/~leggett/Atlas/gcc-3.2.html" class="uri"> </biblioid> + <citetitle> + Migration guide for GCC-3.2 + </citetitle> + </biblioentry> </bibliography> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml b/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml index 7b90e3a1d55..19b190661f0 100644 --- a/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml +++ b/libstdc++-v3/doc/xml/manual/bitmap_allocator.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.ext.allocator.bitmap" xreflabel="bitmap_allocator"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.allocator.bitmap" xreflabel="bitmap_allocator"> <?dbhtml filename="bitmap_allocator.html"?> -<sect1info> +<info><title>bitmap_allocator</title> <keywordset> <keyword> ISO C++ @@ -10,15 +11,15 @@ allocator </keyword> </keywordset> -</sect1info> +</info> + -<title>bitmap_allocator</title> <para> </para> -<sect2 id="allocator.bitmap.design"> -<title>Design</title> +<section xml:id="allocator.bitmap.design"><info><title>Design</title></info> + <para> As this name suggests, this allocator uses a bit-map to keep track @@ -53,13 +54,13 @@ layer. </para> -</sect2> +</section> -<sect2 id="allocator.bitmap.impl"> -<title>Implementation</title> +<section xml:id="allocator.bitmap.impl"><info><title>Implementation</title></info> -<sect3 id="bitmap.impl.free_list_store" xreflabel="Free List Store"> - <title>Free List Store</title> + +<section xml:id="bitmap.impl.free_list_store" xreflabel="Free List Store"><info><title>Free List Store</title></info> + <para> The Free List Store (referred to as FLS for the remaining part of this @@ -121,10 +122,10 @@ else return false.</para></listitem> Currently, (3) is being used with a value of 36% Maximum wastage per Super Block. </para> -</sect3> +</section> -<sect3 id="bitmap.impl.super_block" xreflabel="Super Block"> - <title>Super Block</title> +<section xml:id="bitmap.impl.super_block" xreflabel="Super Block"><info><title>Super Block</title></info> + <para> A super block is the block of memory acquired from the FLS from @@ -144,10 +145,10 @@ else return false.</para></listitem> getting / returning Super Bocks to and from the OS using operator new as defined by the C++ standard. </para> -</sect3> +</section> -<sect3 id="bitmap.impl.super_block_data" xreflabel="Super Block Data"> - <title>Super Block Data Layout</title> +<section xml:id="bitmap.impl.super_block_data" xreflabel="Super Block Data"><info><title>Super Block Data Layout</title></info> + <para> Each Super Block will be of some size that is a multiple of the number of Bits Per Block. Typically, this value is chosen as @@ -165,14 +166,15 @@ else return false.</para></listitem> (assume a 32-bit system where, size_t is a 32-bit entity). </para> -<table frame='all'> +<table frame="all"> <title>Bitmap Allocator Memory Map</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> @@ -219,10 +221,10 @@ else return false.</para></listitem> x 2, which is 8-bytes, or 2 x sizeof(size_t). </para> -</sect3> +</section> -<sect3 id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage"> - <title>Maximum Wasted Percentage</title> +<section xml:id="bitmap.impl.max_wasted" xreflabel="Max Wasted Percentage"><info><title>Maximum Wasted Percentage</title></info> + <para> This has nothing to do with the algorithm per-se, @@ -260,10 +262,10 @@ For map/multimap: k = 12, and c = 4 (int and double), we get: 37.524% create a function that returns the Max_Wastage_Percentage for us to use. </para> -</sect3> +</section> -<sect3 id="bitmap.impl.allocate" xreflabel="Allocate"> - <title><function>allocate</function></title> +<section xml:id="bitmap.impl.allocate" xreflabel="Allocate"><info><title><function>allocate</function></title></info> + <para> The allocate function is specialized for single object allocation @@ -366,10 +368,10 @@ combination of the next-fit and first-fit algorithm optimized ONLY for single object allocations. </para> -</sect3> +</section> -<sect3 id="bitmap.impl.deallocate" xreflabel="Deallocate"> - <title><function>deallocate</function></title> +<section xml:id="bitmap.impl.deallocate" xreflabel="Deallocate"><info><title><function>deallocate</function></title></info> + <para> The deallocate function again is specialized for single objects ONLY. For all n belonging to > 1, the operator delete is called without @@ -410,13 +412,13 @@ single object allocations. invariant is maintained by making sure that _S_last_request and _S_last_dealloc_index point to valid locations within the vector. </para> -</sect3> +</section> -<sect3 id="bitmap.impl.questions" xreflabel="Questions"> - <title>Questions</title> +<section xml:id="bitmap.impl.questions" xreflabel="Questions"><info><title>Questions</title></info> + - <sect4 id="bitmap.impl.question.1" xreflabel="Question 1"> - <title>1</title> + <section xml:id="bitmap.impl.question.1" xreflabel="Question 1"><info><title>1</title></info> + <para> Q1) The "Data Layout" section is cryptic. I have no idea of what you are trying to say. Layout of what? @@ -429,10 +431,10 @@ general formula for calculating the size of a super block is 32 x sizeof(value_type) x 2^n, where n ranges from 0 to 32 for 32-bit systems. </para> - </sect4> + </section> - <sect4 id="bitmap.impl.question.2" xreflabel="Question 2"> - <title>2</title> + <section xml:id="bitmap.impl.question.2" xreflabel="Question 2"><info><title>2</title></info> + <para> And since I just mentioned the term `each bitmap', what in the world is meant by it? What does each @@ -452,10 +454,10 @@ Block a bitmap as well? whose exact number for a super-block of a given size I have just mentioned. </para> - </sect4> + </section> - <sect4 id="bitmap.impl.question.3" xreflabel="Question 3"> - <title>3</title> + <section xml:id="bitmap.impl.question.3" xreflabel="Question 3"><info><title>3</title></info> + <para> How do the allocate and deallocate functions work in regard to bitmaps? @@ -492,11 +494,11 @@ Block a bitmap as well? The bit-map now looks like this: 1111111111111111111111111111111111111111111111111111111111111110 </para> - </sect4> -</sect3> + </section> +</section> -<sect3 id="bitmap.impl.locality" xreflabel="Locality"> - <title>Locality</title> +<section xml:id="bitmap.impl.locality" xreflabel="Locality"><info><title>Locality</title></info> + <para> Another issue would be whether to keep the all bitmaps in a separate area in memory, or to keep them near the actual blocks @@ -522,10 +524,10 @@ equivalent.</para></listitem> single object allocations, though it preserves the locality of blocks very well when they are returned back to the allocator. </para> -</sect3> +</section> -<sect3 id="bitmap.impl.grow_policy" xreflabel="Grow Policy"> - <title>Overhead and Grow Policy</title> +<section xml:id="bitmap.impl.grow_policy" xreflabel="Grow Policy"><info><title>Overhead and Grow Policy</title></info> + <para> Expected overhead per block would be 1 bit in memory. Also, once the address of the free list has been found, the cost for @@ -552,8 +554,8 @@ equivalent.</para></listitem> which can fit exactly in a CPU register. Hence, the term given is exponential growth of the internal pool. </para> -</sect3> +</section> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/build_hacking.xml b/libstdc++-v3/doc/xml/manual/build_hacking.xml index fd134bdea45..0746392a2b5 100644 --- a/libstdc++-v3/doc/xml/manual/build_hacking.xml +++ b/libstdc++-v3/doc/xml/manual/build_hacking.xml @@ -1,7 +1,8 @@ -<sect1 id="appendix.porting.build_hacking" xreflabel="Build Hacking"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.porting.build_hacking" xreflabel="Build Hacking"> <?dbhtml filename="build_hacking.html"?> -<sect1info> +<info><title>Configure and Build Hacking</title> <keywordset> <keyword> C++ @@ -19,15 +20,14 @@ shared </keyword> </keywordset> -</sect1info> +</info> -<title>Configure and Build Hacking</title> -<sect2 id="build_hacking.prereq"> - <title>Prerequisites</title> + +<section xml:id="build_hacking.prereq"><info><title>Prerequisites</title></info> + <para> - As noted <ulink - url="http://gcc.gnu.org/install/prerequisites.html">previously</ulink>, + As noted <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">previously</link>, certain other tools are necessary for hacking on files that control configure (<code>configure.ac</code>, <code>acinclude.m4</code>) and make @@ -38,10 +38,10 @@ the auto-tools used, so please try to play nicely with the neighbors. </para> -</sect2> +</section> -<sect2 id="build_hacking.map"> - <title>Overview: What Comes from Where</title> +<section xml:id="build_hacking.map"><info><title>Overview: What Comes from Where</title></info> + <screen> <inlinemediaobject> @@ -61,14 +61,14 @@ <code>"aclocal-1.11 && autoconf-2.64 && autoheader-2.64 && automake-1.11"</code> The version numbers may be absent entirely or otherwise vary depending on - <ulink url="http://gcc.gnu.org/install/prerequisites.html">the - current requirements</ulink> and your vendor's choice of + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html">the + current requirements</link> and your vendor's choice of installation names. </para> -</sect2> +</section> -<sect2 id="build_hacking.scripts"> - <title>Storing Information in non-AC files (like configure.host)</title> +<section xml:id="build_hacking.scripts"><info><title>Storing Information in non-AC files (like configure.host)</title></info> + <para> Until that glorious day when we can use AC_TRY_LINK with a @@ -97,10 +97,10 @@ to properly find them all when generating configure. I would discourage that. </para> -</sect2> +</section> -<sect2 id="build_hacking.conventions"> - <title>Coding and Commenting Conventions</title> +<section xml:id="build_hacking.conventions"><info><title>Coding and Commenting Conventions</title></info> + <para> Most comments should use {octothorpes, shibboleths, hash marks, @@ -122,10 +122,10 @@ <code>$target_alias</code>. The single exception is in configure.ac, for automake+dejagnu's sake. </para> -</sect2> +</section> -<sect2 id="build_hacking.acinclude"> - <title>The acinclude.m4 layout</title> +<section xml:id="build_hacking.acinclude"><info><title>The acinclude.m4 layout</title></info> + <para> The nice thing about acinclude.m4/aclocal.m4 is that macros aren't actually performed/called/expanded/whatever here, just loaded. So @@ -213,10 +213,10 @@ present otherwise stuff magically goes wonky. </para> -</sect2> +</section> -<sect2 id="build_hacking.enable"> - <title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title> +<section xml:id="build_hacking.enable"><info><title><constant>GLIBCXX_ENABLE</constant>, the <literal>--enable</literal> maker</title></info> + <para> All the GLIBCXX_ENABLE_FOO macros use a common helper, @@ -304,8 +304,7 @@ <para> If you're wondering what that line noise in the last example was, that's how you embed autoconf special characters in output text. - They're called <ulink - url="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></ulink> + They're called <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/autoconf/manual/autoconf.html#Quadrigraphs"><emphasis>quadrigraphs</emphasis></link> and you should use them whenever necessary. </para> </listitem> @@ -349,6 +348,6 @@ message. </para> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/codecvt.xml b/libstdc++-v3/doc/xml/manual/codecvt.xml index a2a90cfdb5b..0c642f9f904 100644 --- a/libstdc++-v3/doc/xml/manual/codecvt.xml +++ b/libstdc++-v3/doc/xml/manual/codecvt.xml @@ -1,7 +1,8 @@ -<section id="std.localization.facet.codecvt" xreflabel="codecvt"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.localization.facet.codecvt" xreflabel="codecvt"> <?dbhtml filename="codecvt.html"?> -<sectioninfo> +<info><title>codecvt</title> <keywordset> <keyword> ISO C++ @@ -10,9 +11,9 @@ codecvt </keyword> </keywordset> -</sectioninfo> +</info> + -<title>codecvt</title> <para> The standard class codecvt attempts to address conversions between @@ -30,8 +31,8 @@ specializations for wide and narrow characters and the implementation-provided extended functionality are given. </para> -<section id="facet.codecvt.req"> -<title>Requirements</title> +<section xml:id="facet.codecvt.req"><info><title>Requirements</title></info> + <para> Around page 425 of the C++ Standard, this charming heading comes into view: @@ -110,11 +111,11 @@ template parameter, imply an implementation strategy that is mostly mcsrtombs and wcsrtombs in particular.</para> </section> -<section id="facet.codecvt.design"> -<title>Design</title> +<section xml:id="facet.codecvt.design"><info><title>Design</title></info> + -<section id="codecvt.design.wchar_t_size"> - <title><type>wchar_t</type> Size</title> +<section xml:id="codecvt.design.wchar_t_size"><info><title><type>wchar_t</type> Size</title></info> + <para> The simple implementation detail of wchar_t's size seems to @@ -133,11 +134,11 @@ mcsrtombs and wcsrtombs in particular.</para> </para> </section> -<section id="codecvt.design.unicode"> - <title>Support for Unicode</title> +<section xml:id="codecvt.design.unicode"><info><title>Support for Unicode</title></info> + <para> Probably the most frequently asked question about code conversion - is: "So dudes, what's the deal with Unicode strings?" + is: "So dudes, what's the deal with Unicode strings?" The dude part is optional, but apparently the usefulness of Unicode strings is pretty widely appreciated. Sadly, this specific encoding (And other useful encodings like UTF8, UCS4, ISO 8859-10, @@ -190,7 +191,7 @@ UTF-16, UTF8, UTF16). <para> For iconv-based implementations, string literals for each of the -encodings (i.e. "UCS-2" and "UTF-8") are necessary, +encodings (i.e. "UCS-2" and "UTF-8") are necessary, although for other, non-iconv implementations a table of enumerated values or some other mechanism may be required. @@ -204,14 +205,14 @@ mechanism may be required. <listitem><para> Some encodings require explicit endian-ness. As such, some kind of endian marker or other byte-order marker will be necessary. See - "Footnotes for C/C++ developers" in Haible for more information on + "Footnotes for C/C++ developers" in Haible for more information on UCS-2/Unicode endian issues. (Summary: big endian seems most likely, however implementations, most notably Microsoft, vary.) </para></listitem> <listitem><para> Types representing the conversion state, for conversions involving - the machinery in the "C" library, or the conversion descriptor, for + the machinery in the "C" library, or the conversion descriptor, for conversions using iconv (such as the type iconv_t.) Note that the conversion descriptor encodes more information than a simple encoding state type. @@ -238,13 +239,13 @@ mechanism may be required. </itemizedlist> </section> -<section id="codecvt.design.issues"> - <title>Other Issues</title> +<section xml:id="codecvt.design.issues"><info><title>Other Issues</title></info> + <para> In addition, multi-threaded and multi-locale environments also impact the design and requirements for code conversions. In particular, they affect the required specialization codecvt<wchar_t, char, mbstate_t> -when implemented using standard "C" functions. +when implemented using standard "C" functions. </para> <para> @@ -267,7 +268,7 @@ incorrect. Yikes! <para> The last, and fundamental problem, is the assumption of a global -locale for all the "C" functions referenced above. For something like +locale for all the "C" functions referenced above. For something like C++ iostreams (where codecvt is explicitly used) the notion of multiple locales is fundamental. In practice, most users may not run into this limitation. However, as a quality of implementation issue, @@ -288,8 +289,8 @@ LC_CTYPE category implements. </section> -<section id="facet.codecvt.impl"> -<title>Implementation</title> +<section xml:id="facet.codecvt.impl"><info><title>Implementation</title></info> + <para> The two required specializations are implemented as follows: @@ -434,8 +435,8 @@ codecvt usage. </section> -<section id="facet.codecvt.use"> -<title>Use</title> +<section xml:id="facet.codecvt.use"><info><title>Use</title></info> + <para>A conversions involving string literal.</para> <programlisting> @@ -479,8 +480,8 @@ codecvt usage. </section> -<section id="facet.codecvt.future"> -<title>Future</title> +<section xml:id="facet.codecvt.future"><info><title>Future</title></info> + <itemizedlist> <listitem> <para> @@ -521,7 +522,7 @@ codecvt usage. </para></listitem> <listitem><para> - how to synchronize the "C" and "C++" + how to synchronize the "C" and "C++" conversion information? </para></listitem> @@ -535,21 +536,15 @@ codecvt usage. </section> -<bibliography id="facet.codecvt.biblio"> -<title>Bibliography</title> +<bibliography xml:id="facet.codecvt.biblio"><info><title>Bibliography</title></info> + <biblioentry> - <title> + <citetitle> The GNU C Library - </title> - <author> - <surname>McGrath</surname> - <firstname>Roland</firstname> - </author> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2007</year> <holder>FSF</holder> @@ -560,23 +555,20 @@ codecvt usage. </biblioentry> <biblioentry> - <title> + <citetitle> Correspondence - </title> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2002</year> - <holder></holder> + <holder/> </copyright> </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 14882:1998 Programming languages - C++ - </title> + </citetitle> <copyright> <year>1998</year> <holder>ISO</holder> @@ -584,9 +576,9 @@ codecvt usage. </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 9899:1999 Programming languages - C - </title> + </citetitle> <copyright> <year>1999</year> <holder>ISO</holder> @@ -594,13 +586,11 @@ codecvt usage. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.opengroup.org/austin"> - <citetitle> - System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri"> </biblioid> + <citetitle> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </citetitle> <copyright> <year>2008</year> <holder> @@ -611,13 +601,10 @@ codecvt usage. </biblioentry> <biblioentry> - <title> + <citetitle> The C++ Programming Language, Special Edition - </title> - <author> - <surname>Stroustrup</surname> - <firstname>Bjarne</firstname> - </author> + </citetitle> + <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley, Inc.</holder> @@ -632,20 +619,14 @@ codecvt usage. <biblioentry> - <title> + <citetitle> Standard C++ IOStreams and Locales - </title> + </citetitle> <subtitle> Advanced Programmer's Guide and Reference </subtitle> - <author> - <surname>Langer</surname> - <firstname>Angelika</firstname> - </author> - <author> - <surname>Kreft</surname> - <firstname>Klaus</firstname> - </author> + <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author> + <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley Longman, Inc.</holder> @@ -658,46 +639,34 @@ codecvt usage. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.lysator.liu.se/c/na1.html"> - <citetitle> - A brief description of Normative Addendum 1 - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.lysator.liu.se/c/na1.html" class="uri"> </biblioid> - <author> - <surname>Feather</surname> - <firstname>Clive</firstname> - </author> + <citetitle> + A brief description of Normative Addendum 1 + </citetitle> + + <author><personname><surname>Feather</surname><firstname>Clive</firstname></personname></author> <pagenums>Extended Character Sets</pagenums> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://tldp.org/HOWTO/Unicode-HOWTO.html"> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://tldp.org/HOWTO/Unicode-HOWTO.html" class="uri"> + </biblioid> <citetitle> The Unicode HOWTO </citetitle> - </ulink> - </biblioid> - <author> - <surname>Haible</surname> - <firstname>Bruno</firstname> - </author> + + <author><personname><surname>Haible</surname><firstname>Bruno</firstname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.cl.cam.ac.uk/~mgk25/unicode.html"> - <citetitle> - UTF-8 and Unicode FAQ for Unix/Linux - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.cl.cam.ac.uk/~mgk25/unicode.html" class="uri"> </biblioid> - <author> - <surname>Khun</surname> - <firstname>Markus</firstname> - </author> + <citetitle> + UTF-8 and Unicode FAQ for Unix/Linux + </citetitle> + + <author><personname><surname>Khun</surname><firstname>Markus</firstname></personname></author> </biblioentry> </bibliography> diff --git a/libstdc++-v3/doc/xml/manual/concurrency.xml b/libstdc++-v3/doc/xml/manual/concurrency.xml index f6a7366ff0d..e3dd9b9468a 100644 --- a/libstdc++-v3/doc/xml/manual/concurrency.xml +++ b/libstdc++-v3/doc/xml/manual/concurrency.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.concurrency" xreflabel="Concurrency"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.concurrency" xreflabel="Concurrency"> <?dbhtml filename="concurrency.html"?> -<chapterinfo> +<info><title> + Concurrency + <indexterm><primary>Concurrency</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -27,12 +26,9 @@ condition_variable </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Concurrency - <indexterm><primary>Concurrency</primary></indexterm> -</title> <para> Facilities for concurrent operation, and control thereof. @@ -40,8 +36,8 @@ <!-- Sect1 01 : API --> -<sect1 id="std.concurrency.api"> - <title>API Reference</title> +<section xml:id="std.concurrency.api"><info><title>API Reference</title></info> + <para> All items are declared in one of four standard header files. @@ -80,6 +76,6 @@ <!-- Doxygen XML: api/group__concurrency.xml --> -</sect1> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/concurrency_extensions.xml b/libstdc++-v3/doc/xml/manual/concurrency_extensions.xml index 2b4a09ad8ea..9092c8def61 100644 --- a/libstdc++-v3/doc/xml/manual/concurrency_extensions.xml +++ b/libstdc++-v3/doc/xml/manual/concurrency_extensions.xml @@ -1,12 +1,8 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="manual.ext.concurrency" xreflabel="Concurrency Extensions"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.concurrency" xreflabel="Concurrency Extensions"> <?dbhtml filename="ext_concurrency.html"?> -<chapterinfo> +<info><title>Concurrency</title> <keywordset> <keyword> ISO C++ @@ -15,15 +11,15 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title>Concurrency</title> -<sect1 id="manual.ext.concurrency.design" xreflabel="Design"> - <title>Design</title> +<section xml:id="manual.ext.concurrency.design" xreflabel="Design"><info><title>Design</title></info> + - <sect2 id="manual.ext.concurrency.design.threads" xreflabel="Threads API"> - <title>Interface to Locks and Mutexes</title> + <section xml:id="manual.ext.concurrency.design.threads" xreflabel="Threads API"><info><title>Interface to Locks and Mutexes</title></info> + <para>The file <ext/concurrence.h> contains all the higher-level constructs for playing with threads. In contrast to the atomics layer, @@ -78,10 +74,10 @@ locks it during construction of <code>__scoped_locke</code> and unlocks it during destruction. This is an efficient way of locking critical sections, while retaining exception-safety. </para> - </sect2> + </section> - <sect2 id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API"> - <title>Interface to Atomic Functions</title> + <section xml:id="manual.ext.concurrency.design.atomics" xreflabel="Atomic API"><info><title>Interface to Atomic Functions</title></info> + <para> @@ -186,15 +182,15 @@ _GLIBCXX_WRITE_MEM_BARRIER Which expand to the appropriate write and read barrier required by the host hardware and operating system. </para> - </sect2> + </section> -</sect1> +</section> -<sect1 id="manual.ext.concurrency.impl" xreflabel="Implementation"> - <title>Implementation</title> - <sect2 id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F"> - <title>Using Builtin Atomic Functions</title> +<section xml:id="manual.ext.concurrency.impl" xreflabel="Implementation"><info><title>Implementation</title></info> + + <section xml:id="manual.ext.concurrency.impl.atomic_fallbacks" xreflabel="Atomic F"><info><title>Using Builtin Atomic Functions</title></info> + <para>The functions for atomic operations described above are either implemented via compiler intrinsics (if the underlying host is @@ -253,16 +249,16 @@ hardware, hand-crafted assembly is selected. This is the case for the following <para>And for the rest, a simulated atomic lock via pthreads. </para> -<para> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</ulink>. +<para> Detailed information about compiler intrinsics for atomic operations can be found in the GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html"> documentation</link>. </para> <para> More details on the library fallbacks from the porting <link linkend="internals.thread_safety">section</link>. </para> - </sect2> - <sect2 id="manual.ext.concurrency.impl.thread" xreflabel="Pthread"> - <title>Thread Abstraction</title> + </section> + <section xml:id="manual.ext.concurrency.impl.thread" xreflabel="Pthread"><info><title>Thread Abstraction</title></info> + <para>A thin layer above IEEE 1003.1 (i.e. pthreads) is used to abstract the thread interface for GCC. This layer is called "gthread," and is @@ -276,7 +272,7 @@ the current host. In libstdc++ implementation files, </para> <para>Within libstdc++ sources, all calls to underlying thread functionality -use this layer. More detail as to the specific interface can be found in the source <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</ulink>. +use this layer. More detail as to the specific interface can be found in the source <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00883_source.html">documentation</link>. </para> <para>By design, the gthread layer is interoperable with the types, @@ -285,12 +281,12 @@ including <code>pthread_t</code>, <code>pthread_once_t</code>, <code>pthread_cre etc. </para> - </sect2> -</sect1> + </section> +</section> -<sect1 id="manual.ext.concurrency.use" xreflabel="Use"> +<section xml:id="manual.ext.concurrency.use" xreflabel="Use"><info><title>Use</title></info> - <title>Use</title> + <para>Typical usage of the last two constructs is demonstrated as follows: </para> @@ -332,6 +328,6 @@ and <code>__concurrence_broadcast_error</code>. </para> -</sect1> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml index 8cca56cd828..4c983a4fd2d 100644 --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.intro.setup.configure" xreflabel="Configuring"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.intro.setup.configure" xreflabel="Configuring"> <?dbhtml filename="configure.html"?> -<sect1info> +<info><title>Configure</title> <keywordset> <keyword> ISO C++ @@ -13,9 +14,9 @@ options </keyword> </keywordset> -</sect1info> +</info> + -<title>Configure</title> <para> When configuring libstdc++, you'll have to configure the entire @@ -29,8 +30,8 @@ Here are all of the configure options specific to libstdc++. Keep in mind that <!-- This SECnn should be the "Choosing Package Options" section. --> - <ulink url="http://sourceware.org/autobook/autobook/autobook_14.html">they - all have opposite forms as well</ulink> (enable/disable and + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/autobook/autobook/autobook_14.html">they + all have opposite forms as well</link> (enable/disable and with/without). The defaults are for the <emphasis>current development sources</emphasis>, which may be different than those for released versions. @@ -43,8 +44,8 @@ <variablelist> <varlistentry><term><code>--enable-multilib</code>[default]</term> <listitem><para>This is part of the generic multilib support for building cross - compilers. As such, targets like "powerpc-elf" will have - libstdc++ built many different ways: "-msoft-float" + compilers. As such, targets like "powerpc-elf" will have + libstdc++ built many different ways: "-msoft-float" and not, etc. A different libstdc++ will be built for each of the different multilib versions. This option is on by default. </para> @@ -68,15 +69,15 @@ libstdc++'s include files will be installed in <code>${libdir}/gcc-lib/${target_alias}/${gcc_version}/include/g++</code>, unless you also specify - <literal>--with-gxx-include-dir=<filename class="directory">dirname</filename></literal> during configuration. + <literal>--with-gxx-include-dir=</literal><filename class="directory">dirname</filename> during configuration. </para> </listitem></varlistentry> <varlistentry><term><code>--with-gxx-include-dir=<include-files dir></code></term> <listitem><para>Adds support for named libstdc++ include directory. For instance, the following puts all the libstdc++ headers into a directory - called "4.4-20090404" instead of the usual - "c++/(version)". + called "4.4-20090404" instead of the usual + "c++/(version)". </para> <programlisting> --with-gxx-include-dir=/foo/H-x86-gcc-3-c-gxx-inc/include/4.4-20090404</programlisting> </listitem></varlistentry> @@ -89,7 +90,7 @@ <varlistentry><term><code>--enable-cstdio=OPTION</code></term> <listitem><para>Select a target-specific I/O package. At the moment, the only - choice is to use 'stdio', a generic "C" abstraction. + choice is to use 'stdio', a generic "C" abstraction. The default is 'stdio'. This option can change the library ABI. </para> </listitem></varlistentry> @@ -105,16 +106,15 @@ choices are 'ieee_1003.1-2001' to specify an X/Open, Standard Unix (IEEE Std. 1003.1-2001) model based on langinfo/iconv/catgets, 'gnu' to specify a model based on functionality from the GNU C - library (langinfo/iconv/gettext) (from <ulink url="http://sources.redhat.com/glibc/">glibc</ulink>, the GNU C - library), or 'generic' to use a generic "C" - abstraction which consists of "C" locale info. + library (langinfo/iconv/gettext) (from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sources.redhat.com/glibc/">glibc</link>, the GNU C + library), or 'generic' to use a generic "C" + abstraction which consists of "C" locale info. </para> <para>If not explicitly specified, the configure proccess tries to guess the most suitable package from the choices above. The default is 'generic'. On glibc-based systems of sufficient - vintage (2.2.5 and newer) and capability (with installed DE and - FR locale data), 'gnu' is automatically selected. This option + vintage (2.3 and newer), 'gnu' is automatically selected. This option can change the library ABI. </para> </listitem></varlistentry> @@ -155,8 +155,8 @@ <varlistentry><term><code>--enable-threads=OPTION</code></term> <listitem><para>Select a threading library. A full description is given in the - general <ulink url="http://gcc.gnu.org/install/configure.html">compiler - configuration instructions</ulink>. This option can change the + general <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/configure.html">compiler + configuration instructions</link>. This option can change the library ABI. </para> </listitem></varlistentry> @@ -219,13 +219,13 @@ </listitem></varlistentry> <varlistentry><term><code>--enable-c99</code></term> - <listitem><para>The "long long" type was introduced in C99, along + <listitem><para>The "long long" type was introduced in C99, along with many other functions for wide characters, and math classification macros, etc. If enabled, all C99 functions not specified by the C++ standard will be put into <code>namespace __gnu_cxx</code>, and then all these names will be injected into namespace std, so that C99 functions can be - used "as if" they were in the C++ standard (as they + used "as if" they were in the C++ standard (as they will eventually be in some future revision of the standard, without a doubt). By default, C99 support is on, assuming the configure probes find all the necessary functions and bits @@ -234,7 +234,7 @@ </listitem></varlistentry> <varlistentry><term><code>--enable-wchar_t</code>[default]</term> - <listitem><para>Template specializations for the "wchar_t" type are + <listitem><para>Template specializations for the "wchar_t" type are required for wide character conversion support. Disabling wide character specializations may be expedient for initial porting efforts, but builds only a subset of what is required by @@ -244,14 +244,14 @@ </listitem></varlistentry> <varlistentry><term><code>--enable-long-long </code></term> - <listitem><para>The "long long" type was introduced in C99. It is + <listitem><para>The "long long" type was introduced in C99. It is provided as a GNU extension to C++98 in g++. This flag builds - support for "long long" into the library (specialized + support for "long long" into the library (specialized templates and the like for iostreams). This option is on by default: - if enabled, users will have to either use the new-style "C" + if enabled, users will have to either use the new-style "C" headers by default (i.e., <cmath> not <math.h>) or add appropriate compile-time flags to all compile lines to - allow "C" visibility of this feature (on GNU/Linux, + allow "C" visibility of this feature (on GNU/Linux, the flag is -D_ISOC99_SOURCE, which is added automatically via CPLUSPLUS_CPP_SPEC's addition of _GNU_SOURCE). This option can change the library ABI. @@ -280,8 +280,8 @@ <listitem><para>In 3.1 and later, tries to turn on symbol versioning in the shared library (if a shared library has been requested). Values for 'style' that are currently supported - are 'gnu', 'gnu-versioned-namespace', 'darwin', and - 'darwin-export'. Both gnu- options require that a recent + are 'gnu', 'gnu-versioned-namespace', 'darwin', + 'darwin-export', and 'sun'. Both gnu- options require that a recent version of the GNU linker be in use. Both darwin options are equivalent. With no style given, the configure script will try to guess correct defaults for the host system, probe to see if @@ -348,4 +348,4 @@ </variablelist> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/containers.xml b/libstdc++-v3/doc/xml/manual/containers.xml index 3b4fb4baa07..377b1a2ee6f 100644 --- a/libstdc++-v3/doc/xml/manual/containers.xml +++ b/libstdc++-v3/doc/xml/manual/containers.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.containers" xreflabel="Containers"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.containers" xreflabel="Containers"> <?dbhtml filename="containers.html"?> -<chapterinfo> +<info><title> + Containers + <indexterm><primary>Containers</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,28 +14,24 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Containers - <indexterm><primary>Containers</primary></indexterm> -</title> <!-- Sect1 01 : Sequences --> -<sect1 id="std.containers.sequences" xreflabel="Sequences"> +<section xml:id="std.containers.sequences" xreflabel="Sequences"><info><title>Sequences</title></info> <?dbhtml filename="sequences.html"?> - <title>Sequences</title> + -<sect2 id="containers.sequences.list" xreflabel="list"> +<section xml:id="containers.sequences.list" xreflabel="list"><info><title>list</title></info> <?dbhtml filename="list.html"?> - <title>list</title> - <sect3 id="sequences.list.size" xreflabel="list::size() is O(n)"> - <title>list::size() is O(n)</title> + + <section xml:id="sequences.list.size" xreflabel="list::size() is O(n)"><info><title>list::size() is O(n)</title></info> + <para> Yes it is, and that's okay. This is a decision that we preserved when we imported SGI's STL implementation. The following is - quoted from <ulink - url="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</ulink>: + quoted from <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/FAQ.html">their FAQ</link>: </para> <blockquote> <para> @@ -78,41 +73,38 @@ ... </programlisting> </blockquote> - </sect3> -</sect2> + </section> +</section> -<sect2 id="containers.sequences.vector" xreflabel="vector"> +<section xml:id="containers.sequences.vector" xreflabel="vector"><info><title>vector</title></info> <?dbhtml filename="vector.html"?> - <title>vector</title> + <para> </para> - <sect3 id="sequences.vector.management" xreflabel="Space Overhead Management"> - <title>Space Overhead Management</title> + <section xml:id="sequences.vector.management" xreflabel="Space Overhead Management"><info><title>Space Overhead Management</title></info> + <para> - In <ulink - url="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this - message to the list</ulink>, Daniel Kostecky announced work on an + In <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-04/msg00105.html">this + message to the list</link>, Daniel Kostecky announced work on an alternate form of <code>std::vector</code> that would support hints on the number of elements to be over-allocated. The design was also described, along with possible implementation choices. </para> <para> - The first two alpha releases were announced <ulink - url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</ulink> - and <ulink - url="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</ulink>. + The first two alpha releases were announced <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00048.html">here</link> + and <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-07/msg00111.html">here</link>. </para> - </sect3></sect2> -</sect1> + </section></section> +</section> <!-- Sect1 02 : Associative --> -<sect1 id="std.containers.associative" xreflabel="Associative"> +<section xml:id="std.containers.associative" xreflabel="Associative"><info><title>Associative</title></info> <?dbhtml filename="associative.html"?> - <title>Associative</title> + - <sect2 id="containers.associative.insert_hints" xreflabel="Insertion Hints"> - <title>Insertion Hints</title> + <section xml:id="containers.associative.insert_hints" xreflabel="Insertion Hints"><info><title>Insertion Hints</title></info> + <para> Section [23.1.2], Table 69, of the C++ standard lists this function for all of the associative containers (map, set, etc): @@ -125,8 +117,7 @@ item to insert. The standard says that <quote><code>t</code> is inserted as close as possible to the position just prior to <code>p</code>.</quote> (Library DR #233 addresses this topic, - referring to <ulink - url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</ulink>. + referring to <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1780.html">N1780</link>. Since version 4.2 GCC implements the resolution to DR 233, so that insertions happen as close as possible to the hint. For earlier releases the hint was only used as described below. @@ -216,14 +207,14 @@ point to the correct place, then no further local searching is done; the search begins from scratch in logarithmic time. </para> - </sect2> + </section> - <sect2 id="containers.associative.bitset" xreflabel="bitset"> + <section xml:id="containers.associative.bitset" xreflabel="bitset"><info><title>bitset</title></info> <?dbhtml filename="bitset.html"?> - <title>bitset</title> - <sect3 id="associative.bitset.size_variable" xreflabel="Variable"> - <title>Size Variable</title> + + <section xml:id="associative.bitset.size_variable" xreflabel="Variable"><info><title>Size Variable</title></info> + <para> No, you cannot write code of the form </para> @@ -254,7 +245,7 @@ </itemizedlist> <para> <emphasis>A very large N in - <code>bitset<N></code>. </emphasis> It has been + <code>bitset<N></code>. </emphasis> It has been pointed out a few times in newsgroups that N bits only takes up (N/8) bytes on most systems, and division by a factor of eight is pretty impressive when speaking of memory. Half a megabyte given @@ -276,7 +267,7 @@ space overhead, but it's all allocated inside the object.) </para> <para> - <emphasis>A container<bool>. </emphasis> The + <emphasis>A container<bool>. </emphasis> The Committee made provision for the space savings possible with that (N/8) usage previously mentioned, so that you don't have to do wasteful things like <code>Container<char></code> or @@ -297,7 +288,7 @@ than that of vector). </para> <para> - <emphasis>Extremely weird solutions. </emphasis> If + <emphasis>Extremely weird solutions. </emphasis> If you have access to the compiler and linker at runtime, you can do something insane, like figuring out just how many bits you need, then writing a temporary source code file. That file contains an @@ -329,9 +320,9 @@ <link linkend="manual.ext.containers.sgi">some extensions</link>. </para> - </sect3> - <sect3 id="associative.bitset.type_string" xreflabel="Type String"> - <title>Type String</title> + </section> + <section xml:id="associative.bitset.type_string" xreflabel="Type String"><info><title>Type String</title></info> + <para> </para> <para> @@ -357,18 +348,18 @@ <programlisting> std::bitset<5> b ( <quote>10110</quote> ); // invalid </programlisting> - </sect3> - </sect2> + </section> + </section> -</sect1> +</section> <!-- Sect1 03 : Interacting with C --> -<sect1 id="std.containers.c" xreflabel="Interacting with C"> +<section xml:id="std.containers.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info> <?dbhtml filename="containers_and_c.html"?> - <title>Interacting with C</title> + - <sect2 id="containers.c.vs_array" xreflabel="Containers vs. Arrays"> - <title>Containers vs. Arrays</title> + <section xml:id="containers.c.vs_array" xreflabel="Containers vs. Arrays"><info><title>Containers vs. Arrays</title></info> + <para> You're writing some code and can't decide whether to use builtin arrays or some kind of container. There are compelling reasons @@ -464,8 +455,8 @@ template<typename T, unsigned int sz> <para> looks just weird! Hint: unused parameters can be left nameless. </para> - </sect2> + </section> -</sect1> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/ctype.xml b/libstdc++-v3/doc/xml/manual/ctype.xml index 9cc4603667d..afca9be5475 100644 --- a/libstdc++-v3/doc/xml/manual/ctype.xml +++ b/libstdc++-v3/doc/xml/manual/ctype.xml @@ -1,7 +1,8 @@ -<section id="std.localization.facet.ctype" xreflabel="ctype"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.localization.facet.ctype" xreflabel="ctype"> <?dbhtml filename="ctype.html"?> -<sectioninfo> +<info><title>ctype</title> <keywordset> <keyword> ISO C++ @@ -10,15 +11,15 @@ ctype </keyword> </keywordset> -</sectioninfo> +</info> -<title>ctype</title> -<section id="facet.ctype.impl"> -<title>Implementation</title> - <section> - <title>Specializations</title> +<section xml:id="facet.ctype.impl"><info><title>Implementation</title></info> + + + <section><info><title>Specializations</title></info> + <para> For the required specialization codecvt<wchar_t, char, mbstate_t> , @@ -60,8 +61,8 @@ characters. </section> </section> -<section id="facet.ctype.future"> -<title>Future</title> +<section xml:id="facet.ctype.future"><info><title>Future</title></info> + <itemizedlist> @@ -117,21 +118,15 @@ characters. </section> -<bibliography id="facet.ctype.biblio"> -<title>Bibliography</title> +<bibliography xml:id="facet.ctype.biblio"><info><title>Bibliography</title></info> + <biblioentry> - <title> + <citetitle> The GNU C Library - </title> - <author> - <surname>McGrath</surname> - <firstname>Roland</firstname> - </author> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2007</year> <holder>FSF</holder> @@ -140,23 +135,20 @@ characters. </biblioentry> <biblioentry> - <title> + <citetitle> Correspondence - </title> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2002</year> - <holder></holder> + <holder/> </copyright> </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 14882:1998 Programming languages - C++ - </title> + </citetitle> <copyright> <year>1998</year> <holder>ISO</holder> @@ -164,9 +156,9 @@ characters. </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 9899:1999 Programming languages - C - </title> + </citetitle> <copyright> <year>1999</year> <holder>ISO</holder> @@ -174,13 +166,12 @@ characters. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.unix.org/version3/ieee_std.html"> - <citetitle> - The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unix.org/version3/ieee_std.html" class="uri"> + </biblioid> + <citetitle> + The Open Group Base Specifications, Issue 6 (IEEE Std. 1003.1-2004) + </citetitle> + <copyright> <year>1999</year> <holder> @@ -189,13 +180,10 @@ characters. </biblioentry> <biblioentry> - <title> + <citetitle> The C++ Programming Language, Special Edition - </title> - <author> - <surname>Stroustrup</surname> - <firstname>Bjarne</firstname> - </author> + </citetitle> + <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley, Inc.</holder> @@ -209,20 +197,14 @@ characters. </biblioentry> <biblioentry> - <title> + <citetitle> Standard C++ IOStreams and Locales - </title> + </citetitle> <subtitle> Advanced Programmer's Guide and Reference </subtitle> - <author> - <surname>Langer</surname> - <firstname>Angelika</firstname> - </author> - <author> - <surname>Kreft</surname> - <firstname>Klaus</firstname> - </author> + <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author> + <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley Longman, Inc.</holder> diff --git a/libstdc++-v3/doc/xml/manual/debug.xml b/libstdc++-v3/doc/xml/manual/debug.xml index 5f97867de2e..51219d45efd 100644 --- a/libstdc++-v3/doc/xml/manual/debug.xml +++ b/libstdc++-v3/doc/xml/manual/debug.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.intro.using.debug" xreflabel="Debugging Support"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.intro.using.debug" xreflabel="Debugging Support"> <?dbhtml filename="debug.html"?> -<sect1info> +<info><title>Debugging Support</title> <keywordset> <keyword> C++ @@ -10,9 +11,9 @@ debug </keyword> </keywordset> -</sect1info> +</info> + -<title>Debugging Support</title> <para> There are numerous things that can be done to improve the ease with @@ -20,8 +21,8 @@ are some of them. </para> -<sect2 id="debug.compiler"> -<title>Using <command>g++</command></title> +<section xml:id="debug.compiler"><info><title>Using <command>g++</command></title></info> + <para> Compiler flags determine how debug information is transmitted between compilation and debug or analysis tools. @@ -52,15 +53,14 @@ </para> <para> - Many other options are available: please see <ulink - url="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options - for Debugging Your Program"</ulink> in Using the GNU Compiler + Many other options are available: please see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html#Debugging%20Options">"Options + for Debugging Your Program"</link> in Using the GNU Compiler Collection (GCC) for a complete list. </para> -</sect2> +</section> + +<section xml:id="debug.req"><info><title>Debug Versions of Library Binary Files</title></info> -<sect2 id="debug.req"> -<title>Debug Versions of Library Binary Files</title> <para> If you would like debug symbols in libstdc++, there are two ways to @@ -79,8 +79,7 @@ debug build will persist, without having to specify <code>CXXFLAGS</code>, and the debug library will be installed in a separate directory tree, in <code>(prefix)/lib/debug</code>. For - more information, look at the <link - linkend="manual.intro.setup.configure">configuration</link> section. + more information, look at the <link linkend="manual.intro.setup.configure">configuration</link> section. </para> <para> @@ -94,10 +93,10 @@ This quick and dirty approach is often sufficient for quick debugging tasks, when you cannot or don't want to recompile your application to use the <link linkend="manual.ext.debug_mode">debug mode</link>.</para> -</sect2> +</section> + +<section xml:id="debug.memory"><info><title>Memory Leak Hunting</title></info> -<sect2 id="debug.memory"> -<title>Memory Leak Hunting</title> <para> There are various third party memory tracing and debug utilities @@ -116,8 +115,7 @@ thing of great importance to keep in mind when debugging C++ code that uses <code>new</code> and <code>delete</code>: there are different kinds of allocation schemes that can be used by <code> - std::allocator </code>. For implementation details, see the <link - linkend="manual.ext.allocator.mt">mt allocator</link> documentation and + std::allocator </code>. For implementation details, see the <link linkend="manual.ext.allocator.mt">mt allocator</link> documentation and look specifically for <code>GLIBCXX_FORCE_NEW</code>. </para> @@ -189,17 +187,67 @@ valgrind -v --num-callers=20 --leak-check=yes --leak-resolution=high --show-reachable=yes a.out </programlisting> -</sect2> +</section> + +<section xml:id="debug.races"><info><title>Data Race Hunting</title></info> +<para> + All synchronization primitives used in the library internals should be + understood by race detectors so that they do not produce false reports. +</para> + +<para> + We use two annotations (macros) to explain low-level synchronization + to race detectors: + <code>_GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE()</code> and + <code> _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER()</code>. + By default, these two macros are defined empty -- anyone who wants + to use a race detector will need to redefine these macros to call an + appropriate API. + Since these macros are empty by default, redefining them in the user code + will affect only the inline template code, e.g. <code>shared_ptr</code>. + In order to redefine the macros in <code>basic_string</code> one will + need to disable extern templates (by defining + <code>_GLIBCXX_EXTERN_TEMPLATE=-1</code>) or rebuild the + <code>.so</code> file. + The rest of the cases (currently, <code>ios_base::Init::~Init</code>, + <code>locale::_Impl</code> and <code>locale::facet</code>) will require + to rebuild the <code>.so</code> file. +</para> + +<para> + The approach described above works at least with the following race + detection tools: + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://valgrind.org/docs/manual/drd-manual.html"> + DRD </link>, + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://valgrind.org/docs/manual/hg-manual.html"> + Helgrind </link>, + <link xmlns:xlink="http://www.w3.org/1999/xlink" + xlink:href="http://code.google.com/p/data-race-test"> + ThreadSanitizer </link>. +</para> + +<para> + With DRD, Helgrind and ThreadSanitizer you will need to define + the macros like this: +<programlisting> + #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) ANNOTATE_HAPPENS_BEFORE(A) + #define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) ANNOTATE_HAPPENS_AFTER(A) +</programlisting> + Refer to the documentation of each particular tool for the details. +</para> + +</section> + +<section xml:id="debug.gdb"><info><title>Using <command>gdb</command></title></info> -<sect2 id="debug.gdb"> -<title>Using <command>gdb</command></title> <para> </para> <para> - Many options are available for gdb itself: please see <ulink - url="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125"> - "GDB features for C++" </ulink> in the gdb documentation. Also + Many options are available for gdb itself: please see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sources.redhat.com/gdb/current/onlinedocs/gdb_13.html#SEC125"> + "GDB features for C++" </link> in the gdb documentation. Also recommended: the other parts of this manual. </para> @@ -258,47 +306,47 @@ <para> For additional information on STL support and GDB please visit: - <ulink url="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support - for STL" </ulink> in the GDB wiki. Additionally, in-depth + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/wiki/STLSupport"> "GDB Support + for STL" </link> in the GDB wiki. Additionally, in-depth documentation and discussion of the pretty printing feature can be found in "Pretty Printing" node in the GDB manual. You can find on-line versions of the GDB user manual in GDB's homepage, at - <ulink url="http://sourceware.org/gdb/"> "GDB: The GNU Project - Debugger" </ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://sourceware.org/gdb/"> "GDB: The GNU Project + Debugger" </link>. </para> -</sect2> +</section> + +<section xml:id="debug.exceptions"><info><title>Tracking uncaught exceptions</title></info> -<sect2 id="debug.exceptions"> -<title>Tracking uncaught exceptions</title> <para> The <link linkend="support.termination.verbose">verbose termination handler</link> gives information about uncaught exceptions which are killing the program. It is described in the linked-to page. </para> -</sect2> +</section> + +<section xml:id="debug.debug_mode"><info><title>Debug Mode</title></info> -<sect2 id="debug.debug_mode"> -<title>Debug Mode</title> <para> The <link linkend="manual.ext.debug_mode">Debug Mode</link> has compile and run-time checks for many containers. </para> -</sect2> +</section> + +<section xml:id="debug.compile_time_checks"><info><title>Compile Time Checking</title></info> -<sect2 id="debug.compile_time_checks"> -<title>Compile Time Checking</title> <para> The <link linkend="manual.ext.compile_checks">Compile-Time Checks</link> Extension has compile-time checks for many algorithms. </para> -</sect2> +</section> + +<section xml:id="debug.profile_mode" xreflabel="debug.profile_mode"><info><title>Profile-based Performance Analysis</title></info> -<sect2 id="debug.profile_mode" xreflabel="debug.profile_mode"> -<title>Profile-based Performance Analysis</title> <para> The <link linkend="manual.ext.profile_mode">Profile-based Performance Analysis</link> Extension has performance checks for many algorithms. </para> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/debug_mode.xml b/libstdc++-v3/doc/xml/manual/debug_mode.xml index c3b3b57859d..f0ab4992846 100644 --- a/libstdc++-v3/doc/xml/manual/debug_mode.xml +++ b/libstdc++-v3/doc/xml/manual/debug_mode.xml @@ -1,12 +1,8 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="manual.ext.debug_mode" xreflabel="Debug Mode"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.debug_mode" xreflabel="Debug Mode"> <?dbhtml filename="debug_mode.html"?> -<chapterinfo> +<info><title>Debug Mode</title> <keywordset> <keyword> C++ @@ -18,12 +14,12 @@ debug </keyword> </keywordset> -</chapterinfo> +</info> + -<title>Debug Mode</title> -<sect1 id="manual.ext.debug_mode.intro" xreflabel="Intro"> - <title>Intro</title> +<section xml:id="manual.ext.debug_mode.intro" xreflabel="Intro"><info><title>Intro</title></info> + <para> By default, libstdc++ is built with efficiency in mind, and therefore performs little or no error checking that is not @@ -65,10 +61,10 @@ different predicate.</para></listitem> </itemizedlist> -</sect1> +</section> -<sect1 id="manual.ext.debug_mode.semantics" xreflabel="Semantics"> - <title>Semantics</title> +<section xml:id="manual.ext.debug_mode.semantics" xreflabel="Semantics"><info><title>Semantics</title></info> + <para> </para> @@ -146,14 +142,14 @@ guaranteed to work. For full debug-mode support you can use the which always works correctly. </para> -</sect1> +</section> -<sect1 id="manual.ext.debug_mode.using" xreflabel="Using"> - <title>Using</title> +<section xml:id="manual.ext.debug_mode.using" xreflabel="Using"><info><title>Using</title></info> + <para> </para> -<sect2 id="debug_mode.using.mode" xreflabel="Using Mode"> - <title>Using the Debug Mode</title> +<section xml:id="debug_mode.using.mode" xreflabel="Using Mode"><info><title>Using the Debug Mode</title></info> + <para>To use the libstdc++ debug mode, compile your application with the compiler flag <code>-D_GLIBCXX_DEBUG</code>. Note that this flag @@ -168,10 +164,10 @@ which always works correctly. <code>GLIBCXX_DEBUG_MESSAGE_LENGTH</code> can be used to request a different length.</para> -</sect2> +</section> -<sect2 id="debug_mode.using.specific" xreflabel="Using Specific"> - <title>Using a Specific Debug Container</title> +<section xml:id="debug_mode.using.specific" xreflabel="Using Specific"><info><title>Using a Specific Debug Container</title></info> + <para>When it is not feasible to recompile your entire application, or only specific containers need checking, debugging containers are available as GNU extensions. These debugging containers are @@ -183,13 +179,14 @@ which always works correctly. containers: </para> -<table frame='all'> +<table frame="all"> <title>Debugging Containers</title> -<tgroup cols='4' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> @@ -274,13 +271,14 @@ which always works correctly. containers have additional debug capability. </para> -<table frame='all'> +<table frame="all"> <title>Debugging Containers C++0x</title> -<tgroup cols='4' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> @@ -318,15 +316,15 @@ containers have additional debug capability. </tbody> </tgroup> </table> -</sect2> -</sect1> +</section> +</section> -<sect1 id="manual.ext.debug_mode.design" xreflabel="Design"> - <title>Design</title> +<section xml:id="manual.ext.debug_mode.design" xreflabel="Design"><info><title>Design</title></info> + <para> </para> - <sect2 id="debug_mode.design.goals" xreflabel="Goals"> - <title>Goals</title> + <section xml:id="debug_mode.design.goals" xreflabel="Goals"><info><title>Goals</title></info> + <para> </para> <para> The libstdc++ debug mode replaces unsafe (but efficient) standard @@ -376,7 +374,7 @@ containers have additional debug capability. higher-numbered conformance levels are more usable (i.e., require less recompilation) but are more complicated to implement than the lower-numbered conformance levels. - <orderedlist> + <orderedlist inheritnum="ignore" continuation="restarts"> <listitem><para><emphasis>Full recompilation</emphasis>: The user must recompile his or her entire application and all C++ libraries it depends on, including the C++ standard library that ships with the @@ -438,18 +436,18 @@ containers have additional debug capability. </orderedlist> </para></listitem> </itemizedlist> - </sect2> + </section> - <sect2 id="debug_mode.design.methods" xreflabel="Methods"> - <title>Methods</title> + <section xml:id="debug_mode.design.methods" xreflabel="Methods"><info><title>Methods</title></info> + <para> </para> <para>This section provides an overall view of the design of the libstdc++ debug mode and details the relationship between design decisions and the stated design goals.</para> - <sect3 id="debug_mode.design.methods.wrappers" xreflabel="Method Wrapper"> - <title>The Wrapper Model</title> + <section xml:id="debug_mode.design.methods.wrappers" xreflabel="Method Wrapper"><info><title>The Wrapper Model</title></info> + <para>The libstdc++ debug mode uses a wrapper model where the debugging versions of library components (e.g., iterators and containers) form a layer on top of the release versions of the @@ -471,8 +469,8 @@ containers have additional debug capability. past-the-end iterators or inserting into a container using an iterator from a different container.</para> - <sect4 id="debug_mode.design.methods.safe_iter" xreflabel="Method Safe Iter"> - <title>Safe Iterators</title> + <section xml:id="debug_mode.design.methods.safe_iter" xreflabel="Method Safe Iter"><info><title>Safe Iterators</title></info> + <para>Iterator wrappers provide a debugging layer over any iterator that is attached to a particular container, and will manage the information detailing the iterator's state (singular, @@ -492,10 +490,10 @@ containers have additional debug capability. whose <code>iterator</code> or <code>const_iterator</code> typedef is the type of the safe iterator.</para></listitem> </itemizedlist> - </sect4> + </section> - <sect4 id="debug_mode.design.methods.safe_seq" xreflabel="Method Safe Seq"> - <title>Safe Sequences (Containers)</title> + <section xml:id="debug_mode.design.methods.safe_seq" xreflabel="Method Safe Seq"><info><title>Safe Sequences (Containers)</title></info> + <para>Container wrappers provide a debugging layer over a particular container type. Because containers vary greatly in the member @@ -540,11 +538,11 @@ template<typename _Tp, typename _Allocator = allocator<_Tp> // duplicate std::list interface with debugging semantics }; </programlisting> - </sect4> - </sect3> + </section> + </section> - <sect3 id="debug_mode.design.methods.precond" xreflabel="Precondition check"> - <title>Precondition Checking</title> + <section xml:id="debug_mode.design.methods.precond" xreflabel="Precondition check"><info><title>Precondition Checking</title></info> + <para>The debug mode operates primarily by checking the preconditions of all standard library operations that it supports. Preconditions that are always checked (regardless of whether or not we are in debug @@ -575,10 +573,10 @@ template<typename _Tp, typename _Allocator = allocator<_Tp> check macro that supports more advance formulation of error messages, <code>_GLIBCXX_DEBUG_VERIFY</code>. These macros are documented more thoroughly in the debug mode source code.</para> - </sect3> + </section> - <sect3 id="debug_mode.design.methods.coexistence" xreflabel="Coexistence"> - <title>Release- and debug-mode coexistence</title> + <section xml:id="debug_mode.design.methods.coexistence" xreflabel="Coexistence"><info><title>Release- and debug-mode coexistence</title></info> + <para>The libstdc++ debug mode is the first debug mode we know of that is able to provide the "Per-use recompilation" (4) guarantee, that allows release-compiled and debug-compiled code to be linked and @@ -591,16 +589,16 @@ template<typename _Tp, typename _Allocator = allocator<_Tp> <para>Achieving link- and run-time coexistence is not a trivial implementation task. To achieve this goal we required a small extension to the GNU C++ compiler (since incorporated into the C++0x language specification, described in the GCC Manual for the C++ language as - <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace - association</ulink>), and a complex organization of debug- and + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Namespace-Association.html#Namespace-Association">namespace + association</link>), and a complex organization of debug- and release-modes. The end result is that we have achieved per-use recompilation but have had to give up some checking of the <code>std::basic_string</code> class template (namely, safe iterators). </para> - <sect4 id="methods.coexistence.compile" xreflabel="Compile"> - <title>Compile-time coexistence of release- and debug-mode components</title> + <section xml:id="methods.coexistence.compile" xreflabel="Compile"><info><title>Compile-time coexistence of release- and debug-mode components</title></info> + <para>Both the release-mode components and the debug-mode components need to exist within a single translation unit so that @@ -665,11 +663,11 @@ namespace std inline namespace __debug { } } </programlisting> - </sect4> + </section> - <sect4 id="methods.coexistence.link" xreflabel="Link"> - <title>Link- and run-time coexistence of release- and - debug-mode components</title> + <section xml:id="methods.coexistence.link" xreflabel="Link"><info><title>Link- and run-time coexistence of release- and + debug-mode components</title></info> + <para>Because each component has a distinct and separate release and debug implementation, there is no issue with link-time @@ -730,7 +728,7 @@ test02() debug/release containers, we must note two things about locale facets:</para> -<orderedlist> +<orderedlist inheritnum="ignore" continuation="restarts"> <listitem><para>They exist as shared state: one can create a facet in one translation unit and access the facet via the same type name in a different translation unit. This means that we cannot have two @@ -752,10 +750,10 @@ test02() simple alternatives (e.g., <code>__gnu_debug::basic_string</code>), and the usability benefit we gain from the ability to mix debug- and release-compiled translation units is enormous.</para> - </sect4> + </section> + + <section xml:id="methods.coexistence.alt" xreflabel="Alternatives"><info><title>Alternatives for Coexistence</title></info> - <sect4 id="methods.coexistence.alt" xreflabel="Alternatives"> -<title>Alternatives for Coexistence</title> <para>The coexistence scheme above was chosen over many alternatives, including language-only solutions and solutions that also required @@ -805,8 +803,8 @@ test02() <listitem><para><emphasis> Use implementation-specific properties of anonymous namespaces. </emphasis> - See <ulink url="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post - </ulink> + See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00004.html"> this post + </link> This method fails the <emphasis>correctness</emphasis> criteria.</para></listitem> <listitem><para><emphasis>Extension: allow reopening on namespaces</emphasis>: This would @@ -832,8 +830,8 @@ test02() functions taking no arguments in mixed-mode settings resulting in equivalent link names, <code> vector::push_back() </code> being one example. - See <ulink url="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link - name</ulink> </para></listitem> + See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2003-08/msg00177.html">link + name</link> </para></listitem> </itemizedlist> <para>Other options may exist for implementing the debug mode, many of @@ -848,12 +846,12 @@ test02() added as we are able to identify other typical problem cases. These test cases will serve as a benchmark by which we can compare debug mode implementations.</para> - </sect4> - </sect3> - </sect2> + </section> + </section> + </section> - <sect2 id="debug_mode.design.other" xreflabel="Other"> - <title>Other Implementations</title> + <section xml:id="debug_mode.design.other" xreflabel="Other"><info><title>Other Implementations</title></info> + <para> </para> <para> There are several existing implementations of debug modes for C++ @@ -861,15 +859,15 @@ test02() supports debugging for programs using libstdc++. The existing implementations include:</para> <itemizedlist> - <listitem><para><ulink url="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html">SafeSTL</ulink>: + <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html">SafeSTL</link>: SafeSTL was the original debugging version of the Standard Template Library (STL), implemented by Cay S. Horstmann on top of the Hewlett-Packard STL. Though it inspired much work in this area, it has not been kept up-to-date for use with modern compilers or C++ standard library implementations.</para></listitem> - <listitem><para><ulink url="http://www.stlport.org/">STLport</ulink>: STLport is a free - implementation of the C++ standard library derived from the <ulink url="http://www.sgi.com/tech/stl/">SGI implementation</ulink>, and + <listitem><para><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.stlport.org/">STLport</link>: STLport is a free + implementation of the C++ standard library derived from the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/">SGI implementation</link>, and ported to many other platforms. It includes a debug mode that uses a wrapper model (that in some ways inspired the libstdc++ debug mode design), although at the time of this writing the debug mode is @@ -885,7 +883,7 @@ test02() guarantee.</para></listitem> </itemizedlist> - </sect2> -</sect1> + </section> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/diagnostics.xml b/libstdc++-v3/doc/xml/manual/diagnostics.xml index 271477e3712..b9a7048716f 100644 --- a/libstdc++-v3/doc/xml/manual/diagnostics.xml +++ b/libstdc++-v3/doc/xml/manual/diagnostics.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.diagnostics" xreflabel="Diagnostics"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.diagnostics" xreflabel="Diagnostics"> <?dbhtml filename="diagnostics.html"?> -<chapterinfo> +<info><title> + Diagnostics + <indexterm><primary>Diagnostics</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,19 +14,16 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Diagnostics - <indexterm><primary>Diagnostics</primary></indexterm> -</title> -<sect1 id="std.diagnostics.exceptions" xreflabel="Exceptions"> +<section xml:id="std.diagnostics.exceptions" xreflabel="Exceptions"><info><title>Exceptions</title></info> <?dbhtml filename="exceptions.html"?> - <title>Exceptions</title> + - <sect2 id="std.diagnostics.exceptions.api"> - <title>API Reference</title> + <section xml:id="std.diagnostics.exceptions.api"><info><title>API Reference</title></info> + <para> All exception objects are defined in one of the standard header files: <filename>exception</filename>, @@ -53,9 +49,9 @@ <!-- Doxygen XML: api/group__exceptions.xml --> - </sect2> - <sect2 id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions"> - <title>Adding Data to <classname>exception</classname></title> + </section> + <section xml:id="std.diagnostics.exceptions.data" xreflabel="Adding Data to Exceptions"><info><title>Adding Data to <classname>exception</classname></title></info> + <para> The standard exception classes carry with them a single string as data (usually describing what went wrong or where the 'throw' took @@ -76,11 +72,11 @@ }; </programlisting> - </sect2> -</sect1> + </section> +</section> -<sect1 id="std.diagnostics.concept_checking" xreflabel="Concept Checking"> - <title>Concept Checking</title> +<section xml:id="std.diagnostics.concept_checking" xreflabel="Concept Checking"><info><title>Concept Checking</title></info> + <para> In 1999, SGI added <quote>concept checkers</quote> to their implementation of the STL: code which checked the template @@ -88,7 +84,7 @@ that the parameters being used met the requirements of the standard. For example, the Standard requires that types passed as template parameters to <classname>vector</classname> be - "Assignable" (which means what you think it means). The + "Assignable" (which means what you think it means). The checking was done during compilation, and none of the code was executed at runtime. </para> @@ -101,8 +97,8 @@ The primary author of the checking code, Jeremy Siek, had already started work on a replacement implementation. The new code has been formally reviewed and accepted into - <ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">the - Boost libraries</ulink>, and we are pleased to incorporate it into the + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/concept_check/concept_check.htm">the + Boost libraries</link>, and we are pleased to incorporate it into the GNU C++ library. </para> <para> @@ -126,6 +122,6 @@ checking described above. </para> -</sect1> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/evolution.xml b/libstdc++-v3/doc/xml/manual/evolution.xml index eda00060a66..08876deb18a 100644 --- a/libstdc++-v3/doc/xml/manual/evolution.xml +++ b/libstdc++-v3/doc/xml/manual/evolution.xml @@ -1,7 +1,8 @@ -<sect1 id="appendix.porting.api" xreflabel="api"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.porting.api" xreflabel="api"> <?dbhtml filename="api.html"?> -<sect1info> +<info><title>API Evolution and Deprecation History</title> <keywordset> <keyword>ISO C++</keyword> <keyword>api</keyword> @@ -9,16 +10,16 @@ <keyword>deprecation</keyword> <keyword>history</keyword> </keywordset> -</sect1info> +</info> + -<title>API Evolution and Deprecation History</title> <para> A list of user-visible changes, in chronological order </para> -<sect2 id="api.rel_300"> -<title><constant>3.0</constant></title> +<section xml:id="api.rel_300"><info><title><constant>3.0</constant></title></info> + <para> Extensions moved to <filename class="directory">include/ext</filename>. @@ -39,10 +40,10 @@ deactivates the warning.) -</sect2> +</section> + +<section xml:id="api.rel_310"><info><title><constant>3.1</constant></title></info> -<sect2 id="api.rel_310"> -<title><constant>3.1</constant></title> <para> </para> @@ -65,10 +66,10 @@ Extensions to tree data structures added in <filename class="headerfile">ext/rb_ Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename class="headerfile">backward/tree.h</filename>. </para> -</sect2> +</section> + +<section xml:id="api.rel_320"><info><title><constant>3.2</constant></title></info> -<sect2 id="api.rel_320"> -<title><constant>3.2</constant></title> <para> </para> <para>Symbol versioning introduced for shared library.</para> @@ -89,16 +90,16 @@ Removal of <filename class="headerfile">ext/tree</filename>, moved to <filename <para>Error handling in iostreams cleaned up, made consistent. </para> -</sect2> +</section> + +<section xml:id="api.rel_330"><info><title><constant>3.3</constant></title></info> -<sect2 id="api.rel_330"> -<title><constant>3.3</constant></title> <para> </para> -</sect2> +</section> + +<section xml:id="api.rel_340"><info><title><constant>3.4</constant></title></info> -<sect2 id="api.rel_340"> -<title><constant>3.4</constant></title> <para> </para> <para> @@ -161,13 +162,14 @@ _Alloc_traits</code> have been removed. underlying allocator was not user-configurable. </para> -<table frame='all'> +<table frame="all"> <title>Extension Allocators</title> -<tgroup cols='4' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> @@ -225,12 +227,13 @@ _Alloc_traits</code> have been removed. the first released version of GCC that included the extension allocator. </para> -<table frame='all'> +<table frame="all"> <title>Extension Allocators Continued</title> -<tgroup cols='3' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> + +<tgroup cols="3" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> <thead> <row> @@ -277,10 +280,10 @@ Extension <filename class="headerfile">ext/demangle.h</filename> added. </para> -</sect2> +</section> + +<section xml:id="api.rel_400"><info><title><constant>4.0</constant></title></info> -<sect2 id="api.rel_400"> -<title><constant>4.0</constant></title> <para> </para> <para> @@ -300,10 +303,10 @@ Removal of <filename class="headerfile">ext/demangle.h</filename>. </para> -</sect2> +</section> + +<section xml:id="api.rel_410"><info><title><constant>4.1</constant></title></info> -<sect2 id="api.rel_410"> -<title><constant>4.1</constant></title> <para> </para> @@ -324,10 +327,10 @@ types, namespace <code>pb_assoc</code>. <para> Extension for policy-based <code>basic_string</code> first added: <code>__gnu_cxx::__versa_string</code> in <filename class="headerfile">ext/vstring.h</filename>. </para> -</sect2> +</section> + +<section xml:id="api.rel_420"><info><title><constant>4.2</constant></title></info> -<sect2 id="api.rel_420"> -<title><constant>4.2</constant></title> <para> </para> @@ -360,10 +363,10 @@ __gnu_cxx::__debug</code>.</para> and <filename class="headerfile">ext/throw_allocator.h</filename>. </para> -</sect2> +</section> + +<section xml:id="api.rel_430"><info><title><constant>4.3</constant></title></info> -<sect2 id="api.rel_430"> -<title><constant>4.3</constant></title> <para> </para> @@ -448,11 +451,11 @@ PCH binary files no longer installed. Instead, the source files are installed. Namespace pb_ds moved to __gnu_pb_ds. </para> -</sect2> +</section> + +<section xml:id="api.rel_440"><info><title><constant>4.4</constant></title></info> -<sect2 id="api.rel_440"> -<title><constant>4.4</constant></title> <para> </para> @@ -558,10 +561,10 @@ for non-standard pointer types has been added to <classname>vector</classname> and <classname>forward_list</classname>. </para> -</sect2> +</section> + +<section xml:id="api.rel_450"><info><title><constant>4.5</constant></title></info> -<sect2 id="api.rel_450"> -<title><constant>4.5</constant></title> <para> </para> @@ -623,6 +626,6 @@ now defaults to zero. <para> Extensions modified: <filename class="headerfile">ext/throw_allocator.h</filename>. </para> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/extensions.xml b/libstdc++-v3/doc/xml/manual/extensions.xml index 7fa9a5e36e4..b93c61f1be2 100644 --- a/libstdc++-v3/doc/xml/manual/extensions.xml +++ b/libstdc++-v3/doc/xml/manual/extensions.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<part id="manual.ext" xreflabel="Extensions"> +<part xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext" xreflabel="Extensions"> <?dbhtml filename="extensions.html"?> -<partinfo> +<info><title> + Extensions + <indexterm><primary>Extensions</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,15 +14,12 @@ library </keyword> </keywordset> -</partinfo> +</info> + -<title> - Extensions - <indexterm><primary>Extensions</primary></indexterm> -</title> -<preface> - <title></title> +<preface><info><title/></info> + <para> Here we will make an attempt at describing the non-Standard extensions to the library. Some of these are from SGI's STL, some of these are GNU's, @@ -32,7 +28,7 @@ <para><emphasis>Before</emphasis> you leap in and use any of these extensions, be aware of two things: </para> -<orderedlist> +<orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para> Non-Standard means exactly that. @@ -55,9 +51,9 @@ extensions, be aware of two things: </preface> <!-- Chapter 01 : Compile Time Checks --> -<chapter id="manual.ext.compile_checks" xreflabel="Compile Time Checks"> +<chapter xml:id="manual.ext.compile_checks" xreflabel="Compile Time Checks"><info><title>Compile Time Checks</title></info> <?dbhtml filename="ext_compile_checks.html"?> - <title>Compile Time Checks</title> + <para> Also known as concept checking. </para> @@ -77,8 +73,8 @@ extensions, be aware of two things: <para>The primary author of the checking code, Jeremy Siek, had already started work on a replacement implementation. The new code has been formally reviewed and accepted into - <ulink url="http://www.boost.org/libs/concept_check/concept_check.htm">the - Boost libraries</ulink>, and we are pleased to incorporate it into the + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/concept_check/concept_check.htm">the + Boost libraries</link>, and we are pleased to incorporate it into the GNU C++ library. </para> <para>The new version imposes a much smaller space overhead on the generated @@ -104,54 +100,48 @@ extensions, be aware of two things: </chapter> <!-- Chapter 02 : Debug Mode --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="debug_mode.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug_mode.xml"> </xi:include> <!-- Chapter 03 : Parallel Mode --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="parallel_mode.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="parallel_mode.xml"> </xi:include> <!-- Chapter 04 : Profile Mode --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="profile_mode.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="profile_mode.xml"> </xi:include> <!-- Chapter 05 : Allocators --> -<chapter id="manual.ext.allocator" xreflabel="Allocators"> +<chapter xml:id="manual.ext.allocator" xreflabel="Allocators"><info><title>Allocators</title></info> <?dbhtml filename="ext_allocators.html"?> - <title>Allocators</title> + <!-- Section 01 : __mt_alloc --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="mt_allocator.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="mt_allocator.xml"> </xi:include> <!-- Section 02 : bitmap_allocator --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="bitmap_allocator.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="bitmap_allocator.xml"> </xi:include> </chapter> <!-- Chapter 06 : Containers --> -<chapter id="manual.ext.containers" xreflabel="Containers"> +<chapter xml:id="manual.ext.containers" xreflabel="Containers"><info><title>Containers</title></info> <?dbhtml filename="ext_containers.html"?> - <title>Containers</title> + <para> </para> - <sect1 id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures"> - <title>Policy Based Data Structures</title> + <section xml:id="manual.ext.containers.pbds" xreflabel="Policy Based Data Structures"><info><title>Policy Based Data Structures</title></info> + <para> - <ulink - url="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/index.html">More details here</link>. </para> - </sect1> + </section> - <sect1 id="manual.ext.containers.sgi" xreflabel="SGI ext"> - <title>HP/SGI</title> + <section xml:id="manual.ext.containers.sgi" xreflabel="SGI ext"><info><title>HP/SGI</title></info> + <para> </para> @@ -173,7 +163,7 @@ extensions, be aware of two things: <para>There are versions of single-bit test, set, reset, and flip member functions which do no range-checking. If we call them member functions of an instantiation - of "bitset<N>," then their names and signatures are: + of "bitset<N>," then their names and signatures are: </para> <programlisting> bitset<N>& _Unchecked_set (size_t pos); @@ -196,19 +186,19 @@ extensions, be aware of two things: resolution calls for range-checking to be done. We'll just wait and see... </para> <para>Finally, two additional searching functions have been added. They return - the index of the first "on" bit, and the index of the first - "on" bit that is after <code>prev</code>, respectively: + the index of the first "on" bit, and the index of the first + "on" bit that is after <code>prev</code>, respectively: </para> <programlisting> size_t _Find_first() const; size_t _Find_next (size_t prev) const;</programlisting> <para>The same caveat given for the _Unchecked_* functions applies here also. </para> - </sect1> + </section> - <sect1 id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"> - <title>Deprecated HP/SGI</title> + <section xml:id="manual.ext.containers.deprecated_sgi" xreflabel="SGI ext dep"><info><title>Deprecated HP/SGI</title></info> + <para> The SGI hashing classes <classname>hash_set</classname> and @@ -230,8 +220,8 @@ extensions, be aware of two things: <code><hash_map></code> and <code><hash_set></code> are deprecated but available as backwards-compatible extensions, as discussed further below. <code><rope></code> is the - SGI specialization for large strings ("rope," - "large strings," get it? Love that geeky humor.) + SGI specialization for large strings ("rope," + "large strings," get it? Love that geeky humor.) <code><slist></code> is a singly-linked list, for when the doubly-linked <code>list<></code> is too much space overhead, and <code><rb_tree></code> exposes the red-black @@ -240,12 +230,12 @@ extensions, be aware of two things: </para> <para>Each of the associative containers map, multimap, set, and multiset have a counterpart which uses a - <ulink url="http://www.sgi.com/tech/stl/HashFunction.html">hashing - function</ulink> to do the arranging, instead of a strict weak ordering + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/HashFunction.html">hashing + function</link> to do the arranging, instead of a strict weak ordering function. The classes take as one of their template parameters a function object that will return the hash value; by default, an instantiation of - <ulink url="http://www.sgi.com/tech/stl/hash.html">hash</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/hash.html">hash</link>. You should specialize this functor for your class, or define your own, before trying to use one of the hashing classes. </para> @@ -269,13 +259,13 @@ extensions, be aware of two things: </para> </blockquote> - </sect1> + </section> </chapter> <!-- Chapter 07 : Utilities --> -<chapter id="manual.ext.util" xreflabel="Utilities"> +<chapter xml:id="manual.ext.util" xreflabel="Utilities"><info><title>Utilities</title></info> <?dbhtml filename="ext_utilities.html"?> - <title>Utilities</title> + <para> The <functional> header contains many additional functors and helper functions, extending section 20.3. They are @@ -343,9 +333,9 @@ get_temporary_buffer(5, (int*)0); </chapter> <!-- Chapter 08 : Algorithms --> -<chapter id="manual.ext.algorithms" xreflabel="Algorithms"> +<chapter xml:id="manual.ext.algorithms" xreflabel="Algorithms"><info><title>Algorithms</title></info> <?dbhtml filename="ext_algorithms.html"?> - <title>Algorithms</title> + <para>25.1.6 (count, count_if) is extended with two more versions of count and count_if. The standard versions return their results. The additional signatures return void, but take a final parameter by @@ -381,34 +371,34 @@ get_temporary_buffer(5, (int*)0); </chapter> <!-- Chapter 09 : Numerics --> -<chapter id="manual.ext.numerics" xreflabel="Numerics"> +<chapter xml:id="manual.ext.numerics" xreflabel="Numerics"><info><title>Numerics</title></info> <?dbhtml filename="ext_numerics.html"?> - <title>Numerics</title> + <para>26.4, the generalized numeric operations such as accumulate, are extended with the following functions: </para> <programlisting> power (x, n); power (x, n, moniod_operation);</programlisting> -<para>Returns, in FORTRAN syntax, "x ** n" where n>=0. In the +<para>Returns, in FORTRAN syntax, "x ** n" where n>=0. In the case of n == 0, returns the identity element for the monoid operation. The two-argument signature uses multiplication (for - a true "power" implementation), but addition is supported as well. + a true "power" implementation), but addition is supported as well. The operation functor must be associative. </para> <para>The <code>iota</code> function wins the award for Extension With the - Coolest Name. It "assigns sequentially increasing values to a range. + Coolest Name. It "assigns sequentially increasing values to a range. That is, it assigns value to *first, value + 1 to *(first + 1) and so - on." Quoted from SGI documentation. + on." Quoted from SGI documentation. </para> <programlisting> void iota(_ForwardIter first, _ForwardIter last, _Tp value);</programlisting> </chapter> <!-- Chapter 10 : Iterators --> -<chapter id="manual.ext.iterators" xreflabel="Iterators"> +<chapter xml:id="manual.ext.iterators" xreflabel="Iterators"><info><title>Iterators</title></info> <?dbhtml filename="ext_iterators.html"?> - <title>Iterators</title> + <para>24.3.2 describes <code>struct iterator</code>, which didn't exist in the original HP STL implementation (the language wasn't rich enough at the time). For backwards compatibility, base classes are provided which @@ -430,17 +420,17 @@ get_temporary_buffer(5, (int*)0); </chapter> <!-- Chapter 11 : IO --> -<chapter id="manual.ext.io" xreflabel="IO"> +<chapter xml:id="manual.ext.io" xreflabel="IO"><info><title>Input and Output</title></info> <?dbhtml filename="ext_io.html"?> - <title>Input and Output</title> + <para> Extensions allowing <code>filebuf</code>s to be constructed from "C" types like FILE*s and file descriptors. </para> - <sect1 id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs"> - <title>Derived filebufs</title> + <section xml:id="manual.ext.io.filebuf_derived" xreflabel="Derived filebufs"><info><title>Derived filebufs</title></info> + <para>The v2 library included non-standard extensions to construct <code>std::filebuf</code>s from C stdio types such as @@ -483,7 +473,7 @@ get_temporary_buffer(5, (int*)0); the <code>fd()</code> function were removed from the standard filebuf. Instead, <code><ext/stdio_filebuf.h></code> contains a derived class called - <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00074.html"><code>__gnu_cxx::stdio_filebuf</code></link>. This class can be constructed from a C <code>FILE*</code> or a file descriptor, and provides the <code>fd()</code> function. </para></listitem> @@ -496,22 +486,21 @@ get_temporary_buffer(5, (int*)0); <para> </para> - </sect1> + </section> </chapter> <!-- Chapter 12 : Demangling --> -<chapter id="manual.ext.demangle" xreflabel="Demangling"> +<chapter xml:id="manual.ext.demangle" xreflabel="Demangling"><info><title>Demangling</title></info> <?dbhtml filename="ext_demangling.html"?> - <title>Demangling</title> + <para> Transforming C++ ABI identifiers (like RTTI symbols) into the original C++ source identifiers is called <quote>demangling.</quote> </para> <para> - If you have read the <ulink - url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html">source - documentation for <code>namespace abi</code></ulink> then you are + If you have read the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01115.html">source + documentation for <code>namespace abi</code></link> then you are aware of the cross-vendor C++ ABI in use by GCC. One of the exposed functions is used for demangling, <code>abi::__cxa_demangle</code>. @@ -586,8 +575,7 @@ int main() </chapter> <!-- Chapter 13 : Concurrency --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="concurrency_extensions.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency_extensions.xml"> </xi:include> </part> diff --git a/libstdc++-v3/doc/xml/manual/internals.xml b/libstdc++-v3/doc/xml/manual/internals.xml index 63664cea3f1..72af0b835c8 100644 --- a/libstdc++-v3/doc/xml/manual/internals.xml +++ b/libstdc++-v3/doc/xml/manual/internals.xml @@ -1,7 +1,8 @@ -<sect1 id="appendix.porting.internals" xreflabel="Portin Internals"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="appendix.porting.internals" xreflabel="Portin Internals"> <?dbhtml filename="internals.html"?> -<sect1info> +<info><title>Porting to New Hardware or Operating Systems</title> <keywordset> <keyword> ISO C++ @@ -10,9 +11,9 @@ internals </keyword> </keywordset> -</sect1info> +</info> + -<title>Porting to New Hardware or Operating Systems</title> <para> </para> @@ -45,8 +46,8 @@ a "host." The comment at the top of <code>configure.ac</code> explains why.) </para> -<sect2 id="internals.os"> -<title>Operating System</title> +<section xml:id="internals.os"><info><title>Operating System</title></info> + <para>If you are porting to a new operating system (as opposed to a new chip using an existing operating system), you will need to create a new @@ -151,11 +152,11 @@ this: <para>We recommend copying an existing <code>os_defines.h</code> to use as a starting point. </para> -</sect2> +</section> -<sect2 id="internals.cpu"> -<title>CPU</title> +<section xml:id="internals.cpu"><info><title>CPU</title></info> + <para>If you are porting to a new chip (as opposed to a new operating system running on an existing chip), you will need to create a new directory in the @@ -183,11 +184,11 @@ example, <code>alpha</code>, <code>alphaev5</code>, and <code>alphaev6</code> al appropriate for your chip. </para> -</sect2> +</section> + +<section xml:id="internals.char_types"><info><title>Character Types</title></info> -<sect2 id="internals.char_types"> -<title>Character Types</title> <para>The library requires that you provide three header files to implement character classification, analogous to that provided by the C libraries @@ -399,11 +400,11 @@ from <code>__low</code> up until <code>__high</code> into the vector given by } </programlisting> -</sect2> +</section> -<sect2 id="internals.thread_safety"> -<title>Thread Safety</title> +<section xml:id="internals.thread_safety"><info><title>Thread Safety</title></info> + <para>The C++ library string functionality requires a couple of atomic operations to provide thread-safety. If you don't take any special @@ -482,11 +483,11 @@ must be equivalent to those provided here, but using atomic operations: } </programlisting> -</sect2> +</section> + +<section xml:id="internals.numeric_limits"><info><title>Numeric Limits</title></info> -<sect2 id="internals.numeric_limits"> -<title>Numeric Limits</title> <para>The C++ library requires information about the fundamental data types, such as the minimum and maximum representable values of each type. @@ -504,11 +505,11 @@ To take that approach, create a new file called <code>cpu_limits.h</code> in your CPU configuration directory (see <link linkend="internals.cpu">CPU</link>). </para> -</sect2> +</section> + +<section xml:id="internals.libtool"><info><title>Libtool</title></info> -<sect2 id="internals.libtool"> -<title>Libtool</title> <para>The C++ library is compiled, archived and linked with libtool. Explaining the full workings of libtool is beyond the scope of this @@ -543,6 +544,6 @@ operating system. </para> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml index cfd8c4fe6ac..705119b6d3e 100644 --- a/libstdc++-v3/doc/xml/manual/intro.xml +++ b/libstdc++-v3/doc/xml/manual/intro.xml @@ -1,12 +1,10 @@ -<?xml version='1.0'?> -<!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<part id="manual.intro" xreflabel="Introduction"> +<part xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual.intro" xreflabel="Introduction"> <?dbhtml filename="intro.html"?> -<partinfo> +<info><title> + Introduction + <indexterm><primary>Introduction</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,75 +13,65 @@ library </keyword> </keywordset> -</partinfo> +</info> + -<title> - Introduction - <indexterm><primary>Introduction</primary></indexterm> -</title> <!-- Chapter 01 : Status --> -<chapter id="manual.intro.status" xreflabel="Status"> +<chapter xml:id="manual.intro.status" xreflabel="Status"><info><title>Status</title></info> <?dbhtml filename="status.html"?> - <title>Status</title> + <!-- Section 01 : Implementation Status --> - <sect1 id="manual.intro.status.iso" xreflabel="Status"> - <title>Implementation Status</title> + <section xml:id="manual.intro.status.iso" xreflabel="Status"><info><title>Implementation Status</title></info> + <!-- Section 01.1 : Status C++ 1998 --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="status_cxx1998.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx1998.xml"> </xi:include> <!-- Section 01.2 : Status C++ 200x --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="status_cxx200x.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxx200x.xml"> </xi:include> <!-- Section 01.3 : Status C++ TR1 --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="status_cxxtr1.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr1.xml"> </xi:include> <!-- Section 01.4 : Status C++ TR24733 --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="status_cxxtr24733.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="status_cxxtr24733.xml"> </xi:include> - </sect1> + </section> <!-- Section 02 : License --> - <sect1 id="manual.intro.status.license" xreflabel="License"> + <section xml:id="manual.intro.status.license" xreflabel="License"><info><title>License</title></info> <?dbhtml filename="license.html"?> - <title>License</title> + <para> There are two licenses affecting GNU libstdc++: one for the code, and one for the documentation. </para> <para> - There is a license section in the FAQ regarding common <link - linkend="faq.license">questions</link>. If you have more - questions, ask the FSF or the <ulink - url="http://gcc.gnu.org/lists.html">gcc mailing list</ulink>. + There is a license section in the FAQ regarding common <link linkend="faq.license">questions</link>. If you have more + questions, ask the FSF or the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/lists.html">gcc mailing list</link>. </para> - <sect2 id="manual.intro.status.license.gpl" xreflabel="License GPL"> - <title>The Code: GPL</title> + <section xml:id="manual.intro.status.license.gpl" xreflabel="License GPL"><info><title>The Code: GPL</title></info> + <para> - The source code is distributed under the <link - linkend="appendix.gpl-3.0">GNU General Public License version 3</link>, + The source code is distributed under the <link 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> + <literallayout class="normal"> GCC RUNTIME LIBRARY EXCEPTION Version 3.1, 31 March 2009 -Copyright (C) 2009 <ulink url="http://www.fsf.org">Free Software Foundation, Inc.</ulink> +Copyright (C) 2009 <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">Free Software Foundation, Inc.</link> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -157,17 +145,17 @@ requirements of the license of GCC. Hopefully that text is self-explanatory. If it isn't, you need to speak to your lawyer, or the Free Software Foundation. </para> - </sect2> + </section> - <sect2 id="manual.intro.status.license.fdl" xreflabel="License FDL"> - <title>The Documentation: GPL, FDL</title> + <section xml:id="manual.intro.status.license.fdl" xreflabel="License FDL"><info><title>The Documentation: GPL, FDL</title></info> + <para> The documentation shipped with the library and made available over the web, excluding the pages generated from source comments, are copyrighted by the Free Software Foundation, and placed under the - <link linkend="appendix.gfdl-1.2"> GNU Free Documentation - License version 1.2</link>. There are no Front-Cover Texts, no + <link linkend="appendix.gfdl-1.3"> GNU Free Documentation + License version 1.3</link>. There are no Front-Cover Texts, no Back-Cover Texts, and no Invariant Sections. </para> @@ -182,27 +170,26 @@ requirements of the license of GCC. If you plan on making copies of the documentation, please let us know. We can probably offer suggestions. </para> - </sect2> + </section> - </sect1> + </section> <!-- Section 03 : Known Bugs --> - <sect1 id="manual.intro.status.bugs" xreflabel="Bugs"> + <section xml:id="manual.intro.status.bugs" xreflabel="Bugs"><info><title>Bugs</title></info> <?dbhtml filename="bugs.html"?> - <title>Bugs</title> + - <sect2 id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"> - <title>Implementation Bugs</title> + <section xml:id="manual.intro.status.bugs.impl" xreflabel="Bugs impl"><info><title>Implementation Bugs</title></info> + <para> Information on known bugs, details on efforts to fix them, and - fixed bugs are all available as part of the <ulink - url="http://gcc.gnu.org/bugs/">GCC bug tracking system</ulink>, + fixed bugs are all available as part of the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/bugs/">GCC bug tracking system</link>, with the category set to <literal>libstdc++</literal>. </para> - </sect2> + </section> - <sect2 id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"> - <title>Standard Bugs</title> + <section xml:id="manual.intro.status.bugs.iso" xreflabel="Bugs iso"><info><title>Standard Bugs</title></info> + <para> Everybody's got issues. Even the C++ Standard Library. </para> @@ -216,10 +203,10 @@ requirements of the license of GCC. Here are the issues which have resulted in code changes to the library. The links are to the specific defect reports from a <emphasis>partial copy</emphasis> of the Issues List. You can read the full version online - at the <ulink url="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ - Committee homepage</ulink>, linked to on the - <ulink url="http://gcc.gnu.org/readings.html">GCC "Readings" - page</ulink>. If + at the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ + Committee homepage</link>, linked to on the + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/readings.html">GCC "Readings" + page</link>. If you spend a lot of time reading the issues, we recommend downloading the ZIP file and reading them locally. </para> @@ -237,116 +224,116 @@ requirements of the license of GCC. 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="../ext/lwg-active.html#DR">DR</ulink> status. + code until an issue has reached <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#DR">DR</link> status. </para> <variablelist> - <varlistentry><term><ulink url="../ext/lwg-defects.html#5">5</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#5">5</link>: <emphasis>string::compare specification questionable</emphasis> </term> <listitem><para>This should be two overloaded functions rather than a single function. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#17">17</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#17">17</link>: <emphasis>Bad bool parsing</emphasis> </term> <listitem><para>Apparently extracting Boolean values was messed up... </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#19">19</ulink>: - <emphasis>"Noconv" definition too vague</emphasis> + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#19">19</link>: + <emphasis>"Noconv" definition too vague</emphasis> </term> <listitem><para>If <code>codecvt::do_in</code> returns <code>noconv</code> there are no changes to the values in <code>[to, to_limit)</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#22">22</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#22">22</link>: <emphasis>Member open vs flags</emphasis> </term> <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>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#23">23</link>: <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>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#25">25</link>: <emphasis>String operator<< uses width() value wrong</emphasis> </term> <listitem><para>Padding issues. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#48">48</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#48">48</link>: <emphasis>Use of non-existent exception constructor</emphasis> </term> <listitem><para>An instance of <code>ios_base::failure</code> is constructed instead. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#49">49</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#49">49</link>: <emphasis>Underspecification of ios_base::sync_with_stdio</emphasis> </term> <listitem><para>The return type is the <emphasis>previous</emphasis> state of synchronization. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#50">50</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#50">50</link>: <emphasis>Copy constructor and assignment operator of ios_base</emphasis> </term> <listitem><para>These members functions are declared <code>private</code> and are thus inaccessible. Specifying the correct semantics of - "copying stream state" was deemed too complicated. + "copying stream state" was deemed too complicated. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#60">60</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#60">60</link>: <emphasis>What is a formatted input function?</emphasis> </term> <listitem><para>This DR made many widespread changes to <code>basic_istream</code> and <code>basic_ostream</code> all of which have been implemented. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#63">63</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#63">63</link>: <emphasis>Exception-handling policy for unformatted output</emphasis> </term> <listitem><para>Make the policy consistent with that of formatted input, unformatted input, and formatted output. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#68">68</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#68">68</link>: <emphasis>Extractors for char* should store null at end</emphasis> </term> <listitem><para>And they do now. An editing glitch in the last item in the list of [27.6.1.2.3]/7. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#74">74</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#74">74</link>: <emphasis>Garbled text for codecvt::do_max_length</emphasis> </term> <listitem><para>The text of the standard was gibberish. Typos gone rampant. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#75">75</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#75">75</link>: <emphasis>Contradiction in codecvt::length's argument types</emphasis> </term> <listitem><para>Change the first parameter to <code>stateT&</code> and implement the new effects paragraph. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#83">83</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#83">83</link>: <emphasis>string::npos vs. string::max_size()</emphasis> </term> <listitem><para>Safety checks on the size of the string should test against <code>max_size()</code> rather than <code>npos</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#90">90</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#90">90</link>: <emphasis>Incorrect description of operator>> for strings</emphasis> </term> <listitem><para>The effect contain <code>isspace(c,getloc())</code> which must be replaced by <code>isspace(c,is.getloc())</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#91">91</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#91">91</link>: <emphasis>Description of operator>> and getline() for string<> might cause endless loop</emphasis> </term> @@ -355,7 +342,7 @@ requirements of the license of GCC. not required to set <code>gcount</code>). </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#103">103</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#103">103</link>: <emphasis>set::iterator is required to be modifiable, but this allows modification of keys.</emphasis> </term> @@ -364,14 +351,14 @@ requirements of the license of GCC. </code> are constant iterators. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#109">109</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#109">109</link>: <emphasis>Missing binders for non-const sequence elements</emphasis> </term> <listitem><para>The <code>binder1st</code> and <code>binder2nd</code> didn't have an <code>operator()</code> taking a non-const parameter. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#110">110</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#110">110</link>: <emphasis>istreambuf_iterator::equal not const</emphasis> </term> <listitem><para>This was not a const member function. Note that the DR says to @@ -379,31 +366,31 @@ requirements of the license of GCC. overloaded version with identical contents. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#117">117</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#117">117</link>: <emphasis>basic_ostream uses nonexistent num_put member functions</emphasis> </term> <listitem><para><code>num_put::put()</code> was overloaded on the wrong types. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#118">118</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#118">118</link>: <emphasis>basic_istream uses nonexistent num_get member functions</emphasis> </term> <listitem><para>Same as 117, but for <code>num_get::get()</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#129">129</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#129">129</link>: <emphasis>Need error indication from seekp() and seekg()</emphasis> </term> <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>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#130">130</link>: <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>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#136">136</link>: <emphasis>seekp, seekg setting wrong streams?</emphasis> </term> <listitem><para><code>seekp</code> should only set the output stream, and @@ -417,46 +404,46 @@ requirements of the license of GCC. should probably not be calling <code>underflow()</code>. </para></listitem></varlistentry> --> - <varlistentry><term><ulink url="../ext/lwg-defects.html#167">167</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#167">167</link>: <emphasis>Improper use of traits_type::length()</emphasis> </term> <listitem><para><code>op<<</code> with a <code>const char*</code> was calculating an incorrect number of characters to write. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#169">169</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#169">169</link>: <emphasis>Bad efficiency of overflow() mandated</emphasis> </term> <listitem><para>Grow efficiently the internal array object. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#171">171</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#171">171</link>: <emphasis>Strange seekpos() semantics due to joint position</emphasis> </term> <listitem><para>Quite complex to summarize... </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#181">181</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#181">181</link>: <emphasis>make_pair() unintended behavior</emphasis> </term> <listitem><para>This function used to take its arguments as reference-to-const, now it copies them (pass by value). </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#195">195</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#195">195</link>: <emphasis>Should basic_istream::sentry's constructor ever set eofbit?</emphasis> </term> <listitem><para>Yes, it can, specifically if EOF is reached while skipping whitespace. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#211">211</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#211">211</link>: <emphasis>operator>>(istream&, string&) doesn't set failbit</emphasis> </term> <listitem><para>If nothing is extracted into the string, <code>op>></code> now sets <code>failbit</code> (which can cause an exception, etc., etc.). </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#214">214</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#214">214</link>: <emphasis>set::find() missing const overload</emphasis> </term> <listitem><para>Both <code>set</code> and <code>multiset</code> were missing @@ -464,47 +451,47 @@ requirements of the license of GCC. for const instances. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#231">231</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#231">231</link>: <emphasis>Precision in iostream?</emphasis> </term> <listitem><para>For conversion from a floating-point type, <code>str.precision()</code> is specified in the conversion specification. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#233">233</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#233">233</link>: <emphasis>Insertion hints in associative containers</emphasis> </term> <listitem><para>Implement N1780, first check before then check after, insert as close to hint as possible. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#235">235</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#235">235</link>: <emphasis>No specification of default ctor for reverse_iterator</emphasis> </term> <listitem><para>The declaration of <code>reverse_iterator</code> lists a default constructor. However, no specification is given what this constructor should do. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#241">241</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#241">241</link>: <emphasis>Does unique_copy() require CopyConstructible and Assignable?</emphasis> </term> <listitem><para>Add a helper for forward_iterator/output_iterator, fix the existing one for input_iterator/output_iterator to not rely on Assignability. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#243">243</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#243">243</link>: <emphasis>get and getline when sentry reports failure</emphasis> </term> <listitem><para>Store a null character only if the character array has a non-zero size. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#251">251</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#251">251</link>: <emphasis>basic_stringbuf missing allocator_type</emphasis> </term> <listitem><para>This nested typedef was originally not specified. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#253">253</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#253">253</link>: <emphasis>valarray helper functions are almost entirely useless</emphasis> </term> <listitem><para>Make the copy constructor and copy-assignment operator declarations @@ -512,60 +499,60 @@ requirements of the license of GCC. definitions. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#265">265</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#265">265</link>: <emphasis>std::pair::pair() effects overly restrictive</emphasis> </term> <listitem><para>The default ctor would build its members from copies of temporaries; now it simply uses their respective default ctors. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#266">266</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#266">266</link>: <emphasis>bad_exception::~bad_exception() missing Effects clause</emphasis> </term> <listitem><para>The <code>bad_</code>* classes no longer have destructors (they are trivial), since no description of them was ever given. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#271">271</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#271">271</link>: <emphasis>basic_iostream missing typedefs</emphasis> </term> <listitem><para>The typedefs it inherits from its base classes can't be used, since (for example) <code>basic_iostream<T>::traits_type</code> is ambiguous. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#275">275</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#275">275</link>: <emphasis>Wrong type in num_get::get() overloads</emphasis> </term> <listitem><para>Similar to 118. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#280">280</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#280">280</link>: <emphasis>Comparison of reverse_iterator to const reverse_iterator</emphasis> </term> <listitem><para>Add global functions with two template parameters. (NB: not added for now a templated assignment operator) </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#292">292</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#292">292</link>: <emphasis>Effects of a.copyfmt (a)</emphasis> </term> <listitem><para>If <code>(this == &rhs)</code> do nothing. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#300">300</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#300">300</link>: <emphasis>List::merge() specification incomplete</emphasis> </term> <listitem><para>If <code>(this == &x)</code> do nothing. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#303">303</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#303">303</link>: <emphasis>Bitset input operator underspecified</emphasis> </term> <listitem><para>Basically, compare the input character to <code>is.widen(0)</code> and <code>is.widen(1)</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#305">305</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#305">305</link>: <emphasis>Default behavior of codecvt<wchar_t, char, mbstate_t>::length()</emphasis> </term> @@ -573,20 +560,20 @@ requirements of the license of GCC. mbstate_t>::do_length</code> must return. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#328">328</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#328">328</link>: <emphasis>Bad sprintf format modifier in money_put<>::do_put()</emphasis> </term> - <listitem><para>Change the format string to "%.0Lf". + <listitem><para>Change the format string to "%.0Lf". </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#365">365</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#365">365</link>: <emphasis>Lack of const-qualification in clause 27</emphasis> </term> <listitem><para>Add const overloads of <code>is_open</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#387">387</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#387">387</link>: <emphasis>std::complex over-encapsulated</emphasis> </term> <listitem><para>Add the <code>real(T)</code> and <code>imag(T)</code> @@ -595,26 +582,26 @@ requirements of the license of GCC. free functions. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#389">389</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#389">389</link>: <emphasis>Const overload of valarray::operator[] returns by value</emphasis> </term> <listitem><para>Change it to return a <code>const T&</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#396">396</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#396">396</link>: <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>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#402">402</link>: <emphasis>Wrong new expression in [some_]allocator::construct</emphasis> </term> - <listitem><para>Replace "new" with "::new". + <listitem><para>Replace "new" with "::new". </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-active.html#408">408</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#408">408</link>: <emphasis> Is vector<reverse_iterator<char*> > forbidden? </emphasis> @@ -622,76 +609,76 @@ requirements of the license of GCC. <listitem><para>Tweak the debug-mode checks in _Safe_iterator. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#409">409</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#409">409</link>: <emphasis>Closing an fstream should clear the error state</emphasis> </term> <listitem><para>Have <code>open</code> clear the error flags. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-closed.html#431">431</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#431">431</link>: <emphasis>Swapping containers with unequal allocators</emphasis> </term> <listitem><para>Implement Option 3, as per N1599. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#432">432</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#432">432</link>: <emphasis>stringbuf::overflow() makes only one write position available</emphasis> </term> <listitem><para>Implement the resolution, beyond DR 169. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#434">434</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#434">434</link>: <emphasis>bitset::to_string() hard to use</emphasis> </term> <listitem><para>Add three overloads, taking fewer template arguments. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#438">438</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#438">438</link>: <emphasis>Ambiguity in the "do the right thing" clause</emphasis> </term> <listitem><para>Implement the resolution, basically cast less. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#453">453</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#453">453</link>: <emphasis>basic_stringbuf::seekoff need not always fail for an empty stream</emphasis> </term> <listitem><para>Don't fail if the next pointer is null and newoff is zero. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#455">455</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#455">455</link>: <emphasis>cerr::tie() and wcerr::tie() are overspecified</emphasis> </term> <listitem><para>Initialize cerr tied to cout and wcerr tied to wcout. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#464">464</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#464">464</link>: <emphasis>Suggestion for new member functions in standard containers</emphasis> </term> <listitem><para>Add <code>data()</code> to <code>std::vector</code> and <code>at(const key_type&)</code> to <code>std::map</code>. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#508">508</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#508">508</link>: <emphasis>Bad parameters for ranlux64_base_01</emphasis> </term> <listitem><para>Fix the parameters. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-closed.html#512">512</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#512">512</link>: <emphasis>Seeding subtract_with_carry_01 from a single unsigned long</emphasis> </term> <listitem><para>Construct a <code>linear_congruential</code> engine and seed with it. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-closed.html#526">526</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-closed.html#526">526</link>: <emphasis>Is it undefined if a function in the standard changes in parameters?</emphasis> </term> <listitem><para>Use &value. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#538">538</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#538">538</link>: <emphasis>241 again: Does unique_copy() require CopyConstructible and Assignable?</emphasis> </term> @@ -699,7 +686,7 @@ requirements of the license of GCC. input_iterator' value_type. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-active.html#539">539</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#539">539</link>: <emphasis>partial_sum and adjacent_difference should mention requirements</emphasis> </term> @@ -707,116 +694,116 @@ requirements of the license of GCC. in adjacent_difference. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#541">541</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#541">541</link>: <emphasis>shared_ptr template assignment and void</emphasis> </term> <listitem><para>Add an auto_ptr<void> specialization. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#543">543</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#543">543</link>: <emphasis>valarray slice default constructor</emphasis> </term> <listitem><para>Follow the straightforward proposed resolution. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#550">550</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#550">550</link>: <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. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#586">586</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#586">586</link>: <emphasis>string inserter not a formatted function</emphasis> </term> <listitem><para>Change it to be a formatted output function (i.e. catch exceptions). </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#596">596</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#596">596</link>: <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-defects.html#630">630</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#630">630</link>: <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>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#660">660</link>: <emphasis>Missing bitwise operations</emphasis> </term> <listitem><para>Add the missing operations. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#691">691</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#691">691</link>: <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) to the unordered containers. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#693">693</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#693">693</link>: <emphasis>std::bitset::all() missing</emphasis> </term> <listitem><para>Add it, consistently with the discussion. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#695">695</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#695">695</link>: <emphasis>ctype<char>::classic_table() not accessible</emphasis> </term> <listitem><para>Make the member functions table and classic_table public. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#696">696</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#696">696</link>: <emphasis>istream::operator>>(int&) broken</emphasis> </term> <listitem><para>Implement the straightforward resolution. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#761">761</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#761">761</link>: <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-defects.html#775">775</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#775">775</link>: <emphasis>Tuple indexing should be unsigned?</emphasis> </term> - <listitem><para>Implement the int -> size_t replacements. + <listitem><para>Implement the int -> size_t replacements. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#776">776</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#776">776</link>: <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-defects.html#781">781</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#781">781</link>: <emphasis>std::complex should add missing C99 functions</emphasis> </term> <listitem><para>In C++0x mode, add std::proj. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#809">809</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#809">809</link>: <emphasis>std::swap should be overloaded for array types</emphasis> </term> <listitem><para>Add the overload. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#844">844</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#844">844</link>: <emphasis>complex pow return type is ambiguous</emphasis> </term> <listitem><para>In C++0x mode, remove the pow(complex<T>, int) signature. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-defects.html#853">853</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-defects.html#853">853</link>: <emphasis>to_string needs updating with zero and one</emphasis> </term> <listitem><para>Update / add the signatures. </para></listitem></varlistentry> - <varlistentry><term><ulink url="../ext/lwg-active.html#865">865</ulink>: + <varlistentry><term><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../ext/lwg-active.html#865">865</link>: <emphasis>More algorithms that throw away information</emphasis> </term> <listitem><para>The traditional HP / SGI return type and value is blessed @@ -824,15 +811,15 @@ requirements of the license of GCC. </para></listitem></varlistentry> </variablelist> - </sect2> - </sect1> + </section> + </section> </chapter> <!-- Chapter 02 : Setup --> -<chapter id="manual.intro.setup" xreflabel="Setup"> +<chapter xml:id="manual.intro.setup" xreflabel="Setup"><info><title>Setup</title></info> <?dbhtml filename="setup.html"?> - <title>Setup</title> + <para>To transform libstdc++ sources into installed include files and properly built binaries useful for linking to other software is @@ -859,36 +846,33 @@ requirements of the license of GCC. </para> <!-- Section 01 : Prerequisites --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="prerequisites.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="prerequisites.xml"> </xi:include> <!-- Section 02 : Configure --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="configure.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="configure.xml"> </xi:include> <!-- Section 03 : Make --> -<sect1 id="manual.intro.setup.make" xreflabel="Make"> +<section xml:id="manual.intro.setup.make" xreflabel="Make"><info><title>Make</title></info> <?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>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">GCC Installation + Instructions</link> first. Read <emphasis>all of them</emphasis>. <emphasis>Twice.</emphasis> </para> -<para>Then type:<command>make</command>, and congratulations, you're +<para>Then type: <command>make</command>, and congratulations, you've started to build. </para> -</sect1> +</section> </chapter> <!-- Chapter 03 : Using --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="using.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using.xml"> </xi:include> </part> diff --git a/libstdc++-v3/doc/xml/manual/io.xml b/libstdc++-v3/doc/xml/manual/io.xml index 13a1d7a47d2..6378313b593 100644 --- a/libstdc++-v3/doc/xml/manual/io.xml +++ b/libstdc++-v3/doc/xml/manual/io.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.io" xreflabel="Input and Output"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.io" xreflabel="Input and Output"> <?dbhtml filename="io.html"?> -<chapterinfo> +<info><title> + Input and Output + <indexterm><primary>Input and Output</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,17 +14,14 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Input and Output - <indexterm><primary>Input and Output</primary></indexterm> -</title> <!-- Sect1 01 : Iostream Objects --> -<sect1 id="std.io.objects" xreflabel="IO Objects"> +<section xml:id="std.io.objects" xreflabel="IO Objects"><info><title>Iostream Objects</title></info> <?dbhtml filename="iostream_objects.html"?> - <title>Iostream Objects</title> + <para>To minimize the time you have to wait on the compiler, it's good to only include the headers you really need. Many people simply include @@ -35,10 +31,10 @@ </para> <para><emphasis><iosfwd></emphasis> should be included whenever you simply need the <emphasis>name</emphasis> of an I/O-related class, such as - "ofstream" or "basic_streambuf". Like the name + "ofstream" or "basic_streambuf". Like the name implies, these are forward declarations. (A word to all you fellow old school programmers: trying to forward declare classes like - "class istream;" won't work. Look in the iosfwd header if + "class istream;" won't work. Look in the iosfwd header if you'd like to know why.) For example, </para> <programlisting> @@ -93,9 +89,9 @@ the various concrete implementations. If you are only using the interfaces, then you only need to use the appropriate interface header. </para> - <para><emphasis><iomanip></emphasis> provides "extractors and inserters + <para><emphasis><iomanip></emphasis> provides "extractors and inserters that alter information maintained by class ios_base and its derived - classes," such as std::setprecision and std::setw. If you need + classes," such as std::setprecision and std::setw. If you need to write expressions like <code>os << setw(3);</code> or <code>is >> setbase(8);</code>, you must include <iomanip>. </para> @@ -157,24 +153,24 @@ compile times will go down when there's less parsing work to do. </para> -</sect1> +</section> <!-- Sect1 02 : Stream Buffers --> -<sect1 id="std.io.streambufs" xreflabel="Stream Buffers"> +<section xml:id="std.io.streambufs" xreflabel="Stream Buffers"><info><title>Stream Buffers</title></info> <?dbhtml filename="streambufs.html"?> - <title>Stream Buffers</title> + - <sect2 id="io.streambuf.derived" xreflabel="Derived streambuf Classes"> - <title>Derived streambuf Classes</title> + <section xml:id="io.streambuf.derived" xreflabel="Derived streambuf Classes"><info><title>Derived streambuf Classes</title></info> + <para> </para> <para>Creating your own stream buffers for I/O can be remarkably easy. If you are interested in doing so, we highly recommend two very excellent books: - <ulink url="http://www.angelikalanger.com/iostreams.html">Standard C++ - IOStreams and Locales</ulink> by Langer and Kreft, ISBN 0-201-18395-1, and - <ulink url="http://www.josuttis.com/libbook/">The C++ Standard Library</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.angelikalanger.com/iostreams.html">Standard C++ + IOStreams and Locales</link> by Langer and Kreft, ISBN 0-201-18395-1, and + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.josuttis.com/libbook/">The C++ Standard Library</link> by Nicolai Josuttis, ISBN 0-201-37926-0. Both are published by Addison-Wesley, who isn't paying us a cent for saying that, honest. </para> @@ -223,14 +219,14 @@ </programlisting> <para>Try it yourself! More examples can be found in 3.1.x code, in <code>include/ext/*_filebuf.h</code>, and in this article by James Kanze: - <ulink url="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering - Streambufs</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://kanze.james.neuf.fr/articles/fltrsbf1.html">Filtering + Streambufs</link>. </para> - </sect2> + </section> - <sect2 id="io.streambuf.buffering" xreflabel="Buffering"> - <title>Buffering</title> + <section xml:id="io.streambuf.buffering" xreflabel="Buffering"><info><title>Buffering</title></info> + <para>First, are you sure that you understand buffering? Chaptericularly the fact that C++ may not, in fact, have anything to do with it? </para> @@ -241,8 +237,8 @@ when the output stream is, in fact, a terminal and not a file or some other device -- and <emphasis>that</emphasis> may not even be true since C++ says nothing about files nor terminals. All of that is - system-dependent. (The "newline-buffer-flushing only occurring - on terminals" thing is mostly true on Unix systems, though.) + system-dependent. (The "newline-buffer-flushing only occurring + on terminals" thing is mostly true on Unix systems, though.) </para> <para>Some people also believe that sending <code>endl</code> down an output stream only writes a newline. This is incorrect; after a @@ -252,17 +248,17 @@ wasted when doing this to a file: </para> <programlisting> - output << "a line of text" << endl; + output << "a line of text" << endl; output << some_data_variable << endl; - output << "another line of text" << endl; </programlisting> + output << "another line of text" << endl; </programlisting> <para>The proper thing to do in this case to just write the data out and let the libraries and the system worry about the buffering. If you need a newline, just write a newline: </para> <programlisting> - output << "a line of text\n" + output << "a line of text\n" << some_data_variable << '\n' - << "another line of text\n"; </programlisting> + << "another line of text\n"; </programlisting> <para>I have also joined the output statements into a single statement. You could make the code prettier by moving the single newline to the start of the quoted text on the last line, for example. @@ -289,10 +285,10 @@ os.rdbuf()->pubsetbuf(0,0); is.rdbuf()->pubsetbuf(0,0); - os.open("/foo/bar/baz"); - is.open("/qux/quux/quuux"); + os.open("/foo/bar/baz"); + is.open("/qux/quux/quuux"); ... - os << "this data is written immediately\n"; + os << "this data is written immediately\n"; is >> i; // and this will probably cause a disk read </programlisting> <para>Since all aspects of buffering are handled by a streambuf-derived member, it is necessary to get at that member with <code>rdbuf()</code>. @@ -303,8 +299,8 @@ <para>A great deal of this is implementation-dependent. For example, <code>streambuf</code> does not specify any actions for its own <code>setbuf()</code>-ish functions; the classes derived from - <code>streambuf</code> each define behavior that "makes - sense" for that class: an argument of (0,0) turns off buffering + <code>streambuf</code> each define behavior that "makes + sense" for that class: an argument of (0,0) turns off buffering for <code>filebuf</code> but does nothing at all for its siblings <code>stringbuf</code> and <code>strstreambuf</code>, and specifying anything other than (0,0) has varying effects. @@ -320,15 +316,15 @@ changing those are system-dependent. </para> - </sect2> -</sect1> + </section> +</section> <!-- Sect1 03 : Memory-based Streams --> -<sect1 id="std.io.memstreams" xreflabel="Memory Streams"> +<section xml:id="std.io.memstreams" xreflabel="Memory Streams"><info><title>Memory Based Streams</title></info> <?dbhtml filename="stringstreams.html"?> - <title>Memory Based Streams</title> - <sect2 id="std.io.memstreams.compat" xreflabel="Compatibility strstream"> - <title>Compatibility With strstream</title> + + <section xml:id="std.io.memstreams.compat" xreflabel="Compatibility strstream"><info><title>Compatibility With strstream</title></info> + <para> </para> <para>Stringstreams (defined in the header <code><sstream></code>) @@ -360,23 +356,23 @@ <para>If you are a user of the strstream classes, you need to update your code. You don't have to explicitly append <code>ends</code> to terminate the C-style character array, you don't have to mess with - "freezing" functions, and you don't have to manage the + "freezing" functions, and you don't have to manage the memory yourself. The strstreams have been officially deprecated, which means that 1) future revisions of the C++ Standard won't support them, and 2) if you use them, people will laugh at you. </para> - </sect2> -</sect1> + </section> +</section> <!-- Sect1 04 : File-based Streams --> -<sect1 id="std.io.filestreams" xreflabel="File Streams"> +<section xml:id="std.io.filestreams" xreflabel="File Streams"><info><title>File Based Streams</title></info> <?dbhtml filename="fstreams.html"?> - <title>File Based Streams</title> + - <sect2 id="std.io.filestreams.copying_a_file" xreflabel="Copying a File"> - <title>Copying a File</title> + <section xml:id="std.io.filestreams.copying_a_file" xreflabel="Copying a File"><info><title>Copying a File</title></info> + <para> </para> @@ -395,13 +391,13 @@ OUT << IN;</programlisting> <para>For those of you who don't already know why this doesn't work (probably from having done it before), I invite you to quickly - create a simple text file called "input_file" containing + create a simple text file called "input_file" containing the sentence </para> <programlisting> The quick brown fox jumped over the lazy dog.</programlisting> <para>surrounded by blank lines. Code it up and try it. The contents - of "output_file" may surprise you. + of "output_file" may surprise you. </para> <para>Seriously, go do it. Get surprised, then come back. It's worth it. </para> @@ -411,7 +407,7 @@ handled by the <code>basic_streambuf</code> family. Fortunately, the <code>operator<<</code> is overloaded to take an ostream and a pointer-to-streambuf, in order to help with just this kind of - "dump the data verbatim" situation. + "dump the data verbatim" situation. </para> <para>Why a <emphasis>pointer</emphasis> to streambuf and not just a streambuf? Well, the [io]streams hold pointers (or references, depending on the @@ -427,7 +423,7 @@ behavior, since that chaptericular << isn't defined by the Standard. I have seen instances where it is implemented, but the character extraction process removes all the whitespace, leaving you with no - blank lines and only "Thequickbrownfox...". With + blank lines and only "Thequickbrownfox...". With libraries that do not define that operator, IN (or one of IN's member pointers) sometimes gets converted to a void*, and the output file then contains a perfect text representation of a hexadecimal @@ -439,10 +435,10 @@ descendants. </para> - </sect2> + </section> - <sect2 id="std.io.filestreams.binary" xreflabel="Binary Input and Output"> - <title>Binary Input and Output</title> + <section xml:id="std.io.filestreams.binary" xreflabel="Binary Input and Output"><info><title>Binary Input and Output</title></info> + <para> </para> <para>The first and most important thing to remember about binary I/O is @@ -454,7 +450,7 @@ <para>Sorry. Them's the breaks. </para> <para>This isn't going to try and be a complete tutorial on reading and - writing binary files (because "binary" + writing binary files (because "binary" covers a lot of ground), but we will try and clear up a couple of misconceptions and common errors. </para> @@ -481,7 +477,7 @@ </para> <para>Third, using the <code>get()</code> and <code>put()/write()</code> member functions still aren't guaranteed to help you. These are - "unformatted" I/O functions, but still character-based. + "unformatted" I/O functions, but still character-based. (This may or may not be what you want, see below.) </para> <para>Notice how all the problems here are due to the inappropriate use @@ -558,9 +554,9 @@ <para> An instructive thread from comp.lang.c++.moderated delved off into this topic starting more or less at - <ulink url="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d">this</ulink> - post and continuing to the end of the thread. (The subject heading is "binary iostreams" on both comp.std.c++ - and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://groups.google.com/group/comp.std.c++/browse_thread/thread/f87b4abd7954a87/946a3eb9921e382d?q=comp.std.c%2B%2B+binary+iostream#946a3eb9921e382d">this</link> + post and continuing to the end of the thread. (The subject heading is "binary iostreams" on both comp.std.c++ + and comp.lang.c++.moderated.) Take special note of the replies by James Kanze and Dietmar Kühl. </para> <para>Briefly, the problems of byte ordering and type sizes mean that the unformatted functions like <code>ostream::put()</code> and @@ -569,28 +565,28 @@ invocation of a program to another invocation of the same program on a different platform, etc. </para> - </sect2> + </section> -</sect1> +</section> <!-- Sect1 03 : Interacting with C --> -<sect1 id="std.io.c" xreflabel="Interacting with C"> +<section xml:id="std.io.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info> <?dbhtml filename="io_and_c.html"?> - <title>Interacting with C</title> + - <sect2 id="std.io.c.FILE" xreflabel="Using FILE* and file descriptors"> - <title>Using FILE* and file descriptors</title> + <section xml:id="std.io.c.FILE" xreflabel="Using FILE* and file descriptors"><info><title>Using FILE* and file descriptors</title></info> + <para> See the <link linkend="manual.ext.io">extensions</link> for using <type>FILE</type> and <type>file descriptors</type> with <classname>ofstream</classname> and <classname>ifstream</classname>. </para> - </sect2> + </section> - <sect2 id="std.io.c.sync" xreflabel="Performance Issues"> - <title>Performance</title> + <section xml:id="std.io.c.sync" xreflabel="Performance Issues"><info><title>Performance</title></info> + <para> Pathetic Performance? Ditch C. </para> @@ -604,9 +600,9 @@ #include <iostream> #include <cstdio> - std::cout << "Hel"; - std::printf ("lo, worl"); - std::cout << "d!\n"; + std::cout << "Hel"; + std::printf ("lo, worl"); + std::cout << "d!\n"; </programlisting> <para>This must do what you think it does. </para> @@ -647,7 +643,7 @@ </para> - </sect2> -</sect1> + </section> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/iterators.xml b/libstdc++-v3/doc/xml/manual/iterators.xml index 86b92a4f54b..bcfa30cd5f9 100644 --- a/libstdc++-v3/doc/xml/manual/iterators.xml +++ b/libstdc++-v3/doc/xml/manual/iterators.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.iterators" xreflabel="Iterators"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.iterators" xreflabel="Iterators"> <?dbhtml filename="iterators.html"?> -<chapterinfo> +<info><title> + Iterators + <indexterm><primary>Iterators</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,19 +14,16 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Iterators - <indexterm><primary>Iterators</primary></indexterm> -</title> <!-- Sect1 01 : Predefined --> -<sect1 id="std.iterators.predefined" xreflabel="Predefined"> - <title>Predefined</title> +<section xml:id="std.iterators.predefined" xreflabel="Predefined"><info><title>Predefined</title></info> + - <sect2 id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers"> - <title>Iterators vs. Pointers</title> + <section xml:id="iterators.predefined.vs_pointers" xreflabel="Versus Pointers"><info><title>Iterators vs. Pointers</title></info> + <para> The following FAQ <link linkend="faq.iterator_as_pod">entry</link> points out that @@ -63,7 +59,7 @@ classes. How much overhead <emphasis>is</emphasis> there when using an iterator class? Very little. Most of the layering classes contain nothing but typedefs, and typedefs are - "meta-information" that simply tell the compiler some + "meta-information" that simply tell the compiler some nicknames; they don't create code. That information gets passed down through inheritance, so while the compiler has to do work looking up all the names, your runtime code does not. (This has @@ -71,10 +67,10 @@ classes. </para> - </sect2> + </section> - <sect2 id="iterators.predefined.end" xreflabel="end() Is One Past the End"> - <title>One Past the End</title> + <section xml:id="iterators.predefined.end" xreflabel="end() Is One Past the End"><info><title>One Past the End</title></info> + <para>This starts off sounding complicated, but is actually very easy, especially towards the end. Trust me. @@ -88,7 +84,7 @@ classes. C and C++ for builtin arrays. The following rules have always been true for both languages: </para> - <orderedlist> + <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para>You can point anywhere in the array, <emphasis>or to the first element past the end of the array</emphasis>. A pointer that points to one @@ -145,9 +141,9 @@ classes. </para> <para>Now think back to your junior-high school algebra course, when you were learning how to draw graphs. Remember that a graph terminating - with a solid dot meant, "Everything up through this point," - and a graph terminating with an open dot meant, "Everything up - to, but not including, this point," respectively called closed + with a solid dot meant, "Everything up through this point," + and a graph terminating with an open dot meant, "Everything up + to, but not including, this point," respectively called closed and open ranges? Remember how closed ranges were written with brackets, <emphasis>[a,b]</emphasis>, and open ranges were written with parentheses, <emphasis>(a,b)</emphasis>? @@ -181,8 +177,8 @@ classes. <para>Just don't dereference <code>end()</code>. </para> - </sect2> -</sect1> + </section> +</section> <!-- Sect1 02 : Stream --> diff --git a/libstdc++-v3/doc/xml/manual/locale.xml b/libstdc++-v3/doc/xml/manual/locale.xml index 234439ae355..dcdd1032284 100644 --- a/libstdc++-v3/doc/xml/manual/locale.xml +++ b/libstdc++-v3/doc/xml/manual/locale.xml @@ -1,6 +1,7 @@ -<section id="std.localization.locales.locale" xreflabel="Locale"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.localization.locales.locale" xreflabel="Locale"> -<sectioninfo> +<info><title>locale</title> <keywordset> <keyword> ISO C++ @@ -9,9 +10,9 @@ locale </keyword> </keywordset> -</sectioninfo> +</info> + -<title>locale</title> <para> Describes the basic locale object, including nested @@ -19,8 +20,8 @@ classes id, facet, and the reference-counted implementation object, class _Impl. </para> -<section id="locales.locale.req"> -<title>Requirements</title> +<section xml:id="locales.locale.req"><info><title>Requirements</title></info> + <para> Class locale is non-templatized and has two distinct types nested @@ -89,8 +90,8 @@ Provides an index for looking up specific facets. </para> </section> -<section id="locales.locale.design"> -<title>Design</title> +<section xml:id="locales.locale.design"><info><title>Design</title></info> + <para> The major design challenge is fitting an object-orientated and @@ -105,11 +106,11 @@ portability is an issue. </section> -<section id="locales.locale.impl"> -<title>Implementation</title> +<section xml:id="locales.locale.impl"><info><title>Implementation</title></info> - <section id="locale.impl.c"> - <title>Interacting with "C" locales</title> + + <section xml:id="locale.impl.c"><info><title>Interacting with "C" locales</title></info> + <itemizedlist> <listitem> @@ -470,8 +471,8 @@ global locale" (emphasis Paolo), that is: </section> </section> -<section id="locales.locale.future"> -<title>Future</title> +<section xml:id="locales.locale.future"><info><title>Future</title></info> + <itemizedlist> <listitem> @@ -510,21 +511,15 @@ global locale" (emphasis Paolo), that is: </itemizedlist> </section> -<bibliography id="locales.locale.biblio"> -<title>Bibliography</title> +<bibliography xml:id="locales.locale.biblio"><info><title>Bibliography</title></info> + <biblioentry> - <title> + <citetitle> The GNU C Library - </title> - <author> - <surname>McGrath</surname> - <firstname>Roland</firstname> - </author> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2007</year> <holder>FSF</holder> @@ -536,23 +531,20 @@ global locale" (emphasis Paolo), that is: </biblioentry> <biblioentry> - <title> + <citetitle> Correspondence - </title> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2002</year> - <holder></holder> + <holder/> </copyright> </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 14882:1998 Programming languages - C++ - </title> + </citetitle> <copyright> <year>1998</year> <holder>ISO</holder> @@ -560,9 +552,9 @@ global locale" (emphasis Paolo), that is: </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 9899:1999 Programming languages - C - </title> + </citetitle> <copyright> <year>1999</year> <holder>ISO</holder> @@ -570,13 +562,11 @@ global locale" (emphasis Paolo), that is: </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.opengroup.org/austin"> - <citetitle> - System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri"> </biblioid> + <citetitle> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </citetitle> <copyright> <year>2008</year> <holder> @@ -587,13 +577,10 @@ global locale" (emphasis Paolo), that is: </biblioentry> <biblioentry> - <title> + <citetitle> The C++ Programming Language, Special Edition - </title> - <author> - <surname>Stroustrup</surname> - <firstname>Bjarne</firstname> - </author> + </citetitle> + <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley, Inc.</holder> @@ -607,20 +594,14 @@ global locale" (emphasis Paolo), that is: </biblioentry> <biblioentry> - <title> + <citetitle> Standard C++ IOStreams and Locales - </title> + </citetitle> <subtitle> Advanced Programmer's Guide and Reference </subtitle> - <author> - <surname>Langer</surname> - <firstname>Angelika</firstname> - </author> - <author> - <surname>Kreft</surname> - <firstname>Klaus</firstname> - </author> + <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author> + <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley Longman, Inc.</holder> diff --git a/libstdc++-v3/doc/xml/manual/localization.xml b/libstdc++-v3/doc/xml/manual/localization.xml index 70898546776..b46e707fc4e 100644 --- a/libstdc++-v3/doc/xml/manual/localization.xml +++ b/libstdc++-v3/doc/xml/manual/localization.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.localization" xreflabel="Localization"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.localization" xreflabel="Localization"> <?dbhtml filename="localization.html"?> -<chapterinfo> +<info><title> + Localization + <indexterm><primary>Localization</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,42 +14,35 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Localization - <indexterm><primary>Localization</primary></indexterm> -</title> <!-- Section 01 : Locale --> -<section id="std.localization.locales" xreflabel="Locales"> +<section xml:id="std.localization.locales" xreflabel="Locales"><info><title>Locales</title></info> <?dbhtml filename="locales.html"?> - <title>Locales</title> + <!-- Section 01 : locale --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="locale.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="locale.xml"> </xi:include> </section> <!-- Section 02 : Facet --> -<section id="std.localization.facet" xreflabel="Facets"> +<section xml:id="std.localization.facet" xreflabel="Facets"><info><title>Facets</title></info> <?dbhtml filename="facets.html"?> - <title>Facets</title> + <!-- Section 01 : ctype --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="ctype.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="ctype.xml"> </xi:include> <!-- Section 02 : codecvt --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="codecvt.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="codecvt.xml"> </xi:include> <!-- Section 03 : messages --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="messages.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="messages.xml"> </xi:include> </section> diff --git a/libstdc++-v3/doc/xml/manual/messages.xml b/libstdc++-v3/doc/xml/manual/messages.xml index f0428d43781..d834e27d7a8 100644 --- a/libstdc++-v3/doc/xml/manual/messages.xml +++ b/libstdc++-v3/doc/xml/manual/messages.xml @@ -1,7 +1,8 @@ -<section id="manual.localization.facet.messages" xreflabel="Messages"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.localization.facet.messages" xreflabel="Messages"> <?dbhtml filename="messages.html"?> -<sectioninfo> +<info><title>messages</title> <keywordset> <keyword> ISO C++ @@ -10,9 +11,9 @@ messages </keyword> </keywordset> -</sectioninfo> +</info> + -<title>messages</title> <para> The std::messages facet implements message retrieval functionality @@ -20,8 +21,8 @@ equivalent to Java's java.text.MessageFormat .using either GNU gettext or IEEE 1003.1-200 functions. </para> -<section id="facet.messages.req"> -<title>Requirements</title> +<section xml:id="facet.messages.req"><info><title>Requirements</title></info> + <para> The std::messages facet is probably the most vaguely defined facet in @@ -108,8 +109,8 @@ be found, returns dfault. </section> -<section id="facet.messages.design"> -<title>Design</title> +<section xml:id="facet.messages.design"><info><title>Design</title></info> + <para> A couple of notes on the standard. @@ -157,11 +158,11 @@ other, explicitly named locales. </section> -<section id="facet.messages.impl"> -<title>Implementation</title> +<section xml:id="facet.messages.impl"><info><title>Implementation</title></info> - <section id="messages.impl.models"> - <title>Models</title> + + <section xml:id="messages.impl.models"><info><title>Models</title></info> + <para> This is a relatively simple class, on the face of it. The standard specifies very little in concrete terms, so generic @@ -228,8 +229,8 @@ model. </section> - <section id="messages.impl.gnu"> - <title>The GNU Model</title> + <section xml:id="messages.impl.gnu"><info><title>The GNU Model</title></info> + <para> The messages facet, because it is retrieving and converting @@ -321,8 +322,8 @@ model. </section> </section> -<section id="facet.messages.use"> -<title>Use</title> +<section xml:id="facet.messages.use"><info><title>Use</title></info> + <para> A simple example using the GNU model of message conversion. </para> @@ -351,8 +352,8 @@ void test01() </section> -<section id="facet.messages.future"> -<title>Future</title> +<section xml:id="facet.messages.future"><info><title>Future</title></info> + <itemizedlist> <listitem> @@ -438,21 +439,15 @@ void test01() </section> -<bibliography id="facet.messages.biblio"> -<title>Bibliography</title> +<bibliography xml:id="facet.messages.biblio"><info><title>Bibliography</title></info> + <biblioentry> - <title> + <citetitle> The GNU C Library - </title> - <author> - <surname>McGrath</surname> - <firstname>Roland</firstname> - </author> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>McGrath</surname><firstname>Roland</firstname></personname></author> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2007</year> <holder>FSF</holder> @@ -462,23 +457,20 @@ void test01() </biblioentry> <biblioentry> - <title> + <citetitle> Correspondence - </title> - <author> - <surname>Drepper</surname> - <firstname>Ulrich</firstname> - </author> + </citetitle> + <author><personname><surname>Drepper</surname><firstname>Ulrich</firstname></personname></author> <copyright> <year>2002</year> - <holder></holder> + <holder/> </copyright> </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 14882:1998 Programming languages - C++ - </title> + </citetitle> <copyright> <year>1998</year> <holder>ISO</holder> @@ -486,9 +478,9 @@ void test01() </biblioentry> <biblioentry> - <title> + <citetitle> ISO/IEC 9899:1999 Programming languages - C - </title> + </citetitle> <copyright> <year>1999</year> @@ -497,13 +489,11 @@ void test01() </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.opengroup.org/austin"> - <citetitle> - System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri"> </biblioid> + <citetitle> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </citetitle> <copyright> <year>2008</year> <holder> @@ -514,13 +504,10 @@ void test01() </biblioentry> <biblioentry> - <title> + <citetitle> The C++ Programming Language, Special Edition - </title> - <author> - <surname>Stroustrup</surname> - <firstname>Bjarne</firstname> - </author> + </citetitle> + <author><personname><surname>Stroustrup</surname><firstname>Bjarne</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley, Inc.</holder> @@ -534,20 +521,14 @@ void test01() </biblioentry> <biblioentry> - <title> + <citetitle> Standard C++ IOStreams and Locales - </title> + </citetitle> <subtitle> Advanced Programmer's Guide and Reference </subtitle> - <author> - <surname>Langer</surname> - <firstname>Angelika</firstname> - </author> - <author> - <surname>Kreft</surname> - <firstname>Klaus</firstname> - </author> + <author><personname><surname>Langer</surname><firstname>Angelika</firstname></personname></author> + <author><personname><surname>Kreft</surname><firstname>Klaus</firstname></personname></author> <copyright> <year>2000</year> <holder>Addison Wesley Longman, Inc.</holder> @@ -560,27 +541,24 @@ void test01() </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://java.sun.com/reference/api/index.html"> - <citetitle> - API Specifications, Java Platform - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://java.sun.com/reference/api/index.html" class="uri"> + </biblioid> + <citetitle> + API Specifications, Java Platform + </citetitle> + <pagenums>java.util.Properties, java.text.MessageFormat, java.util.Locale, java.util.ResourceBundle </pagenums> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.gnu.org/software/gettext/"> - <citetitle> - GNU gettext tools, version 0.10.38, Native Language Support -Library and Tools. - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gnu.org/software/gettext/" class="uri"> </biblioid> + <citetitle> + GNU gettext tools, version 0.10.38, Native Language Support + Library and Tools. + </citetitle> </biblioentry> </bibliography> diff --git a/libstdc++-v3/doc/xml/manual/mt_allocator.xml b/libstdc++-v3/doc/xml/manual/mt_allocator.xml index ba93b10fa68..b31b593bc29 100644 --- a/libstdc++-v3/doc/xml/manual/mt_allocator.xml +++ b/libstdc++-v3/doc/xml/manual/mt_allocator.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.ext.allocator.mt" xreflabel="mt allocator"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.allocator.mt" xreflabel="mt allocator"> <?dbhtml filename="mt_allocator.html"?> -<sect1info> +<info><title>mt_allocator</title> <keywordset> <keyword> ISO C++ @@ -10,15 +11,15 @@ allocator </keyword> </keywordset> -</sect1info> +</info> + -<title>mt_allocator</title> <para> </para> -<sect2 id="allocator.mt.intro"> -<title>Intro</title> +<section xml:id="allocator.mt.intro"><info><title>Intro</title></info> + <para> The mt allocator [hereinafter referred to simply as "the allocator"] @@ -40,14 +41,14 @@ view - the "inner workings" of the allocator. </para> -</sect2> +</section> + +<section xml:id="allocator.mt.design_issues"><info><title>Design Issues</title></info> -<sect2 id="allocator.mt.design_issues"> -<title>Design Issues</title> -<sect3 id="allocator.mt.overview"> -<title>Overview</title> +<section xml:id="allocator.mt.overview"><info><title>Overview</title></info> + <para> There are three general components to the allocator: a datum @@ -104,15 +105,15 @@ classes, namely member functions <code>allocate</code> and <code>deallocate</code>, plus others. </para> -</sect3> -</sect2> +</section> +</section> + +<section xml:id="allocator.mt.impl"><info><title>Implementation</title></info> -<sect2 id="allocator.mt.impl"> -<title>Implementation</title> -<sect3 id="allocator.mt.tune"> -<title>Tunable Parameters</title> +<section xml:id="allocator.mt.tune"><info><title>Tunable Parameters</title></info> + <para>Certain allocation parameters can be modified, or tuned. There exists a nested <code>struct __pool_base::_Tune</code> that contains all @@ -166,10 +167,10 @@ int main() } </programlisting> -</sect3> +</section> + +<section xml:id="allocator.mt.init"><info><title>Initialization</title></info> -<sect3 id="allocator.mt.init"> -<title>Initialization</title> <para> The static variables (pointers to freelists, tuning parameters etc) @@ -276,10 +277,10 @@ The _S_initialize() function: a thread decides to return some blocks to the global freelist. </para> -</sect3> +</section> + +<section xml:id="allocator.mt.deallocation"><info><title>Deallocation Notes</title></info> -<sect3 id="allocator.mt.deallocation"> -<title>Deallocation Notes</title> <para> Notes about deallocation. This allocator does not explicitly release memory. Because of this, memory debugging programs like @@ -308,16 +309,16 @@ containers, this works, as an instance of the allocator is constructed as part of a container's constructor. However, this assumption is implementation-specific, and subject to change. For an example of a pool that frees memory, see the following - <ulink url="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup"> - example.</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/viewcvs/trunk/libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc?view=markup"> + example.</link> </para> -</sect3> +</section> -</sect2> +</section> + +<section xml:id="allocator.mt.example_single"><info><title>Single Thread Example</title></info> -<sect2 id="allocator.mt.example_single"> -<title>Single Thread Example</title> <para> Let's start by describing how the data on a freelist is laid out in memory. @@ -408,10 +409,10 @@ after a set of performance measurements that showed that this is roughly 10% faster than maintaining a set of "last pointers" as well. </para> -</sect2> +</section> + +<section xml:id="allocator.mt.example_multi"><info><title>Multiple Thread Example</title></info> -<sect2 id="allocator.mt.example_multi"> -<title>Multiple Thread Example</title> <para> In the ST example we never used the thread_id variable present in each block. @@ -549,6 +550,6 @@ be improved to further reduce the risk of blocks being "bounced back and forth" between freelists. </para> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/numerics.xml b/libstdc++-v3/doc/xml/manual/numerics.xml index 379e83cf56d..a9e866e78c8 100644 --- a/libstdc++-v3/doc/xml/manual/numerics.xml +++ b/libstdc++-v3/doc/xml/manual/numerics.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.numerics" xreflabel="Numerics"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.numerics" xreflabel="Numerics"> <?dbhtml filename="numerics.html"?> -<chapterinfo> +<info><title> + Numerics + <indexterm><primary>Numerics</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,21 +14,18 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Numerics - <indexterm><primary>Numerics</primary></indexterm> -</title> <!-- Sect1 01 : Complex --> -<sect1 id="std.numerics.complex" xreflabel="complex"> +<section xml:id="std.numerics.complex" xreflabel="complex"><info><title>Complex</title></info> <?dbhtml filename="complex.html"?> - <title>Complex</title> + <para> </para> - <sect2 id="numerics.complex.processing" xreflabel="complex Processing"> - <title>complex Processing</title> + <section xml:id="numerics.complex.processing" xreflabel="complex Processing"><info><title>complex Processing</title></info> + <para> </para> <para>Using <code>complex<></code> becomes even more comple- er, sorry, @@ -38,7 +34,7 @@ compiled a list of C++98 and C99 conflict points; his description of C's new type versus those of C++ and how to get them playing together nicely is -<ulink url="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</ulink>. +<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://david.tribble.com/text/cdiffs.htm#C99-complex">here</link>. </para> <para><code>complex<></code> is intended to be instantiated with a floating-point type. As long as you meet that and some other basic @@ -49,13 +45,13 @@ <code>(u)</code>, and <code>(u,v)</code>. </para> - </sect2> -</sect1> + </section> +</section> <!-- Sect1 02 : Generalized Operations --> -<sect1 id="std.numerics.generalized_ops" xreflabel="Generalized Ops"> +<section xml:id="std.numerics.generalized_ops" xreflabel="Generalized Ops"><info><title>Generalized Operations</title></info> <?dbhtml filename="generalized_numeric_operations.html"?> - <title>Generalized Operations</title> + <para> </para> @@ -93,15 +89,15 @@ <para>The other three functions have similar dual-signature forms. </para> -</sect1> +</section> <!-- Sect1 03 : Interacting with C --> -<sect1 id="std.numerics.c" xreflabel="Interacting with C"> +<section xml:id="std.numerics.c" xreflabel="Interacting with C"><info><title>Interacting with C</title></info> <?dbhtml filename="numerics_and_c.html"?> - <title>Interacting with C</title> + - <sect2 id="numerics.c.array" xreflabel="Numerics vs. Arrays"> - <title>Numerics vs. Arrays</title> + <section xml:id="numerics.c.array" xreflabel="Numerics vs. Arrays"><info><title>Numerics vs. Arrays</title></info> + <para>One of the major reasons why FORTRAN can chew through numbers so well is that it is defined to be free of pointer aliasing, an assumption @@ -112,7 +108,7 @@ as an extension). </para> <para>That library solution is a set of two classes, five template classes, - and "a whole bunch" of functions. The classes are required + and "a whole bunch" of functions. The classes are required to be free of pointer aliasing, so compilers can optimize the daylights out of them the same way that they have been for FORTRAN. They are collectively called <code>valarray</code>, although strictly @@ -121,10 +117,10 @@ libraries before. </para> - </sect2> + </section> - <sect2 id="numerics.c.c99" xreflabel="C99"> - <title>C99</title> + <section xml:id="numerics.c.c99" xreflabel="C99"><info><title>C99</title></info> + <para>In addition to the other topics on this page, we'll note here some of the C99 features that appear in libstdc++. @@ -143,7 +139,7 @@ <code>wcstoll</code>. </para> - </sect2> -</sect1> + </section> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/parallel_mode.xml b/libstdc++-v3/doc/xml/manual/parallel_mode.xml index fbc2ed1dbec..ec0faf9c71d 100644 --- a/libstdc++-v3/doc/xml/manual/parallel_mode.xml +++ b/libstdc++-v3/doc/xml/manual/parallel_mode.xml @@ -1,12 +1,8 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="manual.ext.parallel_mode" xreflabel="Parallel Mode"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.parallel_mode" xreflabel="Parallel Mode"> <?dbhtml filename="parallel_mode.html"?> -<chapterinfo> +<info><title>Parallel Mode</title> <keywordset> <keyword> C++ @@ -18,9 +14,9 @@ parallel </keyword> </keywordset> -</chapterinfo> +</info> + -<title>Parallel Mode</title> <para> The libstdc++ parallel mode is an experimental parallel implementation of many algorithms the C++ Standard Library. @@ -35,8 +31,8 @@ specific compiler flag. </para> -<sect1 id="manual.ext.parallel_mode.intro" xreflabel="Intro"> - <title>Intro</title> +<section xml:id="manual.ext.parallel_mode.intro" xreflabel="Intro"><info><title>Intro</title></info> + <para>The following library components in the include <filename class="headerfile">numeric</filename> are included in the parallel mode:</para> @@ -83,10 +79,10 @@ specific compiler flag. <listitem><para><function>std::unique_copy</function></para></listitem> </itemizedlist> -</sect1> +</section> -<sect1 id="manual.ext.parallel_mode.semantics" xreflabel="Semantics"> - <title>Semantics</title> +<section xml:id="manual.ext.parallel_mode.semantics" xreflabel="Semantics"><info><title>Semantics</title></info> + <para> The parallel mode STL algorithms are currently not exception-safe, i.e. user-defined functors must not throw exceptions. @@ -100,13 +96,13 @@ it is not possible to call parallel STL algorithm in concurrent threads, either. It might work with other compilers, though.</para> -</sect1> +</section> -<sect1 id="manual.ext.parallel_mode.using" xreflabel="Using"> - <title>Using</title> +<section xml:id="manual.ext.parallel_mode.using" xreflabel="Using"><info><title>Using</title></info> + -<sect2 id="parallel_mode.using.prereq_flags"> - <title>Prerequisite Compiler Flags</title> +<section xml:id="parallel_mode.using.prereq_flags"><info><title>Prerequisite Compiler Flags</title></info> + <para> Any use of parallel functionality requires additional compiler @@ -114,7 +110,7 @@ It might work with other compilers, though.</para> not difficult: just compile your application with the compiler flag <literal>-fopenmp</literal>. This will link in <code>libgomp</code>, the GNU - OpenMP <ulink url="http://gcc.gnu.org/onlinedocs/libgomp">implementation</ulink>, + OpenMP <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libgomp">implementation</link>, whose presence is mandatory. </para> @@ -129,10 +125,10 @@ In addition, hardware that supports atomic operations and a compiler the GCC manual for more information. </para> -</sect2> +</section> -<sect2 id="parallel_mode.using.parallel_mode"> - <title>Using Parallel Mode</title> +<section xml:id="parallel_mode.using.parallel_mode"><info><title>Using Parallel Mode</title></info> + <para> To use the libstdc++ parallel mode, compile your application with @@ -154,10 +150,10 @@ In addition, hardware that supports atomic operations and a compiler translation units. Parallel mode functionality has distinct linkage, and cannot be confused with normal mode symbols. </para> -</sect2> +</section> -<sect2 id="parallel_mode.using.specific"> - <title>Using Specific Parallel Components</title> +<section xml:id="parallel_mode.using.specific"><info><title>Using Specific Parallel Components</title></info> + <para>When it is not feasible to recompile your entire application, or only specific algorithms need to be parallel-aware, individual @@ -199,13 +195,14 @@ flags for atomic operations.) parallel algorithms that can be used in a similar manner: </para> -<table frame='all'> +<table frame="all"> <title>Parallel Algorithms</title> -<tgroup cols='4' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> @@ -461,16 +458,16 @@ flags for atomic operations.) </tgroup> </table> -</sect2> +</section> -</sect1> +</section> -<sect1 id="manual.ext.parallel_mode.design" xreflabel="Design"> - <title>Design</title> +<section xml:id="manual.ext.parallel_mode.design" xreflabel="Design"><info><title>Design</title></info> + <para> </para> -<sect2 id="parallel_mode.design.intro" xreflabel="Intro"> - <title>Interface Basics</title> +<section xml:id="parallel_mode.design.intro" xreflabel="Intro"><info><title>Interface Basics</title></info> + <para> All parallel algorithms are intended to have signatures that are @@ -536,14 +533,14 @@ overload is therefore missing. </para> -</sect2> +</section> -<sect2 id="parallel_mode.design.tuning" xreflabel="Tuning"> - <title>Configuration and Tuning</title> +<section xml:id="parallel_mode.design.tuning" xreflabel="Tuning"><info><title>Configuration and Tuning</title></info> + -<sect3 id="parallel_mode.design.tuning.omp" xreflabel="OpenMP Environment"> - <title>Setting up the OpenMP Environment</title> +<section xml:id="parallel_mode.design.tuning.omp" xreflabel="OpenMP Environment"><info><title>Setting up the OpenMP Environment</title></info> + <para> Several aspects of the overall runtime environment can be manipulated @@ -585,10 +582,10 @@ nested parallelism (<function>omp_set_nested</function>), schedule kind documentation for more information. </para> -</sect3> +</section> -<sect3 id="parallel_mode.design.tuning.compile" xreflabel="Compile Switches"> - <title>Compile Time Switches</title> +<section xml:id="parallel_mode.design.tuning.compile" xreflabel="Compile Switches"><info><title>Compile Time Switches</title></info> + <para> To force an algorithm to execute sequentially, even though parallelism @@ -662,10 +659,10 @@ Multiway mergesort comes with the two splitting strategies for multi-way merging. The quicksort options cannot be used for <code>stable_sort</code>. </para> -</sect3> +</section> -<sect3 id="parallel_mode.design.tuning.settings" xreflabel="_Settings"> - <title>Run Time Settings and Defaults</title> +<section xml:id="parallel_mode.design.tuning.settings" xreflabel="_Settings"><info><title>Run Time Settings and Defaults</title></info> + <para> The default parallelization strategy, the choice of specific algorithm @@ -729,8 +726,8 @@ i. e. it is a singleton. It can be read and written by calling <code>__gnu_parallel::_Settings::set</code>, respectively. Please note that the first call return a const object, so direct manipulation is forbidden. -See <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html"> - <filename class="headerfile">settings.h</filename></ulink> +See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a01005.html"> + <filename class="headerfile">settings.h</filename></link> for complete details. </para> @@ -754,12 +751,12 @@ int main() } </programlisting> -</sect3> +</section> -</sect2> +</section> -<sect2 id="parallel_mode.design.impl" xreflabel="Impl"> - <title>Implementation Namespaces</title> +<section xml:id="parallel_mode.design.impl" xreflabel="Impl"><info><title>Implementation Namespaces</title></info> + <para> One namespace contain versions of code that are always explicitly sequential: @@ -787,12 +784,12 @@ related to the parallel mode on a per-namespace basis, can be found in the generated source documentation. </para> -</sect2> +</section> -</sect1> +</section> -<sect1 id="manual.ext.parallel_mode.test" xreflabel="Testing"> - <title>Testing</title> +<section xml:id="manual.ext.parallel_mode.test" xreflabel="Testing"><info><title>Testing</title></info> + <para> Both the normal conformance and regression tests and the @@ -830,28 +827,22 @@ the generated source documentation. file, and can be generated by using the <code>make doc-performance</code> rule in the testsuite's Makefile. </para> -</sect1> +</section> + +<bibliography xml:id="parallel_mode.biblio"><info><title>Bibliography</title></info> -<bibliography id="parallel_mode.biblio"> -<title>Bibliography</title> <biblioentry> - <title> + <citetitle> Parallelization of Bulk Operations for STL Dictionaries - </title> + </citetitle> - <author> - <firstname>Johannes</firstname> - <surname>Singler</surname> - </author> - <author> - <firstname>Leonor</firstname> - <surname>Frias</surname> - </author> + <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname></author> + <author><personname><firstname>Leonor</firstname><surname>Frias</surname></personname></author> <copyright> <year>2007</year> - <holder></holder> + <holder/> </copyright> <publisher> @@ -862,26 +853,17 @@ the generated source documentation. </biblioentry> <biblioentry> - <title> + <citetitle> The Multi-Core Standard Template Library - </title> - - <author> - <firstname>Johannes</firstname> - <surname>Singler</surname> - </author> - <author> - <firstname>Peter</firstname> - <surname>Sanders</surname> - </author> - <author> - <firstname>Felix</firstname> - <surname>Putze</surname> - </author> + </citetitle> + + <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname></author> + <author><personname><firstname>Peter</firstname><surname>Sanders</surname></personname></author> + <author><personname><firstname>Felix</firstname><surname>Putze</surname></personname></author> <copyright> <year>2007</year> - <holder></holder> + <holder/> </copyright> <publisher> diff --git a/libstdc++-v3/doc/xml/manual/prerequisites.xml b/libstdc++-v3/doc/xml/manual/prerequisites.xml index cdfe6ccccb1..6fd813548f1 100644 --- a/libstdc++-v3/doc/xml/manual/prerequisites.xml +++ b/libstdc++-v3/doc/xml/manual/prerequisites.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.intro.setup.prereq" xreflabel="Prerequisites"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.intro.setup.prereq" xreflabel="Prerequisites"> <?dbhtml filename="prerequisites.html"?> -<sect1info> +<info><title>Prerequisites</title> <keywordset> <keyword> ISO C++ @@ -10,17 +11,17 @@ Prerequisites </keyword> </keywordset> -</sect1info> +</info> + -<title>Prerequisites</title> <para> Because libstdc++ is part of GCC, the primary source for installation instructions is - <ulink url="http://gcc.gnu.org/install/">the GCC install page</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/">the GCC install page</link>. In particular, list of prerequisite software needed to build the library - <ulink url="http://gcc.gnu.org/install/prerequisites.html"> - starts with those requirements.</ulink> The same pages also list + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/install/prerequisites.html"> + starts with those requirements.</link> The same pages also list the tools you will need if you wish to modify the source. </para> @@ -31,8 +32,8 @@ <para>As of GCC 4.0.1 the minimum version of binutils required to build libstdc++ is <code>2.15.90.0.1.1</code>. You can get snapshots (as well as releases) of binutils from - <ulink url="ftp://sources.redhat.com/pub/binutils/"> - ftp://sources.redhat.com/pub/binutils</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="ftp://sources.redhat.com/pub/binutils/"> + ftp://sources.redhat.com/pub/binutils</link>. Older releases of libstdc++ do not require such a recent version, but to take full advantage of useful space-saving features and bug-fixes you should use a recent binutils whenever possible. @@ -41,6 +42,12 @@ </para> <para> + To generate the API documentation from the sources you will need + Doxygen, see <link linkend="contrib.doc_style">Documentation + Style</link> in the appendix for full details. + </para> + + <para> Finally, a few system-specific requirements: </para> @@ -52,16 +59,8 @@ <para> If gcc 3.1.0 or later on is being used on linux, an attempt will be made to use "C" library functionality necessary for - C++ named locale support. For gcc 3.2.1 and later, this - means that glibc 2.2.5 or later is required and the "C" - library de_DE locale information must be installed. - </para> - - <para> - Note however that the sanity checks involving the de_DE - locale are skipped when an explicit --enable-clocale=gnu - configure option is used: only the basic checks are carried - out, defending against misconfigurations. + C++ named locale support. For gcc 4.6.0 and later, this + means that glibc 2.3 or later is required. </para> <para> @@ -94,14 +93,14 @@ ta_IN UTF-8 zh_TW BIG5 </programlisting> - <para>Failure to have the underlying "C" library locale - information installed will mean that C++ named locales for the - above regions will not work: because of this, the libstdc++ - testsuite will skip the named locale tests. If this isn't an - issue, don't worry about it. If named locales are needed, the - underlying locale information must be installed. Note that - rebuilding libstdc++ after the "C" locales are installed is not - necessary. + <para>Failure to have installed the underlying "C" library + locale information for any of the above regions means that + the corresponding C++ named locale will not work: because of + this, the libstdc++ testsuite will skip named locale tests + which need missing information. If this isn't an issue, don't + worry about it. If a named locale is needed, the underlying + locale information must be installed. Note that rebuilding + libstdc++ after "C" locales are installed is not necessary. </para> <para> @@ -158,4 +157,4 @@ zh_TW BIG5 </varlistentry> </variablelist> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/profile_mode.xml b/libstdc++-v3/doc/xml/manual/profile_mode.xml index 5665d4e6477..cb4db6732a5 100644 --- a/libstdc++-v3/doc/xml/manual/profile_mode.xml +++ b/libstdc++-v3/doc/xml/manual/profile_mode.xml @@ -1,12 +1,8 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="manual.ext.profile_mode" xreflabel="Profile Mode"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.ext.profile_mode" xreflabel="Profile Mode"> <?dbhtml filename="profile_mode.html"?> -<chapterinfo> +<info><title>Profile Mode</title> <keywordset> <keyword> C++ @@ -18,13 +14,13 @@ profile </keyword> </keywordset> -</chapterinfo> +</info> + -<title>Profile Mode</title> -<sect1 id="manual.ext.profile_mode.intro" xreflabel="Intro"> - <title>Intro</title> +<section xml:id="manual.ext.profile_mode.intro" xreflabel="Intro"><info><title>Intro</title></info> + <para> <emphasis>Goal: </emphasis>Give performance improvement advice based on recognition of suboptimal usage patterns of the standard library. @@ -36,8 +32,8 @@ various components at interesting entry/exit points to/from the standard library. Process trace, recognize suboptimal patterns, give advice. For details, see - <ulink url="http://dx.doi.org/10.1109/CGO.2009.36">paper presented at - CGO 2009</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dx.doi.org/10.1109/CGO.2009.36">paper presented at + CGO 2009</link>. </para> <para> <emphasis>Strengths: </emphasis> @@ -71,8 +67,8 @@ </para> -<sect2 id="manual.ext.profile_mode.using" xreflabel="Using"> - <title>Using the Profile Mode</title> +<section xml:id="manual.ext.profile_mode.using" xreflabel="Using"><info><title>Using the Profile Mode</title></info> + <para> This is the anticipated common workflow for program <code>foo.cc</code>: @@ -155,10 +151,10 @@ vector-size: improvement = 3: call stack = 0x804842c ... at a higher abstraction level. </para> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.tuning" xreflabel="Tuning"> - <title>Tuning the Profile Mode</title> +<section xml:id="manual.ext.profile_mode.tuning" xreflabel="Tuning"><info><title>Tuning the Profile Mode</title></info> + <para>Compile time switches and environment variables (see also file profiler.h). Unless specified otherwise, they can be set at compile time @@ -214,21 +210,22 @@ vector-size: improvement = 3: call stack = 0x804842c ... </itemizedlist> </para> -</sect2> +</section> -</sect1> +</section> -<sect1 id="manual.ext.profile_mode.design" xreflabel="Design"> - <title>Design</title> +<section xml:id="manual.ext.profile_mode.design" xreflabel="Design"><info><title>Design</title></info> + <para> </para> -<table frame='all'> +<table frame="all"> <title>Profile Code Location</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <thead> <row> @@ -258,9 +255,8 @@ vector-size: improvement = 3: call stack = 0x804842c ... <para> </para> -<sect2 id="manual.ext.profile_mode.design.wrapper" - xreflabel="Wrapper"> -<title>Wrapper Model</title> +<section xml:id="manual.ext.profile_mode.design.wrapper" xreflabel="Wrapper"><info><title>Wrapper Model</title></info> + <para> In order to get our instrumented library version included instead of the release one, @@ -285,12 +281,11 @@ vector-size: improvement = 3: call stack = 0x804842c ... not allowed. Mixing them at compile time will result in preprocessor errors. Mixing them at link time is undefined. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.design.instrumentation" xreflabel="Instrumentation"><info><title>Instrumentation</title></info> -<sect2 id="manual.ext.profile_mode.design.instrumentation" - xreflabel="Instrumentation"> -<title>Instrumentation</title> <para> Instead of instrumenting every public entry and exit point, we chose to add instrumentation on demand, as needed @@ -313,12 +308,11 @@ vector-size: improvement = 3: call stack = 0x804842c ... All the instrumentation on/off compile time switches live in <code>include/profile/profiler.h</code>. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.design.rtlib" xreflabel="Run Time Behavior"><info><title>Run Time Behavior</title></info> -<sect2 id="manual.ext.profile_mode.design.rtlib" - xreflabel="Run Time Behavior"> -<title>Run Time Behavior</title> <para> For practical reasons, the instrumentation library processes the trace partially @@ -339,15 +333,14 @@ vector-size: improvement = 3: call stack = 0x804842c ... <para> For details, see - <ulink url="http://dx.doi.org/10.1109/CGO.2009.36">paper presented at - CGO 2009</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://dx.doi.org/10.1109/CGO.2009.36">paper presented at + CGO 2009</link>. </para> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.design.analysis" - xreflabel="Analysis and Diagnostics"> -<title>Analysis and Diagnostics</title> +<section xml:id="manual.ext.profile_mode.design.analysis" xreflabel="Analysis and Diagnostics"><info><title>Analysis and Diagnostics</title></info> + <para> Final analysis takes place offline, and it is based entirely on the generated trace and debugging info in the application binary. @@ -357,12 +350,11 @@ vector-size: improvement = 3: call stack = 0x804842c ... The input to the analysis is a table indexed by profile type and call stack. The data type for each entry depends on the profile type. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.design.cost-model" xreflabel="Cost Model"><info><title>Cost Model</title></info> -<sect2 id="manual.ext.profile_mode.design.cost-model" - xreflabel="Cost Model"> -<title>Cost Model</title> <para> While it is likely that cost models become complex as we get into more sophisticated analysis, we will try to follow a simple set of rules @@ -399,12 +391,11 @@ vector-size: improvement = 3: call stack = 0x804842c ... care require a sorted container.</para></listitem> </itemizedlist> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.design.reports" xreflabel="Reports"><info><title>Reports</title></info> -<sect2 id="manual.ext.profile_mode.design.reports" - xreflabel="Reports"> -<title>Reports</title> <para> There are two types of reports. First, if we recognize a pattern for which we have a substitute that is likely to give better performance, we print @@ -419,12 +410,11 @@ which have the worst data locality in actual traversals. Although this does not offer a solution, it helps the user focus on the key problems and ignore the uninteresting ones. </para> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.design.testing" - xreflabel="Testing"> -<title>Testing</title> +<section xml:id="manual.ext.profile_mode.design.testing" xreflabel="Testing"><info><title>Testing</title></info> + <para> First, we want to make sure we preserve the behavior of the release mode. You can just type <code>"make check-profile"</code>, which @@ -436,13 +426,12 @@ it helps the user focus on the key problems and ignore the uninteresting ones. Each diagnostic must come with at least two tests, one for false positives and one for false negatives. </para> -</sect2> +</section> + +</section> -</sect1> +<section xml:id="manual.ext.profile_mode.api" xreflabel="API"><info><title>Extensions for Custom Containers</title></info> -<sect1 id="manual.ext.profile_mode.api" - xreflabel="API"> -<title>Extensions for Custom Containers</title> <para> Many large projects use their own data structures instead of the ones in the @@ -453,12 +442,11 @@ it helps the user focus on the key problems and ignore the uninteresting ones. <code>profiler.h</code> (look for "Instrumentation hooks"). </para> -</sect1> +</section> + +<section xml:id="manual.ext.profile_mode.cost_model" xreflabel="Cost Model"><info><title>Empirical Cost Model</title></info> -<sect1 id="manual.ext.profile_mode.cost_model" - xreflabel="Cost Model"> -<title>Empirical Cost Model</title> <para> Currently, the cost model uses formulas with predefined relative weights @@ -479,17 +467,15 @@ it helps the user focus on the key problems and ignore the uninteresting ones. generic parameters. </para> -</sect1> +</section> -<sect1 id="manual.ext.profile_mode.implementation" - xreflabel="Implementation"> -<title>Implementation Issues</title> +<section xml:id="manual.ext.profile_mode.implementation" xreflabel="Implementation"><info><title>Implementation Issues</title></info> -<sect2 id="manual.ext.profile_mode.implementation.stack" - xreflabel="Stack Traces"> -<title>Stack Traces</title> + +<section xml:id="manual.ext.profile_mode.implementation.stack" xreflabel="Stack Traces"><info><title>Stack Traces</title></info> + <para> Accurate stack traces are needed during profiling since we group events by call context and dynamic instance. Without accurate traces, diagnostics @@ -503,12 +489,11 @@ it helps the user focus on the key problems and ignore the uninteresting ones. to 0 if you are willing to give up call context information, or to a small positive value to reduce run time overhead. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.implementation.symbols" xreflabel="Symbolization"><info><title>Symbolization of Instruction Addresses</title></info> -<sect2 id="manual.ext.profile_mode.implementation.symbols" - xreflabel="Symbolization"> -<title>Symbolization of Instruction Addresses</title> <para> The profiling and analysis phases use only instruction addresses. An external utility such as addr2line is needed to postprocess the result. @@ -516,12 +501,11 @@ it helps the user focus on the key problems and ignore the uninteresting ones. This would require access to symbol tables, debug information tables, external programs or libraries and other system dependent information. </para> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.implementation.concurrency" - xreflabel="Concurrency"> -<title>Concurrency</title> +<section xml:id="manual.ext.profile_mode.implementation.concurrency" xreflabel="Concurrency"><info><title>Concurrency</title></info> + <para> Our current model is simplistic, but precise. We cannot afford to approximate because some of our diagnostics require @@ -529,24 +513,22 @@ it helps the user focus on the key problems and ignore the uninteresting ones. During profiling, we keep a single information table per diagnostic. There is a single lock per information table. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.implementation.stdlib-in-proflib" xreflabel="Using the Standard Library in the Runtime Library"><info><title>Using the Standard Library in the Instrumentation Implementation</title></info> -<sect2 id="manual.ext.profile_mode.implementation.stdlib-in-proflib" - xreflabel="Using the Standard Library in the Runtime Library"> -<title>Using the Standard Library in the Instrumentation Implementation</title> <para> As much as we would like to avoid uses of libstdc++ within our instrumentation library, containers such as unordered_map are very appealing. We plan to use them as long as they are named properly to avoid ambiguity. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.implementation.malloc-hooks" xreflabel="Malloc Hooks"><info><title>Malloc Hooks</title></info> -<sect2 id="manual.ext.profile_mode.implementation.malloc-hooks" - xreflabel="Malloc Hooks"> -<title>Malloc Hooks</title> <para> User applications/libraries can provide malloc hooks. When the implementation of the malloc hooks uses stdlibc++, there can @@ -563,12 +545,11 @@ it helps the user focus on the key problems and ignore the uninteresting ones. XXX: A definitive solution to this problem would be for the profile extension to use a custom allocator internally, and perhaps not to use libstdc++. </para> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.implementation.construction-destruction" - xreflabel="Construction and Destruction of Global Objects"> -<title>Construction and Destruction of Global Objects</title> +<section xml:id="manual.ext.profile_mode.implementation.construction-destruction" xreflabel="Construction and Destruction of Global Objects"><info><title>Construction and Destruction of Global Objects</title></info> + <para> The profiling library state is initialized at the first call to a profiling method. This allows us to record the construction of all global objects. @@ -576,18 +557,16 @@ it helps the user focus on the key problems and ignore the uninteresting ones. by a function registered by <code>atexit</code>, thus invoked by <code>exit</code>. </para> -</sect2> +</section> + +</section> + -</sect1> +<section xml:id="manual.ext.profile_mode.developer" xreflabel="Developer Information"><info><title>Developer Information</title></info> -<sect1 id="manual.ext.profile_mode.developer" - xreflabel="Developer Information"> -<title>Developer Information</title> +<section xml:id="manual.ext.profile_mode.developer.bigpic" xreflabel="Big Picture"><info><title>Big Picture</title></info> -<sect2 id="manual.ext.profile_mode.developer.bigpic" - xreflabel="Big Picture"> -<title>Big Picture</title> <para>The profile mode headers are included with <code>-D_GLIBCXX_PROFILE</code> through preprocessor directives in @@ -609,11 +588,10 @@ it helps the user focus on the key problems and ignore the uninteresting ones. <code>-D_GLIBCXX_PROFILE_...</code> compiler option. </para> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.developer.howto" xreflabel="How To Add A Diagnostic"><info><title>How To Add A Diagnostic</title></info> -<sect2 id="manual.ext.profile_mode.developer.howto" - xreflabel="How To Add A Diagnostic"> -<title>How To Add A Diagnostic</title> <para>Let's say the diagnostic name is "magic". </para> @@ -684,11 +662,11 @@ it helps the user focus on the key problems and ignore the uninteresting ones. <para>Add documentation in file <code>doc/xml/manual/profile_mode.xml</code>. </para> -</sect2> -</sect1> +</section> +</section> + +<section xml:id="manual.ext.profile_mode.diagnostics"><info><title>Diagnostics</title></info> -<sect1 id="manual.ext.profile_mode.diagnostics"> -<title>Diagnostics</title> <para> The table below presents all the diagnostics we intend to implement. @@ -712,16 +690,17 @@ it helps the user focus on the key problems and ignore the uninteresting ones. specific needs or time budgets. </para> -<table frame='all'> +<table frame="all"> <title>Profile Diagnostics</title> -<tgroup cols='7' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> -<colspec colname='c6'></colspec> -<colspec colname='c7'></colspec> + +<tgroup cols="7" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> +<colspec colname="c6"/> +<colspec colname="c7"/> <thead> <row> @@ -735,145 +714,145 @@ it helps the user focus on the key problems and ignore the uninteresting ones. </thead> <tbody> <row> - <entry><ulink url="#manual.ext.profile_mode.analysis.containers"> - CONTAINERS</ulink></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.hashtable_too_small"> - HASHTABLE_TOO_SMALL</ulink></entry> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.containers"> + CONTAINERS</link></entry> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.hashtable_too_small"> + HASHTABLE_TOO_SMALL</link></entry> <entry>10</entry> <entry>1</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>yes</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.hashtable_too_large"> - HASHTABLE_TOO_LARGE</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.hashtable_too_large"> + HASHTABLE_TOO_LARGE</link></entry> <entry>5</entry> <entry>1</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>yes</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.inefficient_hash"> - INEFFICIENT_HASH</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.inefficient_hash"> + INEFFICIENT_HASH</link></entry> <entry>7</entry> <entry>3</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>yes</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.vector_too_small"> - VECTOR_TOO_SMALL</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.vector_too_small"> + VECTOR_TOO_SMALL</link></entry> <entry>8</entry> <entry>1</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>yes</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.vector_too_large"> - VECTOR_TOO_LARGE</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.vector_too_large"> + VECTOR_TOO_LARGE</link></entry> <entry>5</entry> <entry>1</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>yes</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.vector_to_hashtable"> - VECTOR_TO_HASHTABLE</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.vector_to_hashtable"> + VECTOR_TO_HASHTABLE</link></entry> <entry>7</entry> <entry>7</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>no</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.hashtable_to_vector"> - HASHTABLE_TO_VECTOR</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.hashtable_to_vector"> + HASHTABLE_TO_VECTOR</link></entry> <entry>7</entry> <entry>7</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>no</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.vector_to_list"> - VECTOR_TO_LIST</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.vector_to_list"> + VECTOR_TO_LIST</link></entry> <entry>8</entry> <entry>5</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>yes</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.list_to_vector"> - LIST_TO_VECTOR</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.list_to_vector"> + LIST_TO_VECTOR</link></entry> <entry>10</entry> <entry>5</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>no</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.assoc_ord_to_unord"> - ORDERED_TO_UNORDERED</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.assoc_ord_to_unord"> + ORDERED_TO_UNORDERED</link></entry> <entry>10</entry> <entry>5</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>only map/unordered_map</entry> </row> <row> - <entry><ulink url="#manual.ext.profile_mode.analysis.algorithms"> - ALGORITHMS</ulink></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.algorithms.sort"> - SORT</ulink></entry> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.algorithms"> + ALGORITHMS</link></entry> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.algorithms.sort"> + SORT</link></entry> <entry>7</entry> <entry>8</entry> - <entry></entry> + <entry/> <entry>7</entry> <entry>no</entry> </row> <row> - <entry><ulink url="#manual.ext.profile_mode.analysis.locality"> - LOCALITY</ulink></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.locality.sw_prefetch"> - SOFTWARE_PREFETCH</ulink></entry> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.locality"> + LOCALITY</link></entry> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.locality.sw_prefetch"> + SOFTWARE_PREFETCH</link></entry> <entry>8</entry> <entry>8</entry> - <entry></entry> + <entry/> <entry>5</entry> <entry>no</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.locality.linked"> - RBTREE_LOCALITY</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.locality.linked"> + RBTREE_LOCALITY</link></entry> <entry>4</entry> <entry>8</entry> - <entry></entry> + <entry/> <entry>5</entry> <entry>no</entry> </row> <row> - <entry></entry> - <entry><ulink url="#manual.ext.profile_mode.analysis.mthread.false_share"> - FALSE_SHARING</ulink></entry> + <entry/> + <entry><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#manual.ext.profile_mode.analysis.mthread.false_share"> + FALSE_SHARING</link></entry> <entry>8</entry> <entry>10</entry> - <entry></entry> + <entry/> <entry>10</entry> <entry>no</entry> </row> @@ -881,9 +860,8 @@ it helps the user focus on the key problems and ignore the uninteresting ones. </tgroup> </table> -<sect2 id="manual.ext.profile_mode.analysis.template" - xreflabel="Template"> -<title>Diagnostic Template</title> +<section xml:id="manual.ext.profile_mode.analysis.template" xreflabel="Template"><info><title>Diagnostic Template</title></info> + <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_<diagnostic></code>. @@ -912,21 +890,19 @@ advice sample </programlisting> </para></listitem> </itemizedlist> -</sect2> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.containers" xreflabel="Containers"><info><title>Containers</title></info> -<sect2 id="manual.ext.profile_mode.analysis.containers" - xreflabel="Containers"> -<title>Containers</title> <para> <emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_CONTAINERS</code>. </para> -<sect3 id="manual.ext.profile_mode.analysis.hashtable_too_small" - xreflabel="Hashtable Too Small"> -<title>Hashtable Too Small</title> +<section xml:id="manual.ext.profile_mode.analysis.hashtable_too_small" xreflabel="Hashtable Too Small"><info><title>Hashtable Too Small</title></info> + <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_HASHTABLE_TOO_SMALL</code>. @@ -964,12 +940,11 @@ foo.cc:1: advice: Changing initial unordered_set size from 10 to 1000000 saves 1 </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> -<sect3 id="manual.ext.profile_mode.analysis.hashtable_too_large" - xreflabel="Hashtable Too Large"> -<title>Hashtable Too Large</title> +<section xml:id="manual.ext.profile_mode.analysis.hashtable_too_large" xreflabel="Hashtable Too Large"><info><title>Hashtable Too Large</title></info> + <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_HASHTABLE_TOO_LARGE</code>. @@ -1010,11 +985,10 @@ bytes of memory and M iteration steps. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.inefficient_hash" xreflabel="Inefficient Hash"><info><title>Inefficient Hash</title></info> -<sect3 id="manual.ext.profile_mode.analysis.inefficient_hash" - xreflabel="Inefficient Hash"> -<title>Inefficient Hash</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_INEFFICIENT_HASH</code>. @@ -1057,11 +1031,10 @@ class dumb_hash { </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.vector_too_small" xreflabel="Vector Too Small"><info><title>Vector Too Small</title></info> -<sect3 id="manual.ext.profile_mode.analysis.vector_too_small" - xreflabel="Vector Too Small"> -<title>Vector Too Small</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_VECTOR_TOO_SMALL</code>. @@ -1098,11 +1071,10 @@ copying 4000000 bytes and 20 memory allocations and deallocations. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.vector_too_large" xreflabel="Vector Too Large"><info><title>Vector Too Large</title></info> -<sect3 id="manual.ext.profile_mode.analysis.vector_too_large" - xreflabel="Vector Too Large"> -<title>Vector Too Large</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_VECTOR_TOO_LARGE</code> @@ -1140,11 +1112,10 @@ bytes of memory and may reduce the number of cache and TLB misses. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.vector_to_hashtable" xreflabel="Vector to Hashtable"><info><title>Vector to Hashtable</title></info> -<sect3 id="manual.ext.profile_mode.analysis.vector_to_hashtable" - xreflabel="Vector to Hashtable"> -<title>Vector to Hashtable</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_VECTOR_TO_HASHTABLE</code>. @@ -1187,11 +1158,10 @@ comparisons. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.hashtable_to_vector" xreflabel="Hashtable to Vector"><info><title>Hashtable to Vector</title></info> -<sect3 id="manual.ext.profile_mode.analysis.hashtable_to_vector" - xreflabel="Hashtable to Vector"> -<title>Hashtable to Vector</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_HASHTABLE_TO_VECTOR</code>. @@ -1232,11 +1202,10 @@ indirections and may achieve better data locality. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.vector_to_list" xreflabel="Vector to List"><info><title>Vector to List</title></info> -<sect3 id="manual.ext.profile_mode.analysis.vector_to_list" - xreflabel="Vector to List"> -<title>Vector to List</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_VECTOR_TO_LIST</code>. @@ -1278,11 +1247,10 @@ operations. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.list_to_vector" xreflabel="List to Vector"><info><title>List to Vector</title></info> -<sect3 id="manual.ext.profile_mode.analysis.list_to_vector" - xreflabel="List to Vector"> -<title>List to Vector</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_LIST_TO_VECTOR</code>. @@ -1321,11 +1289,10 @@ memory references. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.list_to_slist" xreflabel="List to Forward List"><info><title>List to Forward List (Slist)</title></info> -<sect3 id="manual.ext.profile_mode.analysis.list_to_slist" - xreflabel="List to Forward List"> -<title>List to Forward List (Slist)</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_LIST_TO_SLIST</code>. @@ -1367,11 +1334,10 @@ foo.cc:1: advice: Change "list" to "forward_list". </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.assoc_ord_to_unord" xreflabel="Ordered to Unordered Associative Container"><info><title>Ordered to Unordered Associative Container</title></info> -<sect3 id="manual.ext.profile_mode.analysis.assoc_ord_to_unord" - xreflabel="Ordered to Unordered Associative Container"> -<title>Ordered to Unordered Associative Container</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_ORDERED_TO_UNORDERED</code>. @@ -1410,23 +1376,21 @@ foo.cc:1: advice: Change "list" to "forward_list". </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +</section> -</sect2> +<section xml:id="manual.ext.profile_mode.analysis.algorithms" xreflabel="Algorithms"><info><title>Algorithms</title></info> -<sect2 id="manual.ext.profile_mode.analysis.algorithms" - xreflabel="Algorithms"> -<title>Algorithms</title> <para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_ALGORITHMS</code>. </para> -<sect3 id="manual.ext.profile_mode.analysis.algorithms.sort" - xreflabel="Sorting"> -<title>Sort Algorithm Performance</title> +<section xml:id="manual.ext.profile_mode.analysis.algorithms.sort" xreflabel="Sorting"><info><title>Sort Algorithm Performance</title></info> + <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_SORT</code>. @@ -1437,10 +1401,10 @@ foo.cc:1: advice: Change "list" to "forward_list". </para></listitem> <listitem><para><emphasis>Fundamentals:</emphasis> See papers: - <ulink url="http://portal.acm.org/citation.cfm?doid=1065944.1065981"> - A framework for adaptive algorithm selection in STAPL</ulink> and - <ulink url="http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4228227"> - Optimizing Sorting with Machine Learning Algorithms</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://portal.acm.org/citation.cfm?doid=1065944.1065981"> + A framework for adaptive algorithm selection in STAPL</link> and + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4228227"> + Optimizing Sorting with Machine Learning Algorithms</link>. </para></listitem> <listitem><para><emphasis>Sample runtime reduction:</emphasis>60%. </para></listitem> @@ -1459,22 +1423,20 @@ foo.cc:1: advice: Change "list" to "forward_list". </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.analysis.locality" - xreflabel="Data Locality"> -<title>Data Locality</title> +<section xml:id="manual.ext.profile_mode.analysis.locality" xreflabel="Data Locality"><info><title>Data Locality</title></info> + <para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_LOCALITY</code>. </para> -<sect3 id="manual.ext.profile_mode.analysis.locality.sw_prefetch" - xreflabel="Need Software Prefetch"> -<title>Need Software Prefetch</title> +<section xml:id="manual.ext.profile_mode.analysis.locality.sw_prefetch" xreflabel="Need Software Prefetch"><info><title>Need Software Prefetch</title></info> + <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_SOFTWARE_PREFETCH</code>. @@ -1532,11 +1494,10 @@ foo.cc:7: advice: Insert prefetch instruction. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.locality.linked" xreflabel="Linked Structure Locality"><info><title>Linked Structure Locality</title></info> -<sect3 id="manual.ext.profile_mode.analysis.locality.linked" - xreflabel="Linked Structure Locality"> -<title>Linked Structure Locality</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_RBTREE_LOCALITY</code>. @@ -1548,8 +1509,8 @@ foo.cc:7: advice: Insert prefetch instruction. <listitem><para><emphasis>Fundamentals:</emphasis>Allocation can be tuned to a specific traversal pattern, to result in better data locality. See paper: - <ulink url="http://www.springerlink.com/content/8085744l00x72662/"> - Custom Memory Allocation for Free</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.springerlink.com/content/8085744l00x72662/"> + Custom Memory Allocation for Free</link>. </para></listitem> <listitem><para><emphasis>Sample runtime reduction:</emphasis>30%. </para></listitem> @@ -1593,14 +1554,13 @@ the allocation sequence or switching to a structure conscious allocator. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.analysis.mthread" - xreflabel="Multithreaded Data Access"> -<title>Multithreaded Data Access</title> +<section xml:id="manual.ext.profile_mode.analysis.mthread" xreflabel="Multithreaded Data Access"><info><title>Multithreaded Data Access</title></info> + <para> The diagnostics in this group are not meant to be implemented short term. @@ -1612,9 +1572,8 @@ the allocation sequence or switching to a structure conscious allocator. <code>_GLIBCXX_PROFILE_MULTITHREADED</code>. </para> -<sect3 id="manual.ext.profile_mode.analysis.mthread.ddtest" - xreflabel="Dependence Violations at Container Level"> -<title>Data Dependence Violations at Container Level</title> +<section xml:id="manual.ext.profile_mode.analysis.mthread.ddtest" xreflabel="Dependence Violations at Container Level"><info><title>Data Dependence Violations at Container Level</title></info> + <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_DDTEST</code>. @@ -1638,9 +1597,9 @@ the allocation sequence or switching to a structure conscious allocator. Keep a shadow for each container. Record iterator dereferences and container member accesses. Issue advice for elements referenced by multiple threads. - See paper: <ulink url="http://portal.acm.org/citation.cfm?id=207110.207148"> + See paper: <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://portal.acm.org/citation.cfm?id=207110.207148"> The LRPD test: speculative run-time parallelization of loops with - privatization and reduction parallelization</ulink>. + privatization and reduction parallelization</link>. </para></listitem> <listitem><para><emphasis>Cost model:</emphasis> Number of accesses to elements referenced from multiple threads @@ -1650,11 +1609,10 @@ the allocation sequence or switching to a structure conscious allocator. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> + +<section xml:id="manual.ext.profile_mode.analysis.mthread.false_share" xreflabel="False Sharing"><info><title>False Sharing</title></info> -<sect3 id="manual.ext.profile_mode.analysis.mthread.false_share" - xreflabel="False Sharing"> -<title>False Sharing</title> <itemizedlist> <listitem><para><emphasis>Switch:</emphasis> <code>_GLIBCXX_PROFILE_FALSE_SHARING</code>. @@ -1699,14 +1657,13 @@ sharing in multithreaded access at foo.cc:4. Detected N shared cache lines. </programlisting> </para></listitem> </itemizedlist> -</sect3> +</section> -</sect2> +</section> -<sect2 id="manual.ext.profile_mode.analysis.statistics" - xreflabel="Statistics"> -<title>Statistics</title> +<section xml:id="manual.ext.profile_mode.analysis.statistics" xreflabel="Statistics"><info><title>Statistics</title></info> + <para> <emphasis>Switch:</emphasis> @@ -1726,32 +1683,26 @@ sharing in multithreaded access at foo.cc:4. Detected N shared cache lines. of each operation actually performed on the container. </para> -</sect2> +</section> + +</section> -</sect1> +<bibliography xml:id="profile_mode.biblio"><info><title>Bibliography</title></info> -<bibliography id="profile_mode.biblio"> -<title>Bibliography</title> <biblioentry> - <title> + <citetitle> Perflint: A Context Sensitive Performance Advisor for C++ Programs - </title> + </citetitle> - <author> - <firstname>Lixia</firstname> - <surname>Liu</surname> - </author> - <author> - <firstname>Silvius</firstname> - <surname>Rus</surname> - </author> + <author><personname><firstname>Lixia</firstname><surname>Liu</surname></personname></author> + <author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname></author> <copyright> <year>2009</year> - <holder></holder> + <holder/> </copyright> <publisher> diff --git a/libstdc++-v3/doc/xml/manual/shared_ptr.xml b/libstdc++-v3/doc/xml/manual/shared_ptr.xml index 70e000dcc5b..4ef5f72b6a6 100644 --- a/libstdc++-v3/doc/xml/manual/shared_ptr.xml +++ b/libstdc++-v3/doc/xml/manual/shared_ptr.xml @@ -1,7 +1,8 @@ -<section id="std.util.memory.shared_ptr" xreflabel="shared_ptr"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.util.memory.shared_ptr" xreflabel="shared_ptr"> <?dbhtml filename="shared_ptr.html"?> -<sectioninfo> +<info><title>shared_ptr</title> <keywordset> <keyword> ISO C++ @@ -10,17 +11,17 @@ shared_ptr </keyword> </keywordset> -</sectioninfo> +</info> + -<title>shared_ptr</title> <para> The shared_ptr class template stores a pointer, usually obtained via new, and implements shared ownership semantics. </para> -<section id="shared_ptr.req"> -<title>Requirements</title> +<section xml:id="shared_ptr.req"><info><title>Requirements</title></info> + <para> </para> @@ -43,8 +44,8 @@ and implements shared ownership semantics. </para> </section> -<section id="shared_ptr.design_issues"> -<title>Design Issues</title> +<section xml:id="shared_ptr.design_issues"><info><title>Design Issues</title></info> + <para> @@ -67,11 +68,11 @@ technique known as type erasure. </section> -<section id="shared_ptr.impl"> -<title>Implementation</title> +<section xml:id="shared_ptr.impl"><info><title>Implementation</title></info> - <section> - <title>Class Hierarchy</title> + + <section><info><title>Class Hierarchy</title></info> + <para> A <classname>shared_ptr<T></classname> contains a pointer of @@ -88,7 +89,7 @@ resource. <term><classname>_Sp_counted_base<Lp></classname></term> <listitem> <para> -The base of the hierarchy is parameterized on the lock policy alone. +The base of the hierarchy is parameterized on the lock policy (see below.) _Sp_counted_base doesn't depend on the type of pointer being managed, it only maintains the reference counts and calls virtual functions when the counts drop to zero. The managed object is destroyed when the last @@ -158,18 +159,8 @@ that simplifies the implementation slightly. </section> - <section> - <title>Thread Safety</title> - - <para> -The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x -with support for rvalue-references and the other features from -N2351. As with other libstdc++ headers shared by TR1 and C++0x, -boost_shared_ptr.h uses conditional compilation, based on the macros -<constant>_GLIBCXX_INCLUDE_AS_CXX0X</constant> and -<constant>_GLIBCXX_INCLUDE_AS_TR1</constant>, to enable and disable -features. - </para> + <section><info><title>Thread Safety</title></info> + <para> C++0x-only features are: rvalue-ref/move support, allocator support, @@ -180,8 +171,8 @@ deprecated in C++0x mode. <para> The -<ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread -Safety</ulink> section of the Boost shared_ptr documentation says "shared_ptr +<link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm#ThreadSafety">Thread +Safety</link> section of the Boost shared_ptr documentation says "shared_ptr objects offer the same level of thread safety as built-in types." The implementation must ensure that concurrent updates to separate shared_ptr instances are correct even when those instances share a reference count e.g. @@ -234,8 +225,8 @@ Policy below for details. </section> - <section> - <title>Selecting Lock Policy</title> + <section><info><title>Selecting Lock Policy</title></info> + <para> </para> @@ -264,8 +255,8 @@ available policies are: </para> <para> Selected when GCC supports a builtin atomic compare-and-swap operation -on the target processor (see <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic -Builtins</ulink>.) The reference counts are maintained using a lock-free +on the target processor (see <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html">Atomic +Builtins</link>.) The reference counts are maintained using a lock-free algorithm and GCC's atomic builtins, which provide the required memory synchronisation. </para> @@ -302,27 +293,35 @@ used when libstdc++ is built without <literal>--enable-threads</literal>. </para> </section> - <section> - <title>Dual C++0x and TR1 Implementation</title> + <section><info><title>Dual C++0x and TR1 Implementation</title></info> + + +<para> +The interface of <classname>tr1::shared_ptr</classname> was extended for C++0x +with support for rvalue-references and the other features from N2351. +The <classname>_Sp_counted_base</classname> base class is implemented in +<filename>tr1/boost_sp_shared_count.h</filename> and is common to the TR1 +and C++0x versions of <classname>shared_ptr</classname>. +</para> <para> The classes derived from <classname>_Sp_counted_base</classname> (see Class Hierarchy -below) and <classname>__shared_count</classname> are implemented separately for C++0x -and TR1, in <filename>bits/boost_sp_shared_count.h</filename> and -<filename>tr1/boost_sp_shared_count.h</filename> respectively. All other classes -including <classname>_Sp_counted_base</classname> are shared by both implementations. +above) and <classname>__shared_count</classname> are implemented separately for C++0x +and TR1, in <filename>bits/shared_ptr.h</filename> and +<filename>tr1/shared_ptr.h</filename> respectively. </para> <para> The TR1 implementation is considered relatively stable, so is unlikely to change unless bug fixes require it. If the code that is common to both C++0x and TR1 modes needs to diverge further then it might be necessary to -duplicate additional classes and only make changes to the C++0x versions. +duplicate <classname>_Sp_counted_base</classname> and only make changes to +the C++0x version. </para> </section> -<section> -<title>Related functions and classes</title> +<section><info><title>Related functions and classes</title></info> + <variablelist> @@ -414,25 +413,25 @@ the following types, depending on how the shared_ptr is constructed. </listitem> --> -<section id="shared_ptr.using"> -<title>Use</title> +<section xml:id="shared_ptr.using"><info><title>Use</title></info> + - <section> - <title>Examples</title> + <section><info><title>Examples</title></info> + <para> Examples of use can be found in the testsuite, under - <filename class="directory">testsuite/tr1/2_general_utilities/shared_ptr</filename>. + <filename class="directory">testsuite/tr1/2_general_utilities/shared_ptr</filename>, + <filename class="directory">testsuite/20_util/shared_ptr</filename> + and + <filename class="directory">testsuite/20_util/weak_ptr</filename>. </para> </section> - <section> - <title>Unresolved Issues</title> + <section><info><title>Unresolved Issues</title></info> + <para> - The resolution to C++ Standard Library issue <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#674">674</ulink>, - "shared_ptr interface changes for consistency with N1856" will - need to be implemented after it is accepted into the working - paper. Issue <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#743">743</ulink> - might also require changes. + The <emphasis><classname>shared_ptr</classname> atomic access</emphasis> + clause in the C++0x working draft is not implemented in GCC. </para> <para> @@ -476,17 +475,12 @@ the following types, depending on how the shared_ptr is constructed. would alter the ABI. </para> - <para> - Exposing the alias constructor in TR1 mode could simplify the - *_pointer_cast functions. Constructor could be private in TR1 - mode, with the cast functions as friends. - </para> </section> </section> -<section id="shared_ptr.ack"> -<title>Acknowledgments</title> +<section xml:id="shared_ptr.ack"><info><title>Acknowledgments</title></info> + <para> The original authors of the Boost shared_ptr, which is really nice @@ -497,56 +491,48 @@ the following types, depending on how the shared_ptr is constructed. </section> -<bibliography id="shared_ptr.biblio"> -<title>Bibliography</title> +<bibliography xml:id="shared_ptr.biblio"><info><title>Bibliography</title></info> + <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm"> - <citetitle> - Improving shared_ptr for C++0x, Revision 2 - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2351.htm" class="uri"> </biblioid> + <citetitle> + Improving shared_ptr for C++0x, Revision 2 + </citetitle> <subtitle> N2351 </subtitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html"> - <citetitle> - C++ Standard Library Active Issues List - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2456.html" class="uri"> </biblioid> + <citetitle> + C++ Standard Library Active Issues List + </citetitle> <subtitle> N2456 </subtitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf"> - <citetitle> - Working Draft, Standard for Programming Language C++ - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2461.pdf" class="uri"> </biblioid> + <citetitle> + Working Draft, Standard for Programming Language C++ + </citetitle> <subtitle> N2461 </subtitle> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://boost.org/libs/smart_ptr/shared_ptr.htm">shared_ptr - <citetitle> - Boost C++ Libraries documentation, shared_ptr - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://boost.org/libs/smart_ptr/shared_ptr.htm" class="uri">shared_ptr </biblioid> + <citetitle> + Boost C++ Libraries documentation, shared_ptr + </citetitle> <subtitle> N2461 </subtitle> diff --git a/libstdc++-v3/doc/xml/manual/spine.xml b/libstdc++-v3/doc/xml/manual/spine.xml index 1c806ca18b8..808ca0341cd 100644 --- a/libstdc++-v3/doc/xml/manual/spine.xml +++ b/libstdc++-v3/doc/xml/manual/spine.xml @@ -1,19 +1,15 @@ -<?xml version='1.0'?> -<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<book id="manual-index"> +<book xmlns="http://docbook.org/ns/docbook" version="5.0" xml:id="manual-index"> <?dbhtml dir="manual"?> <?dbhtml filename="spine.html"?> -<title>The GNU C++ Library</title> -<bookinfo> + <title>The GNU C++ Library Manual</title> + +<info> <copyright> <year>2009</year> <year>2010</year> <holder> - <ulink url="http://www.fsf.org">FSF</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link> </holder> </copyright> <legalnotice> @@ -21,117 +17,101 @@ <link linkend="manual.intro.status.license">License</link> </para> </legalnotice> -</bookinfo> +</info> <!-- Part 01 : Intro --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="intro.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="intro.xml"> </xi:include> <!-- Part 02 : Standard Contents --> -<part id="manual.std" xreflabel="Standard Contents"> -<title> - Standard Contents -</title> +<part xml:id="manual.std" xreflabel="Standard Contents"> +<info> + <title> + Standard Contents + </title> +</info> + <!-- Chapter 01 : Support --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="support.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="support.xml"> </xi:include> <!-- Chapter 02 : Diagnostics --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="diagnostics.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="diagnostics.xml"> </xi:include> <!-- Chapter 03 : Utilities --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="utilities.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="utilities.xml"> </xi:include> <!-- Chapter 04 : Strings --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="strings.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="strings.xml"> </xi:include> <!-- Chapter 05 : Localization --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="localization.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="localization.xml"> </xi:include> <!-- Chapter 06 : Containers --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="containers.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="containers.xml"> </xi:include> <!-- Chapter 07 : Iterators --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="iterators.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="iterators.xml"> </xi:include> <!-- Chapter 08 : Algorithms --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="algorithms.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="algorithms.xml"> </xi:include> <!-- Chapter 09 : Numerics --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="numerics.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="numerics.xml"> </xi:include> <!-- Chapter 10 : Input Output --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="io.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="io.xml"> </xi:include> <!-- Chapter 11 : Atomics --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="atomics.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="atomics.xml"> </xi:include> <!-- Chapter 12 : Concurrency --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="concurrency.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="concurrency.xml"> </xi:include> </part> <!-- Part 03 : Extensions --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="extensions.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="extensions.xml"> </xi:include> <!-- Part 04 : Appendices --> -<part id="appendix" xreflabel="Appendices"> -<title> +<part xml:id="appendix" xreflabel="Appendices"><info><title> Appendices -</title> +</title></info> + <!-- Appendix A --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="appendix_contributing.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_contributing.xml"> </xi:include> <!-- Appendix B --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="appendix_porting.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_porting.xml"> </xi:include> <!-- Appendix C --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="appendix_free.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="appendix_free.xml"> </xi:include> <!-- Appendix D --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="../gnu/gpl-3.0.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/gpl-3.0.xml"> </xi:include> <!-- Appendix E --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="../gnu/fdl-1.2.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="../gnu/fdl-1.3.xml"> </xi:include> </part> diff --git a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml index c5e63fa977e..67f6f891df0 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx1998.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx1998.xml @@ -1,7 +1,8 @@ -<sect2 id="status.iso.1998" xreflabel="ISO C++ 1998"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="status.iso.1998" xreflabel="ISO C++ 1998"> <?dbhtml filename="status_iso_cxx1998.html"?> -<sect2info> +<info><title>C++ 1998/2003</title> <keywordset> <keyword> ISO C++ @@ -10,12 +11,11 @@ 1998 </keyword> </keywordset> -</sect2info> +</info> -<title>C++ 1998/2003</title> -<sect3 id="iso.1998.status" xreflabel="Implementation Status"> - <title>Implementation Status</title> +<section xml:id="iso.1998.status" xreflabel="Implementation Status"> +<info><title>Implementation Status</title></info> <para> This status table is based on the table of contents of ISO/IEC 14882:2003. @@ -35,13 +35,14 @@ particular release. Broken/Partial <?dbhtml bgcolor="#B0B0B0" ?> --> -<table frame='all'> -<title>C++ 1998/2003 Implementation Status</title> -<tgroup cols='4' align='left' colsep='0' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> +<table frame="all"> + <title>C++ 1998/2003 Implementation Status</title> + +<tgroup cols="4" align="left" colsep="0" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> <entry>Section</entry> @@ -65,25 +66,25 @@ particular release. <entry>18.1</entry> <entry>Types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.2</entry> <entry>Implementation properties</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.2.1</entry> <entry>Numeric Limits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.2.1.1</entry> <entry>Class template <code>numeric_limits</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.2.1.2</entry> @@ -104,85 +105,85 @@ particular release. <entry>18.2.1.5</entry> <entry><code>numeric_limits</code> specializations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.2.2</entry> <entry>C Library</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.3</entry> <entry>Start and termination</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.4</entry> <entry>Dynamic memory management</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.5</entry> <entry>Type identification</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.5.1</entry> <entry>Class type_info</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.5.2</entry> <entry>Class bad_cast</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.5.3</entry> <entry>Class bad_typeid</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.6</entry> <entry>Exception handling</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.6.1</entry> <entry>Class exception</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.6.2</entry> <entry>Violation exception-specifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.6.3</entry> <entry>Abnormal termination</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.6.4</entry> <entry><code>uncaught_exception</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.7</entry> <entry>Other runtime support</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -196,19 +197,19 @@ particular release. <entry>19.1</entry> <entry>Exception classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.2</entry> <entry>Assertions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.3</entry> <entry>Error numbers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -222,139 +223,139 @@ particular release. <entry>20.1</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.2</entry> <entry>Utility components</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>20.2.1</entry> <entry>Operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.2.2</entry> <entry><code>pair</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3</entry> <entry>Function objects</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>20.3.1</entry> <entry>Base</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.2</entry> <entry>Arithmetic operation</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.3</entry> <entry>Comparisons</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.4</entry> <entry>Logical operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.5</entry> <entry>Negators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.6</entry> <entry>Binders</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.7</entry> <entry>Adaptors for pointers to functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.8</entry> <entry>Adaptors for pointers to members</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4</entry> <entry>Memory</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>20.4.1</entry> <entry>The default allocator</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.2</entry> <entry>Raw storage iterator</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.3</entry> <entry>Temporary buffers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.4</entry> <entry>Specialized algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.4.1</entry> <entry><code>uninitialized_copy</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.4.2</entry> <entry><code>uninitialized_fill</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.4.3</entry> <entry><code>uninitialized_fill_n</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.5</entry> <entry>Class template <code>auto_ptr</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.4.6</entry> <entry>C library</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -367,50 +368,50 @@ particular release. <row> <entry>21.1</entry> <entry>Character traits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>21.1.1</entry> <entry>Character traits requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.1.2</entry> <entry>traits typedef</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.1.3</entry> <entry><code>char_traits</code> specializations</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>21.1.3.1</entry> <entry>struct <code>char_traits<char></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.1.3.2</entry> <entry>struct <code>char_traits<wchar_t></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.2</entry> <entry>String classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.3</entry> <entry>Class template <code>basic_string</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.4</entry> @@ -429,158 +430,158 @@ particular release. <row> <entry>22.1</entry> <entry>Locales</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.1.1</entry> <entry>Class <code>locale</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.1.2</entry> <entry><code>locale</code> globals</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.1.3</entry> <entry>Convenience interfaces</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.1.3.1</entry> <entry>Character classification</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.1.3.2</entry> <entry>Character conversions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2</entry> <entry>Standard locale categories</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.2.1</entry> <entry><code>ctype</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.2</entry> <entry>Numeric</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.2.2.1</entry> <entry><code>num_get</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.2.2</entry> <entry><code>num_put</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.3</entry> <entry><code>num_punct</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.4</entry> <entry><code>collate</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.5</entry> <entry>Time</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.2.5.1</entry> <entry><code>time_get</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.5.2</entry> <entry><code>time_get_byname</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.5.3</entry> <entry><code>time_put</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.5.3</entry> <entry><code>time_put_byname</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.6</entry> <entry>Monetary</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.2.6.1</entry> <entry><code>money_get</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.6.2</entry> <entry><code>money_put</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.6.3</entry> <entry><code>money_punct</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.6.4</entry> <entry><code>money_punct_byname</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.7</entry> <entry><code>messages</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2.8</entry> <entry>Program-defined facets</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.3</entry> <entry>C Library Locales</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -594,91 +595,91 @@ particular release. <entry>23.1</entry> <entry>Container requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2</entry> <entry>Sequence containers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>23.2.1</entry> <entry>Class template <code>deque</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2.2</entry> <entry>Class template <code>list</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2.3</entry> <entry>Adaptors</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>23.2.3.1</entry> <entry>Class template <code>queue</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2.3.2</entry> <entry>Class template <code>priority_queue</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2.3.3</entry> <entry>Class template <code>stack</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2.4</entry> <entry>Class template <code>vector</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.2.5</entry> <entry>Class <code>vector<bool></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3</entry> <entry>Associative containers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>23.3.1</entry> <entry>Class template <code>map</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.2</entry> <entry>Class template <code>multimap</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.3</entry> <entry>Class template <code>set</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.4</entry> <entry>Class template <code>multiset</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -692,67 +693,67 @@ particular release. <entry>24.1</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.2</entry> <entry>Header <code><iterator></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.3</entry> <entry>Iterator primitives</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.4</entry> <entry>Predefined iterators and Iterator adaptors</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>24.4.1</entry> <entry>Reverse iterators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.4.2</entry> <entry>Insert iterators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5</entry> <entry>Stream iterators</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>24.5.1</entry> <entry>Class template <code>istream_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5.2</entry> <entry>Class template <code>ostream_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5.3</entry> <entry>Class template <code>istreambuf_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5.4</entry> <entry>Class template <code>ostreambuf_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -766,25 +767,25 @@ particular release. <entry>25.1</entry> <entry>Non-modifying sequence operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>25.2</entry> <entry>Mutating sequence operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>25.3</entry> <entry>Sorting and related operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>25.4</entry> <entry>C library algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -798,115 +799,115 @@ particular release. <entry>26.1</entry> <entry>Numeric type requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.2</entry> <entry>Complex numbers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3</entry> <entry>Numeric arrays</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.3.1</entry> <entry>Header <code><valarray></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.2</entry> <entry>Class template <code>valarray</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.3</entry> <entry><code>valarray</code> non-member operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.4</entry> <entry>Class <code>slice</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.5</entry> <entry>Class template <code>slice_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.6</entry> <entry>Class <code>gslice</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.7</entry> <entry>Class template <code>gslice_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.8</entry> <entry>Class template <code>mask_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3.9</entry> <entry>Class template <code>indirect_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.4</entry> <entry>Generalized numeric operations</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.4.1</entry> <entry><code>accumulate</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.4.2</entry> <entry><code>inner_product</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.4.3</entry> <entry><code>partial_sum</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.4.4</entry> <entry><code>adjacent_difference</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.4.5</entry> <entry>iota</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5</entry> <entry>C Library</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -920,61 +921,61 @@ particular release. <entry>27.1</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.2</entry> <entry>Forward declarations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.3</entry> <entry>Standard iostream objects</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.3.1</entry> <entry>Narrow stream objects</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.3.2</entry> <entry>Wide stream objects</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.4</entry> <entry>Iostreams base classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.5</entry> <entry>Stream buffers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.6</entry> <entry>Formatting and manipulators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.7</entry> <entry>String-based streams</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.8</entry> <entry>File-based streams</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -987,53 +988,53 @@ particular release. <row> <entry>D.1</entry> <entry>Increment operator with bool operand</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.2</entry> <entry><code>static</code> keyword</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.3</entry> <entry>Access declarations</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.4</entry> <entry>Implicit conversion from const strings</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.5</entry> <entry>C standard library headers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.6</entry> <entry>Old iostreams members</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.7</entry> <entry>char* streams</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> </tbody> </tgroup> </table> -</sect3> +</section> -<sect3 id="iso.1998.specific" xreflabel="Implementation Specific"> - <title>Implementation Specific Behavior</title> +<section xml:id="iso.1998.specific" xreflabel="Implementation Specific"><info><title>Implementation Specific Behavior</title></info> + <para> The ISO standard defines the following phrase: @@ -1056,8 +1057,8 @@ particular release. </blockquote> <para> We do so here, for the C++ library only. Behavior of the - compiler, linker, runtime loader, and other elements of "the - implementation" are documented elsewhere. Everything listed + compiler, linker, runtime loader, and other elements of "the + implementation" are documented elsewhere. Everything listed in Annex B, Implementation Qualities, are also part of the compiler, not the library. </para> @@ -1104,13 +1105,13 @@ particular release. <code>std::type_info::name()</code> is the mangled type name (see the previous entry for more). </para> - <para><emphasis>[20.1.5]/5</emphasis> <emphasis>"Implementors are encouraged to + <para><emphasis>[20.1.5]/5</emphasis> <emphasis>"Implementors are encouraged to supply libraries that can accept allocators that encapsulate more general memory models and that support non-equal instances. In such implementations, any requirements imposed on allocators by containers beyond those requirements that appear in Table 32, and the semantics of containers and algorithms when allocator instances compare - non-equal, are implementation-defined."</emphasis> As yet we don't + non-equal, are implementation-defined."</emphasis> As yet we don't have any allocators which compare non-equal, so we can't describe how they behave. </para> @@ -1158,6 +1159,6 @@ particular release. a get area exists will... whatever <code>fflush()</code> does, I think. </para> -</sect3> +</section> -</sect2> +</section> diff --git a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml index d3ea5ca2c3a..4a74ea7aa46 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxx200x.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxx200x.xml @@ -1,7 +1,8 @@ -<sect2 id="status.iso.200x" xreflabel="Status C++ 200x"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="status.iso.200x" xreflabel="Status C++ 200x"> <?dbhtml filename="status_iso_cxx200x.html"?> -<sect2info> +<info><title>C++ 200x</title> <keywordset> <keyword> ISO C++ @@ -10,14 +11,12 @@ 200x </keyword> </keywordset> -</sect2info> - -<title>C++ 200x</title> +</info> <para> This table is based on the table of contents of ISO/IEC -Doc No: N3000=09-0190 Date: 2009-11-09 -Working Draft, Standard for Programming Language C++ +JTC1 SC22 WG21 Doc No: N3092 Date: 2010-03-26 +Final Committee Draft, Standard for Programming Language C++ </para> <para> @@ -44,13 +43,14 @@ particular release. Broken/Partial <?dbhtml bgcolor="#B0B0B0" ?> --> -<table frame='all'> +<table frame="all"> <title>C++ 200x Implementation Status</title> -<tgroup cols='4' align='left' colsep='0' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="0" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> <entry>Section</entry> @@ -61,6 +61,7 @@ particular release. </thead> <tbody> + <row> <entry> <emphasis>18</emphasis> @@ -74,33 +75,33 @@ particular release. <entry>18.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> <entry>18.2</entry> <entry>Types</entry> <entry>Partial</entry> - <entry>Missing offsetof, max_align_t, nullptr_t</entry> + <entry>Missing offsetof, max_align_t</entry> </row> <row> <entry>18.3</entry> <entry>Implementation properties</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.3.1</entry> <entry>Numeric Limits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.3.1.1</entry> <entry>Class template <code>numeric_limits</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> @@ -114,164 +115,150 @@ particular release. <entry>18.3.1.3</entry> <entry><code>float_round_style</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>18.3.1.4</entry> <entry><code>float_denorm_style</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.3.1.5</entry> <entry><code>numeric_limits</code> specializations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.3.2</entry> <entry>C Library</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.4</entry> <entry>Integer types</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.4.1</entry> <entry>Header <code><cstdint></code> synopsis</entry> <entry>Y</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#B0B0B0" ?> - <entry>18.4.2</entry> - <entry>The header <code><stdint.h></code></entry> - <entry>Partial</entry> - <entry>May use configure-generated stdint.h via GCC_HEADER_STDINT</entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> <entry>18.5</entry> <entry>Start and termination</entry> <entry>Partial</entry> - <entry>Missing quick_exit, at_quick_exit</entry> + <entry>C library dependency for quick_exit, at_quick_exit</entry> </row> <row> <entry>18.6</entry> <entry>Dynamic memory management</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.7</entry> <entry>Type identification</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.7.1</entry> <entry>Class type_info</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>18.7.2</entry> - <entry>Class type_index</entry> - <entry>N</entry> - <entry></entry> - </row> - <row> - <entry>18.7.3</entry> <entry>Class bad_cast</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>18.7.4</entry> + <entry>18.7.3</entry> <entry>Class bad_typeid</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.8</entry> <entry>Exception handling</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.8.1</entry> <entry>Class exception</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.8.2</entry> - <entry>Violation exception-specifications</entry> + <entry>Violating exception-specifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.8.3</entry> <entry>Abnormal termination</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.8.4</entry> <entry><code>uncaught_exception</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.8.5</entry> - <entry>Propagation</entry> + <entry>Exception Propagation</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.8.6</entry> - <entry>Class <code>nested_exception</code></entry> + <entry><code>nested_exception</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.9</entry> <entry>Initializer lists</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>18.9.1</entry> <entry>Initializer list constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.9.2</entry> <entry>Initializer list access</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>18.9.3</entry> - <entry>Initializer list concept maps</entry> + <entry>Initializer list range access</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>18.10</entry> <entry>Other runtime support</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -285,63 +272,61 @@ particular release. <entry>19.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.2</entry> <entry>Exception classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.3</entry> <entry>Assertions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.4</entry> <entry>Error numbers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.5</entry> <entry>System error support</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>19.5.1</entry> <entry>Class <code>error_category</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>19.5.2</entry> <entry>Class <code>error_code</code></entry> - <entry>Partial</entry> - <entry>Missing concept ErrorCodeEnum</entry> + <entry>Y</entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>19.5.3</entry> <entry>Class <code>error_condition</code></entry> - <entry>Partial</entry> - <entry>Missing concept ErrorConditionEnum</entry> + <entry>Y</entry> + <entry/> </row> <row> <entry>19.5.4</entry> <entry>Comparison operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>19.5.5</entry> <entry>Class <code>system_error</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -352,647 +337,616 @@ particular release. </entry> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>20.1</entry> <entry>General</entry> - <entry>Partial</entry> - <entry>Missing all concepts</entry> + <entry/> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>20.2</entry> - <entry>Concepts</entry> - <entry>N</entry> - <entry></entry> + <entry>Requirements</entry> + <entry/> + <entry/> </row> <row> <entry>20.3</entry> <entry>Utility components</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>20.3.1</entry> <entry>Operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.2</entry> - <entry><code>forward</code> and <code>move</code> helpers</entry> + <entry>Swap</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.3</entry> - <entry><code>pair</code></entry> + <entry><code>forward</code> and <code>move</code> helpers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>20.3.4</entry> - <entry>tuple-like access to <code>pair</code></entry> + <entry>Function template <code>declval</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>20.3.5</entry> - <entry>Range concept maps for <code>pair</code></entry> - <entry>N</entry> - <entry></entry> + <entry>Pairs</entry> + <entry/> + <entry/> </row> <row> - <entry>20.3.6</entry> - <entry>Class template <code>bitset</code></entry> + <entry>20.3.5.1</entry> + <entry>In general</entry> + <entry/> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry>20.3.5.2</entry> + <entry>Class template <code>pair</code></entry> <entry>Partial</entry> <entry>Missing constexpr</entry> </row> <row> + <entry>20.3.5.3</entry> + <entry>Tuple-like access to <code>pair</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.3.5.4</entry> + <entry><code>pair</code> range access</entry> + <entry>N</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.3.5.5</entry> + <entry>Piecewise construction</entry> + <entry>N</entry> + <entry/> + </row> + <row> <entry>20.4</entry> - <entry>Compile-time rational arithmetic</entry> - <entry></entry> - <entry></entry> + <entry>Tuples</entry> + <entry/> + <entry/> </row> <row> <entry>20.4.1</entry> - <entry>Class template <code>ratio</code></entry> - <entry>Y</entry> - <entry></entry> + <entry>In general</entry> + <entry/> + <entry/> </row> <row> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>20.4.2</entry> - <entry>Arithmetic on <code>ratio</code> types</entry> - <entry>Y</entry> - <entry></entry> + <entry>Class template <code>tuple</code></entry> + <entry>Partial</entry> + <entry>Missing constexpr and range access</entry> </row> <row> - <entry>20.4.3</entry> - <entry>Comparison of <code>ratio</code> types</entry> - <entry>Y</entry> - <entry></entry> + <entry>20.5</entry> + <entry>Class template <code>bitset</code></entry> + <entry>Partial</entry> + <entry>Missing constexpr</entry> + </row> + <row> + <entry>20.6</entry> + <entry>Compile-time rational arithmetic</entry> + <entry/> + <entry/> </row> <row> - <entry>20.4.4</entry> - <entry>SI types</entry> + <entry>20.6.1</entry> + <entry>Class template <code>ratio</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.5</entry> - <entry>Tuples</entry> - <entry></entry> - <entry></entry> + <entry>20.6.2</entry> + <entry>Arithmetic on <code>ratio</code> types</entry> + <entry>Y</entry> + <entry/> </row> <row> - <entry>20.5.1</entry> - <entry>General</entry> + <entry>20.6.3</entry> + <entry>Comparison of <code>ratio</code> types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> - <entry>20.5.2</entry> - <entry>Class template <code>tuple</code></entry> - <entry>Partial</entry> - <entry>Missing range concept maps</entry> + <entry>20.6.4</entry> + <entry>SI types for <code>ratio</code></entry> + <entry>Y</entry> + <entry/> </row> <row> - <entry>20.6</entry> + <entry>20.7</entry> <entry>Metaprogramming and type traits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.6.1</entry> + <entry>20.7.1</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> - <entry>20.6.2</entry> + <entry>20.7.2</entry> <entry>Header <code><type_traits></code> synopsis</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.6.3</entry> + <entry>20.7.3</entry> <entry>Helper classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.4</entry> + <entry>20.7.4</entry> <entry>Unary Type Traits</entry> - <entry></entry> - <entry></entry> + <entry>Y</entry> + <entry/> </row> <row> - <entry>20.6.4.1</entry> + <entry>20.7.4.1</entry> <entry>Primary type categories</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.4.2</entry> + <entry>20.7.4.2</entry> <entry>Composite type traits</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>20.6.4.3</entry> + <entry>20.7.4.3</entry> <entry>Type properties</entry> <entry>Partial</entry> - <entry>Missing is_system_layout</entry> + <entry>Missing is_trivially_copyable, is_literal_type, is_nothrow_constructible</entry> </row> <row> - <entry>20.6.5</entry> + <entry>20.7.5</entry> <entry>Relationships between types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.6</entry> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry>20.7.6</entry> <entry>Transformations between types</entry> - <entry></entry> - <entry></entry> + <entry>Partial</entry> + <entry>Missing underlying_type</entry> </row> <row> - <entry>20.6.6.1</entry> + <entry>20.7.6.1</entry> <entry>Const-volatile modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.6.2</entry> + <entry>20.7.6.2</entry> <entry>Reference modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.6.3</entry> + <entry>20.7.6.3</entry> <entry>Sign modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.6.4</entry> + <entry>20.7.6.4</entry> <entry>Array modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.6.6.5</entry> + <entry>20.7.6.5</entry> <entry>Pointer modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> - <entry>20.6.7</entry> + <entry>20.7.6.6</entry> <entry>Other transformations</entry> - <entry>Partial</entry> - <entry>Missing decay</entry> + <entry>Y</entry> + <entry/> </row> <row> - <entry>20.7</entry> + <entry>20.8</entry> <entry>Function objects</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.7.1</entry> + <entry>20.8.1</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.3</entry> - <entry>Base</entry> + <entry>20.8.2</entry> + <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.4</entry> - <entry>Function object return types</entry> + <entry>20.8.3</entry> + <entry>Base</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.5</entry> + <entry>20.8.4</entry> <entry>Class template <code>reference_wrapper</code></entry> <entry>Y</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.7.6</entry> - <entry>Identity operation</entry> - <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.7</entry> + <entry>20.8.5</entry> <entry>Arithmetic operation</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.8</entry> + <entry>20.8.6</entry> <entry>Comparisons</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.9</entry> + <entry>20.8.7</entry> <entry>Logical operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.10</entry> + <entry>20.8.8</entry> <entry>Bitwise operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.11</entry> + <entry>20.8.9</entry> <entry>Negators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.12</entry> - <entry>Template <code>function</code> and function template <code>bind</code></entry> + <entry>20.8.10</entry> + <entry>Function template <code>bind</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.13</entry> + <entry>20.8.11</entry> <entry>Adaptors for pointers to functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.14</entry> + <entry>20.8.12</entry> <entry>Adaptors for pointers to members</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.15</entry> + <entry>20.8.13</entry> <entry>Function template <code>mem_fn</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.16</entry> + <entry>20.8.14</entry> <entry>Polymorphic function wrappers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.7.16.1</entry> + <entry>20.8.14.1</entry> <entry>Class <code>bad_function_call</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.16.2</entry> + <entry>20.8.14.2</entry> <entry>Class template <code>function</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.7.17</entry> + <entry>20.8.15</entry> <entry>Class template <code>hash</code></entry> <entry>Y</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.7.18</entry> - <entry>Class template <code>reference_closure</code></entry> - <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8</entry> + <entry>20.9</entry> <entry>Memory</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.01</entry> + <entry>20.9.1</entry> <entry>Allocator argument tag</entry> <entry>N</entry> - <entry></entry> - </row> - <row> - <entry>20.8.02</entry> - <entry>Allocators</entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry>20.8.02.1</entry> - <entry>General</entry> - <entry>Y</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.02.2</entry> - <entry>Allocator concept</entry> - <entry>N</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.02.3</entry> - <entry>Support for legacy allocators</entry> - <entry>N</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.02.4</entry> - <entry>Allocator and Legacy Allocator members</entry> - <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.03</entry> - <entry>Allocator-related element concepts</entry> + <entry>20.9.2</entry> + <entry><code>uses_allocator</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.04</entry> - <entry>Allocator propagation traits</entry> + <entry>20.9.3</entry> + <entry>Pointer traits</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.05</entry> - <entry>Allocator propagation map</entry> + <entry>20.9.4</entry> + <entry>Allocator traits</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.06</entry> + <entry>20.9.5</entry> <entry>The default allocator</entry> <entry>Y</entry> - <entry></entry> - </row> - <row> - <entry>20.8.07</entry> - <entry>Scoped allocator adaptor</entry> - <entry></entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.07.1</entry> - <entry><code>scoped_allocator_adaptor_base</code></entry> - <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.07.2</entry> - <entry><code>scoped_allocator_adaptor constructors</code></entry> - <entry>N</entry> - <entry></entry> + <entry>20.9.6</entry> + <entry>Scoped allocator adaptor</entry> + <entry/> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.07.3</entry> - <entry><code>scoped_allocator_adaptor2</code></entry> + <entry>20.9.6.1</entry> + <entry>Scoped allocator adaptor member types</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.07.3</entry> - <entry>scoped_allocator_adaptor members</entry> + <entry>20.9.6.2</entry> + <entry>Scoped allocator adaptor constructors</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.07.4</entry> - <entry><code>scoped_allocator_adaptor globals</code></entry> + <entry>20.9.6.3</entry> + <entry>Scoped allocator adaptor members</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.08</entry> + <entry>20.9.7</entry> <entry>Raw storage iterator</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.09</entry> + <entry>20.9.8</entry> <entry>Temporary buffers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.10</entry> - <entry><code>construct_element</code></entry> - <entry>N</entry> - <entry></entry> - </row> - <row> - <entry>20.8.11</entry> + <entry>20.9.9</entry> <entry>Specialized algorithms</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.11.1</entry> + <entry>20.9.9.1</entry> <entry><code>addressof</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.11.2</entry> + <entry>20.9.9.2</entry> <entry><code>uninitialized_copy</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.11.3</entry> + <entry>20.9.9.3</entry> <entry><code>uninitialized_fill</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.11.4</entry> + <entry>20.9.9.4</entry> <entry><code>uninitialized_fill_n</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.12</entry> + <entry>20.9.10</entry> <entry>Class template <code>unique_ptr</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.13</entry> + <entry>20.9.11</entry> <entry>Smart pointers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.8.13.1</entry> + <entry>20.9.11.1</entry> <entry>Class <code>bad_weak_ptr</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.13.2</entry> + <entry>20.9.11.2</entry> <entry>Class template <code>shared_ptr</code></entry> <entry>Y</entry> <entry> <para> Uses code from - <ulink url="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</link>. </para> </entry> </row> <row> - <entry>20.8.13.3</entry> + <entry>20.9.11.3</entry> <entry>Class template <code>weak_ptr</code></entry> <entry>Y</entry> - <entry></entry> - </row> - <row> - <entry>20.8.13.4</entry> - <entry>Class template <code>owner_less</code></entry> - <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.13.5</entry> + <entry>20.9.11.4</entry> <entry>Class template <code>emable_shared_from_this</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>20.8.13.6</entry> + <entry>20.9.11.5</entry> <entry><code>shared_ptr</code> atomic access</entry> <entry>Partial</entry> - <entry></entry> + <entry/> + </row> + <row> + <entry>20.9.11.6</entry> + <entry>Hash support</entry> + <entry>Y</entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>20.8.13.7</entry> + <entry>20.9.12</entry> <entry>Pointer safety</entry> <entry>Partial</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>20.8.14</entry> + <entry>20.9.13</entry> <entry>Align</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.8.15</entry> + <entry>20.9.16</entry> <entry>C library</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.9</entry> + <entry>20.10</entry> <entry>Time utilities</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.9.1</entry> + <entry>20.10.1</entry> <entry>Clock requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.9.2</entry> + <entry>20.10.2</entry> <entry>Time-related traits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.9.2.1</entry> + <entry>20.10.2.1</entry> <entry><code>treat_as_floating_point</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.9.2.2</entry> + <entry>20.10.2.2</entry> <entry><code>duration_values</code></entry> <entry>Partial</entry> <entry>Missing constexpr</entry> </row> <row> - <entry>20.9.2.3</entry> + <entry>20.10.2.3</entry> <entry>Specializations of <code>common_type</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.9.3</entry> + <entry>20.10.3</entry> <entry>Class template <code>duration</code></entry> <entry>Partial</entry> <entry>Missing constexpr</entry> </row> <row> - <entry>20.9.4</entry> + <entry>20.10.4</entry> <entry>Class template <code>time_point</code></entry> <entry>Partial</entry> <entry>Missing constexpr</entry> </row> <row> - <entry>20.9.5</entry> + <entry>20.10.5</entry> <entry>Clocks</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <entry>20.9.5.1</entry> + <entry>20.10.5.1</entry> <entry>Class <code>system_clock</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.9.5.2</entry> + <entry>20.10.5.2</entry> <entry>Class <code>monotonic_clock</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.9.5.3</entry> + <entry>20.10.5.3</entry> <entry>Class <code>high_resolution_clock</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>20.10</entry> + <entry>20.11</entry> <entry>Date and time functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry>20.12</entry> + <entry>Class <code>type_index</code></entry> + <entry>N</entry> + <entry/> </row> <row> <entry> @@ -1006,31 +960,31 @@ particular release. <entry>21.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.2</entry> <entry>Character traits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>21.2.1</entry> <entry>Character traits requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.2.2</entry> - <entry>traits typedef</entry> + <entry>traits typedefs</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.2.3</entry> <entry><code>char_traits</code> specializations</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>21.2.3.1</entry> @@ -1060,22 +1014,28 @@ particular release. <entry>21.3</entry> <entry>String classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.4</entry> <entry>Class template <code>basic_string</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.5</entry> <entry>Numeric Conversions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>21.6</entry> + <entry>Hash support</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>21.7</entry> <entry>Null-terminated sequence utilities</entry> <entry>Y</entry> <entry>C library dependency</entry> @@ -1092,196 +1052,196 @@ particular release. <entry>22.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.2</entry> <entry>Header <code><locale></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.3</entry> <entry>Locales</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.3.1</entry> <entry>Class <code>locale</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.3.2</entry> <entry><code>locale</code> globals</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.3.3</entry> <entry>Convenience interfaces</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.3.3.1</entry> <entry>Character classification</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.3.3.2</entry> <entry>Conversions</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>22.3.3.2.1</entry> - <entry>Character</entry> + <entry>Character conversions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>22.3.3.2.2</entry> - <entry>String</entry> + <entry><code>string</code> conversions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>22.3.3.2.3</entry> - <entry>Buffer</entry> + <entry>Buffer conversions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4</entry> - <entry>Standard locale categories</entry> - <entry></entry> - <entry></entry> + <entry>Standard <code>locale</code> categories</entry> + <entry/> + <entry/> </row> <row> <entry>22.4.1</entry> - <entry><code>ctype</code></entry> + <entry>The <code>ctype</code> category</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.2</entry> - <entry>Numeric</entry> - <entry></entry> - <entry></entry> + <entry>The numeric category</entry> + <entry/> + <entry/> </row> <row> <entry>22.4.2.1</entry> <entry><code>num_get</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.2.2</entry> <entry><code>num_put</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.3</entry> - <entry><code>num_punct</code></entry> + <entry>The numeric punctuation facet</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.4</entry> - <entry><code>collate</code></entry> + <entry>The collate category</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.5</entry> - <entry>Time</entry> - <entry></entry> - <entry></entry> + <entry>The time category</entry> + <entry/> + <entry/> </row> <row> <entry>22.4.5.1</entry> - <entry><code>time_get</code></entry> + <entry>Class template <code>time_get</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.5.2</entry> - <entry><code>time_get_byname</code></entry> + <entry>Class template <code>time_get_byname</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.5.3</entry> - <entry><code>time_put</code></entry> + <entry>Class template <code>time_put</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.5.3</entry> - <entry><code>time_put_byname</code></entry> + <entry>Class template <code>time_put_byname</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.6</entry> - <entry>Monetary</entry> - <entry></entry> - <entry></entry> + <entry>The monetary category</entry> + <entry/> + <entry/> </row> <row> <entry>22.4.6.1</entry> - <entry><code>money_get</code></entry> + <entry>Class template <code>money_get</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.6.2</entry> - <entry><code>money_put</code></entry> + <entry>Class template <code>money_put</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.6.3</entry> - <entry><code>money_punct</code></entry> + <entry>Class template <code>money_punct</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.6.4</entry> - <entry><code>money_punct_byname</code></entry> + <entry>Class template <code>money_punct_byname</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.7</entry> - <entry><code>messages</code></entry> + <entry>The message retrieval category</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.4.8</entry> <entry>Program-defined facets</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>22.5</entry> <entry>Standard code conversion facets</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>22.6</entry> <entry>C Library Locales</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -1292,36 +1252,52 @@ particular release. </entry> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>23.1</entry> <entry>General</entry> - <entry>Partial</entry> - <entry>Missing concepts</entry> + <entry/> + <entry/> </row> <row> <entry>23.2</entry> <entry>Container requirements</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>23.2.1</entry> - <entry>General requirements</entry> - <entry>Partial</entry> - <entry>Missing construct_element</entry> + <entry>General container requirements</entry> + <entry>Y</entry> + <entry/> </row> <row> <entry>23.2.2</entry> <entry>Data races</entry> <entry>Y</entry> - <entry></entry> + <entry/> + </row> + <row> + <entry>23.2.3</entry> + <entry>Sequence containers</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>23.2.4</entry> + <entry>Associative containers</entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <entry>23.2.5</entry> + <entry>Unordered associative containers</entry> + <entry>Y</entry> + <entry/> </row> <row> <entry>23.3</entry> <entry>Sequence containers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>23.3.1</entry> @@ -1333,115 +1309,115 @@ particular release. <entry>23.3.2</entry> <entry>Class template <code>deque</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.3</entry> <entry>Class template <code>forward_list</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.4</entry> <entry>Class template <code>list</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.5</entry> - <entry>Adaptors</entry> - <entry></entry> - <entry></entry> + <entry>Container adaptors</entry> + <entry/> + <entry/> </row> <row> <entry>23.3.5.1</entry> <entry>Class template <code>queue</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.5.2</entry> <entry>Class template <code>priority_queue</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.5.3</entry> <entry>Class template <code>stack</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.6</entry> <entry>Class template <code>vector</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.3.7</entry> <entry>Class <code>vector<bool></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.4</entry> <entry>Associative containers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>23.4.1</entry> <entry>Class template <code>map</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.4.2</entry> <entry>Class template <code>multimap</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.4.3</entry> <entry>Class template <code>set</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.4.4</entry> <entry>Class template <code>multiset</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.5</entry> <entry>Unordered associative containers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>23.5.1</entry> <entry>Class template <code>unordered_map</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.5.2</entry> <entry>Class template <code>unordered_multimap</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.5.3</entry> <entry>Class template <code>unordered_set</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>23.5.4</entry> <entry>Class template <code>unordered_multiset</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -1452,109 +1428,89 @@ particular release. </entry> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>24.1</entry> <entry>General</entry> - <entry>Partial</entry> - <entry>Missing concepts</entry> + <entry>Y</entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>24.2</entry> - <entry>Iterator concepts</entry> - <entry>N</entry> - <entry></entry> + <entry>Iterator requirements</entry> + <entry>Y</entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>24.3</entry> <entry>Header <code><iterator></code> synopsis</entry> - <entry>Partial</entry> - <entry>Missing concepts</entry> + <entry>Y</entry> + <entry/> </row> <row> <entry>24.4</entry> - <entry>Iterator operations</entry> + <entry>Iterator primitives</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5</entry> - <entry>Predefined iterators and Iterator adaptors</entry> - <entry></entry> - <entry></entry> + <entry>Iterator adaptors</entry> + <entry/> + <entry/> </row> <row> <entry>24.5.1</entry> <entry>Reverse iterators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5.2</entry> <entry>Insert iterators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.5.3</entry> <entry>Move iterators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.6</entry> <entry>Stream iterators</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>24.6.1</entry> <entry>Class template <code>istream_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.6.2</entry> <entry>Class template <code>ostream_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.6.3</entry> <entry>Class template <code>istreambuf_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>24.6.4</entry> <entry>Class template <code>ostreambuf_iterator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>24.7</entry> - <entry>Insert iterators</entry> - <entry></entry> - <entry></entry> - </row> - <row> - <entry>24.7.1</entry> - <entry>Class template <code>back_insert_iterator</code></entry> - <entry>Y</entry> - <entry></entry> - </row> - <row> - <entry>24.7.3</entry> - <entry>Class template <code>front_insert_iterator</code></entry> - <entry>Y</entry> - <entry></entry> - </row> - <row> - <entry>24.7.5</entry> - <entry>Class template <code>insert_iterator</code></entry> - <entry>Y</entry> - <entry></entry> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry>24.6.5</entry> + <entry>range access</entry> + <entry>N</entry> + <entry/> </row> <row> <entry> @@ -1565,41 +1521,34 @@ particular release. </entry> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>25.1</entry> <entry>General</entry> - <entry>Partial</entry> - <entry>Missing concepts</entry> + <entry/> + <entry/> </row> <row> <entry>25.2</entry> - <entry>Header <code><algorithm></code> synopsis</entry> - <entry>Y</entry> - <entry></entry> - </row> - <row> - <entry>25.3</entry> <entry>Non-modifying sequence operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>25.4</entry> + <entry>25.3</entry> <entry>Mutating sequence operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>25.5</entry> + <entry>25.4</entry> <entry>Sorting and related operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>25.6</entry> + <entry>25.5</entry> <entry>C library algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -1613,19 +1562,19 @@ particular release. <entry>26.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.2</entry> <entry>Numeric type requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.3</entry> <entry>The floating-point environment</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.4</entry> @@ -1636,28 +1585,26 @@ particular release. <row> <entry>26.5</entry> <entry>Random number generation</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>26.5.1</entry> - <entry>Header <code><random></code> synopsis</entry> - <entry>Partial</entry> - <entry>Missing concepts</entry> + <entry>Requirements</entry> + <entry/> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>26.5.2</entry> - <entry>Concepts and related requirements</entry> - <entry>N</entry> - <entry></entry> + <entry>Header <code><random></code> synopsis</entry> + <entry/> + <entry/> </row> <row> <entry>26.5.3</entry> - <entry>Random number engines</entry> - <entry></entry> - <entry></entry> + <entry>Random number engine class templates</entry> + <entry/> + <entry/> </row> <row> <entry>26.5.3.1</entry> @@ -1679,9 +1626,9 @@ particular release. </row> <row> <entry>26.5.4</entry> - <entry>Random number engine adaptors</entry> - <entry></entry> - <entry></entry> + <entry>Random number engine adaptor class templates</entry> + <entry/> + <entry/> </row> <row> <entry>26.5.4.1</entry> @@ -1705,7 +1652,7 @@ particular release. <entry>26.5.5</entry> <entry>Engines and engine adaptors with predefined parameters</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.6</entry> @@ -1716,371 +1663,382 @@ particular release. <row> <entry>26.5.7</entry> <entry>Utilities</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.5.7.1</entry> <entry>Class <code>seed_seq</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.7.2</entry> - <entry>Function template generate_canonical</entry> + <entry>Function template <code>generate_canonical</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8</entry> - <entry>Random number distributions</entry> - <entry></entry> - <entry></entry> + <entry>Random number distribution class templates</entry> + <entry/> + <entry/> </row> <row> <entry>26.5.8.1</entry> <entry>Uniform distributions</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.5.8.1.1</entry> <entry>Class template <code>uniform_int_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.1.2</entry> <entry>Class template <code>uniform_real_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.2</entry> <entry>Bernoulli distributions</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.5.8.2.1</entry> <entry>Class <code>bernoulli_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.2.2</entry> <entry>Class template <code>binomial_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.2.3</entry> <entry>Class template <code>geometric_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.2.4</entry> <entry>Class template <code>negative_binomial_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.3</entry> <entry>Poisson distributions</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.5.8.3.1</entry> <entry>Class template <code>poisson_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.3.2</entry> <entry>Class template <code>exponential_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.3.3</entry> <entry>Class template <code>gamma_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.3.4</entry> <entry>Class template <code>weibull_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.3.5</entry> <entry>Class template <code>extreme_value_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.4</entry> <entry>Normal distributions</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.5.8.4.1</entry> <entry>Class template <code>normal_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.4.2</entry> <entry>Class template <code>lognormal_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.4.3</entry> <entry>Class template <code>chi_squared_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.4.4</entry> <entry>Class template <code>cauchy_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.4.5</entry> <entry>Class template <code>fisher_f_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.4.6</entry> <entry>Class template <code>student_t_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.5</entry> <entry>Sampling distributions</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.5.8.5.1</entry> <entry>Class template <code>discrete_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.5.2</entry> <entry>Class template <code>piecewise_constant_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.5.8.5.3</entry> <entry>Class template <code>piecewise_linear_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6</entry> <entry>Numeric arrays</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.6.1</entry> <entry>Header <code><valarray></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.2</entry> <entry>Class template <code>valarray</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.3</entry> <entry><code>valarray</code> non-member operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.4</entry> <entry>Class <code>slice</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.5</entry> <entry>Class template <code>slice_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.6</entry> - <entry>Class <code>gslice</code></entry> + <entry>The <code>gslice</code> class</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.7</entry> <entry>Class template <code>gslice_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.8</entry> <entry>Class template <code>mask_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.6.9</entry> <entry>Class template <code>indirect_array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#C8B0B0" ?> + <entry>26.6.10</entry> + <entry><code>valarray</code> range access</entry> + <entry>N</entry> + <entry/> </row> <row> <entry>26.7</entry> <entry>Generalized numeric operations</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>26.7.1</entry> <entry><code>accumulate</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.7.2</entry> <entry><code>inner_product</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.7.3</entry> <entry><code>partial_sum</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.7.4</entry> <entry><code>adjacent_difference</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.7.5</entry> <entry>iota</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>26.8</entry> <entry>C Library</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry> <emphasis>27</emphasis> </entry> <entry namest="c2" nameend="c4" align="left"> - <emphasis>Input/output</emphasis> + <emphasis>Input/output library</emphasis> </entry> </row> <row> <entry>27.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.2</entry> - <entry>Requirements</entry> + <entry>Iostreams requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.2.1</entry> - <entry>Imbue limitations</entry> + <entry>Imbue Limitations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.2.2</entry> - <entry>Positioning type limitations</entry> + <entry>Positioning Type Limitations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> <entry>27.2.3</entry> <entry>Thread safety</entry> <entry>Partial</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.3</entry> <entry>Forward declarations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.4</entry> <entry>Standard iostream objects</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.4.1</entry> <entry>Narrow stream objects</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>27.4.2</entry> <entry>Wide stream objects</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>27.5</entry> <entry>Iostreams base classes</entry> - <entry>Y</entry> - <entry></entry> + <entry>Partial</entry> + <entry>Missing move and swap operations</entry> </row> <row> <entry>27.6</entry> <entry>Stream buffers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>27.7</entry> <entry>Formatting and manipulators</entry> - <entry>Y</entry> - <entry></entry> + <entry>Partial</entry> + <entry>Missing move and swap operations</entry> </row> <row> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>27.8</entry> <entry>String-based streams</entry> - <entry>Y</entry> - <entry></entry> + <entry>Partial</entry> + <entry>Missing move and swap operations</entry> </row> <row> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>27.9</entry> <entry>File-based streams</entry> - <entry>Y</entry> - <entry></entry> + <entry>Partial</entry> + <entry>Missing move and swap operations</entry> </row> <row> <entry> @@ -2092,99 +2050,92 @@ particular release. </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.01</entry> + <entry>28.1</entry> <entry>General</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.02</entry> + <entry>28.2</entry> <entry>Definitions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.03</entry> + <entry>28.3</entry> <entry>Requirements</entry> <entry>N</entry> - <entry></entry> - </row> - <row> - <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.04</entry> - <entry>Regular expressions summary</entry> - <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.05</entry> + <entry>28.4</entry> <entry>Header <code><regex></code> synopsis</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> - <entry>28.06</entry> + <entry>28.5</entry> <entry>Namespace <code>std::regex_constants</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <entry>28.07</entry> + <entry>28.6</entry> <entry>Class <code>regex_error</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>28.08</entry> + <entry>28.7</entry> <entry>Class template <code>regex_traits</code></entry> <entry>Partial</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>28.09</entry> + <entry>28.8</entry> <entry>Class template <code>basic_regex</code></entry> <entry>Partial</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>28.10</entry> + <entry>28.9</entry> <entry>Class template <code>sub_match</code></entry> <entry>Partial</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> - <entry>28.11</entry> + <entry>28.10</entry> <entry>Class template <code>match_results</code></entry> <entry>Partial</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.12</entry> + <entry>28.11</entry> <entry>Regular expression algorithms</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.13</entry> + <entry>28.12</entry> <entry>Regular expression Iterators</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> - <entry>28.14</entry> + <entry>28.13</entry> <entry>Modified ECMAScript regular expression grammar</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -2198,20 +2149,20 @@ particular release. <entry>29.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>29.2</entry> <entry>Header <code><atomic></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>29.3</entry> <entry>Order and consistency</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>29.4</entry> @@ -2222,8 +2173,8 @@ particular release. <row> <entry>29.5</entry> <entry>Atomic types</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>29.5.1</entry> @@ -2247,20 +2198,20 @@ particular release. <entry>29.6</entry> <entry>Operations on atomic types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>29.7</entry> <entry>Flag Type and operations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>29.8</entry> <entry>Fences</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry> @@ -2274,197 +2225,206 @@ particular release. <entry>30.1</entry> <entry>General</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.2</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.3</entry> <entry>Threads</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> <entry>30.3.1</entry> <entry>Class <code>thread</code></entry> <entry>Partial</entry> - <entry>Missing futures</entry> + <entry><code>thread::id</code> is not trivially copyable</entry> </row> <row> <entry>30.3.2</entry> <entry>Namespace <code>this_thread</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4</entry> <entry>Mutual exclusion</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>30.4.1</entry> <entry>Mutex requirements</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>30.4.1.1</entry> <entry>Class <code>mutex</code></entry> <entry>Y</entry> - <entry></entry> + <entry>Missing constexpr</entry> </row> <row> <entry>30.4.1.2</entry> <entry>Class <code>recursive_mutex</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4.2</entry> <entry>Timed mutex requirements</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>30.4.2.1</entry> <entry>Class <code>timed_mutex</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4.2.2</entry> <entry>Class <code>recursive_timed_mutex</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4.3</entry> <entry>Locks</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>30.4.3.1</entry> <entry>Class template <code>lock_guard</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4.3.2</entry> <entry>Class template <code>unique_lock</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4.4</entry> <entry>Generic locking algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>30.4.5</entry> <entry>Call once</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>30.4.5.1</entry> <entry><code>once_flag</code></entry> - <entry>Partial</entry> + <entry>Y</entry> <entry>Missing constexpr</entry> </row> <row> <entry>30.4.5.2</entry> <entry><code>call_once</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>30.5</entry> <entry>Condition variables</entry> - <entry></entry> - <entry></entry> + <entry>Partial</entry> + <entry>Missing notify_all_at_thread_exit</entry> </row> <row> <entry>30.5.1</entry> <entry>Class <code>condition_variable</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#B0B0B0" ?> <entry>30.5.2</entry> <entry>Class <code>condition_variable_any</code></entry> - <entry>Partial</entry> - <entry></entry> + <entry>Y</entry> + <entry/> </row> <row> <entry>30.6</entry> <entry>Futures</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>30.6.1</entry> <entry>Overview</entry> - <entry>N</entry> - <entry></entry> + <entry/> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>30.6.2</entry> <entry>Error handling</entry> - <entry>N</entry> - <entry></entry> + <entry>Y</entry> + <entry>Missing constexpr</entry> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>30.6.3</entry> <entry>Class <code>future_error</code></entry> - <entry>N</entry> - <entry></entry> + <entry>Y</entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> <entry>30.6.4</entry> - <entry>Class template <code>unique_future</code></entry> - <entry>N</entry> - <entry></entry> + <entry>Associated asynchronous state</entry> + <entry>Y</entry> + <entry/> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>30.6.5</entry> - <entry>Class template <code>shared_future</code></entry> - <entry>N</entry> - <entry></entry> + <entry>Class template <code>promise</code></entry> + <entry>Partial</entry> + <entry>Missing <code>allocator_arg_t</code> and set_*_at_thread_exit</entry> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>30.6.6</entry> - <entry>Class template <code>promise</code></entry> - <entry>N</entry> - <entry></entry> + <entry>Class template <code>future</code></entry> + <entry>Partial</entry> + <entry>Missing future_status</entry> </row> <row> - <?dbhtml bgcolor="#C8B0B0" ?> + <?dbhtml bgcolor="#B0B0B0" ?> <entry>30.6.7</entry> - <entry>Allocator templates</entry> - <entry>N</entry> - <entry></entry> + <entry>Class template <code>shared_future</code></entry> + <entry>Partial</entry> + <entry>Missing future_status</entry> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>30.6.8</entry> - <entry>Class template <code>packaged_task</code></entry> + <entry>Class template <code>atomic_future</code></entry> <entry>N</entry> - <entry></entry> + <entry/> + </row> + <row> + <entry>30.6.9</entry> + <entry>Function template <code>async</code></entry> + <entry>Y</entry> + <entry/> + </row> + <row> + <?dbhtml bgcolor="#B0B0B0" ?> + <entry>30.6.10</entry> + <entry>Class template <code>packaged_task</code></entry> + <entry>Partial</entry> + <entry>Missing <code>allocator_arg_t</code> and make_ready_at_thread_exit</entry> </row> <row> <entry> @@ -2476,63 +2436,63 @@ particular release. </row> <row> <entry>D.1</entry> - <entry>Increment operator with bool operand</entry> - <entry></entry> - <entry></entry> + <entry>Increment operator with <code>bool</code> operand</entry> + <entry/> + <entry/> </row> <row> <entry>D.2</entry> <entry><code>static</code> keyword</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.3</entry> <entry>Access declarations</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>D.4</entry> - <entry>Implicit conversion from const strings</entry> - <entry></entry> - <entry></entry> + <entry><code>register</code> keyword</entry> + <entry/> + <entry/> </row> <row> <entry>D.5</entry> - <entry>C standard library headers</entry> - <entry></entry> - <entry></entry> + <entry>Dynamic exception specifications</entry> + <entry/> + <entry/> </row> <row> <entry>D.6</entry> - <entry>Old iostreams members</entry> - <entry></entry> - <entry></entry> + <entry>C standard library headers</entry> + <entry/> + <entry/> </row> <row> <entry>D.7</entry> - <entry>char* streams</entry> - <entry></entry> - <entry></entry> + <entry>Old iostreams members</entry> + <entry/> + <entry/> </row> <row> <entry>D.8</entry> - <entry>Binders</entry> - <entry></entry> - <entry></entry> + <entry>char* streams</entry> + <entry/> + <entry/> </row> <row> <entry>D.9</entry> - <entry><code>auto_ptr</code></entry> - <entry></entry> - <entry></entry> + <entry>Binders</entry> + <entry/> + <entry/> </row> <row> <entry>D.10</entry> - <entry>Iterator primitives</entry> - <entry></entry> - <entry></entry> + <entry><code>auto_ptr</code></entry> + <entry/> + <entry/> </row> </tbody> @@ -2540,4 +2500,4 @@ particular release. </table> -</sect2> +</section> diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml index 4d3650167e6..321c4ba269c 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml @@ -1,7 +1,8 @@ -<sect2 id="status.iso.tr1" xreflabel="Status C++ TR1"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="status.iso.tr1" xreflabel="Status C++ TR1"> <?dbhtml filename="status_iso_cxxtr1.html"?> -<sect2info> +<info><title>C++ TR1</title> <keywordset> <keyword> ISO C++ @@ -10,9 +11,7 @@ tr1 </keyword> </keywordset> -</sect2info> - -<title>C++ TR1</title> +</info> <para> This table is based on the table of contents of ISO/IEC DTR 19768 @@ -40,13 +39,14 @@ release. Broken/Partial <?dbhtml bgcolor="#B0B0B0" ?> --> -<table frame='all'> +<table frame="all"> <title>C++ TR1 Implementation Status</title> -<tgroup cols='4' align='left' colsep='0' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="0" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> @@ -64,77 +64,77 @@ release. <row> <entry>2.1</entry> <entry>Reference wrappers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>2.1.1</entry> <entry>Additions to header <code><functional></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.1.2</entry> <entry>Class template <code>reference_wrapper</code></entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>2.1.2.1</entry> <entry><code>reference_wrapper</code> construct/copy/destroy</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.1.2.2</entry> <entry><code>reference_wrapper</code> assignment</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.1.2.3</entry> <entry><code>reference_wrapper</code> access</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.1.2.4</entry> <entry><code>reference_wrapper</code> invocation</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.1.2.5</entry> <entry><code>reference_wrapper</code> helper functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2</entry> <entry>Smart pointers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>2.2.1</entry> <entry>Additions to header <code><memory></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.2</entry> <entry>Class <code>bad_weak_ptr</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3</entry> <entry>Class template <code>shared_ptr</code></entry> - <entry></entry> + <entry/> <entry> <para> Uses code from - <ulink url="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm">boost::shared_ptr</link>. </para> </entry> </row> @@ -142,115 +142,115 @@ release. <entry>2.2.3.1</entry> <entry><code>shared_ptr</code> constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.2</entry> <entry><code>shared_ptr</code> destructor</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.3</entry> <entry><code>shared_ptr</code> assignment</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.4</entry> <entry><code>shared_ptr</code> modifiers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.5</entry> <entry><code>shared_ptr</code> observers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.6</entry> <entry><code>shared_ptr</code> comparison</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.7</entry> <entry><code>shared_ptr</code> I/O</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.8</entry> <entry><code>shared_ptr</code> specialized algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.9</entry> <entry><code>shared_ptr</code> casts</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.3.10</entry> <entry><code>get_deleter</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4</entry> <entry>Class template <code>weak_ptr</code></entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>2.2.4.1</entry> <entry><code>weak_ptr</code> constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4.2</entry> <entry><code>weak_ptr</code> destructor</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4.3</entry> <entry><code>weak_ptr</code> assignment</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4.4</entry> <entry><code>weak_ptr</code> modifiers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4.5</entry> <entry><code>weak_ptr</code> observers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4.6</entry> <entry><code>weak_ptr</code> comparison</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.4.7</entry> <entry><code>weak_ptr</code> specialized algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>2.2.5</entry> <entry>Class template <code>enable_shared_from_this</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry><emphasis>3</emphasis></entry> @@ -260,133 +260,133 @@ release. <entry>3.1</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.2</entry> <entry>Additions to <code><functional> synopsis</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.3</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4</entry> <entry>Function return types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.5</entry> <entry>Function template <code>mem_fn</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.6</entry> <entry>Function object binders</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>3.6.1</entry> <entry>Class template <code>is_bind_expression</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.6.2</entry> <entry>Class template <code>is_placeholder</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.6.3</entry> <entry>Function template <code>bind</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.6.4</entry> <entry>Placeholders</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7</entry> <entry>Polymorphic function wrappers</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>3.7.1</entry> - <entry>Class <code>bad_function_call<code></code></code></entry> + <entry>Class <code>bad_function_call</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.1.1</entry> <entry><code>bad_function_call</code> constructor</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2</entry> <entry>Class template <code>function</code></entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>3.7.2.1</entry> <entry><code>function</code> construct/copy/destroy</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.2</entry> <entry><code>function</code> modifiers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.3</entry> <entry><code>function</code> capacity</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.4</entry> <entry><code>function</code> invocation</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.5</entry> <entry><code>function</code> target access</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.6</entry> <entry>undefined operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.7</entry> <entry>null pointer comparison operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.7.2.8</entry> <entry>specialized algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry><emphasis>4</emphasis></entry> @@ -396,97 +396,97 @@ release. <entry>4.1</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.2</entry> <entry>Header <code><type_traits></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.3</entry> <entry>Helper classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.4</entry> <entry>General Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.5</entry> <entry>Unary Type Traits</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>4.5.1</entry> <entry>Primary Type Categories</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.5.2</entry> <entry>Composite type traits</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.5.3</entry> <entry>Type properties</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.6</entry> <entry>Relationships between types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.7</entry> <entry>Transformations between types</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>4.7.1</entry> <entry>Const-volatile modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.7.2</entry> <entry>Reference modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.7.3</entry> <entry>Array modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.7.4</entry> <entry>Pointer modifications</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.8</entry> <entry>Other transformations</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>4.9</entry> <entry>Implementation requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry><emphasis>5</emphasis></entry> @@ -495,62 +495,62 @@ release. <row> <entry>5.1</entry> <entry>Random number generation</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>5.1.1</entry> <entry>Requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.2</entry> <entry>Header <code><random></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.3</entry> <entry>Class template <code>variate_generator</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4</entry> <entry>Random number engine class templates</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4.1</entry> <entry>Class template <code>linear_congruential</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4.2</entry> <entry>Class template <code>mersenne_twister</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4.3</entry> <entry>Class template <code>subtract_with_carry</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4.4</entry> <entry>Class template <code>subtract_with_carry_01</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4.5</entry> <entry>Class template <code>discard_block</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.4.6</entry> @@ -562,229 +562,229 @@ release. <entry>5.1.5</entry> <entry>Engines with predefined parameters</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.6</entry> <entry>Class <code>random_device</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7</entry> <entry>Random distribution class templates</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.1</entry> <entry>Class template <code>uniform_int</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.2</entry> <entry>Class <code>bernoulli_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.3</entry> <entry>Class template <code>geometric_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.4</entry> <entry>Class template <code>poisson_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.5</entry> <entry>Class template <code>binomial_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.6</entry> <entry>Class template <code>uniform_real</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.7</entry> <entry>Class template <code>exponential_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.8</entry> <entry>Class template <code>normal_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.1.7.9</entry> <entry>Class template <code>gamma_distribution</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2</entry> <entry>Mathematical special functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1</entry> <entry>Additions to header <code><cmath></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.1</entry> <entry>associated Laguerre polynomials</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.2</entry> <entry>associated Legendre functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.3</entry> <entry>beta function</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.4</entry> <entry>(complete) elliptic integral of the first kind</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.5</entry> <entry>(complete) elliptic integral of the second kind</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.6</entry> <entry>(complete) elliptic integral of the third kind</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.7</entry> <entry>confluent hypergeometric functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.8</entry> <entry>regular modified cylindrical Bessel functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.9</entry> <entry>cylindrical Bessel functions (of the first kind)</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.10</entry> <entry>irregular modified cylindrical Bessel functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.11</entry> <entry>cylindrical Neumann functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.12</entry> <entry>(incomplete) elliptic integral of the first kind</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.13</entry> <entry>(incomplete) elliptic integral of the second kind</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.14</entry> <entry>(incomplete) elliptic integral of the third kind</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.15</entry> <entry>exponential integral</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.16</entry> <entry>Hermite polynomials</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.17</entry> <entry>hypergeometric functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.18</entry> <entry>Laguerre polynomials</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.19</entry> <entry>Legendre polynomials</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.20</entry> <entry>Riemann zeta function</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.21</entry> <entry>spherical Bessel functions (of the first kind)</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.22</entry> <entry>spherical associated Legendre functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.1.23</entry> <entry>spherical Neumann functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>5.2.2</entry> <entry>Additions to header <code><math.h></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry><emphasis>6</emphasis></entry> @@ -794,236 +794,236 @@ release. <entry>6.1</entry> <entry>Tuple types</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.1</entry> <entry>Header <code><tuple></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.2</entry> <entry>Additions to header <code><utility></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.3</entry> <entry>Class template <code>tuple</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.3.1</entry> <entry>Construction</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.3.2</entry> <entry>Tuple creation functions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.3.3</entry> <entry>Tuple helper classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.3.4</entry> <entry>Element access</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.3.5</entry> <entry>Relational operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.1.4</entry> <entry>Pairs</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2</entry> <entry>Fixed size array</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.1</entry> <entry>Header <code><array></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.2</entry> <entry>Class template <code>array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.2.1</entry> <entry><code>array</code> constructors, copy, and assignment</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.2.2</entry> <entry><code>array</code> specialized algorithms</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.2.3</entry> <entry><code>array</code> size</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.2.4</entry> <entry>Zero sized <code>array</code>s</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.2.2.5</entry> <entry>Tuple interface to class template <code>array</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3</entry> <entry>Unordered associative containers</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.1</entry> <entry>Unordered associative container requirements</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.1.1</entry> <entry>Exception safety guarantees</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.2</entry> <entry>Additions to header <code><functional></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.3</entry> <entry>Class template <code>hash</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4</entry> <entry>Unordered associative container classes</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.1</entry> <entry>Header <code><unordered_set></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.2</entry> <entry>Header <code><unordered_map></code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.3</entry> <entry>Class template <code>unordered_set</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.3.1</entry> <entry><code>unordered_set</code> constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.3.2</entry> <entry><code>unordered_set</code> swap</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.4</entry> <entry>Class template <code>unordered_map</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.4.1</entry> <entry><code>unordered_map</code> constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.4.2</entry> <entry><code>unordered_map</code> element access</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.4.3</entry> <entry><code>unordered_map</code> swap</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.5</entry> - <entry>Class template <code>unordered_multiset<code></code></code></entry> + <entry>Class template <code>unordered_multiset</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.5.1</entry> <entry><code>unordered_multiset</code> constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.5.2</entry> <entry><code>unordered_multiset</code> swap</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.6</entry> <entry>Class template <code>unordered_multimap</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.6.1</entry> <entry><code>unordered_multimap</code> constructors</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>6.3.4.6.2</entry> <entry><code>unordered_multimap</code> swap</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry><emphasis>7</emphasis></entry> @@ -1034,322 +1034,322 @@ release. <entry>7.1</entry> <entry>Definitions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.2</entry> <entry>Requirements</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.3</entry> <entry>Regular expressions summary</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.4</entry> <entry>Header <code><regex></code> synopsis</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.5</entry> <entry>Namespace <code>tr1::regex_constants</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.5.1</entry> <entry>Bitmask Type <code>syntax_option_type</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.5.2</entry> <entry>Bitmask Type <code>regex_constants::match_flag_type</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.5.3</entry> <entry>Implementation defined <code>error_type</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.6</entry> <entry>Class <code>regex_error</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.7</entry> <entry>Class template <code>regex_traits</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8</entry> <entry>Class template <code>basic_regex</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.1</entry> <entry><code>basic_regex</code> constants</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.2</entry> <entry><code>basic_regex</code> constructors</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.3</entry> <entry><code>basic_regex</code> assign</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.4</entry> <entry><code>basic_regex</code> constant operations</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.5</entry> <entry><code>basic_regex</code> locale</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.6</entry> <entry><code>basic_regex</code> swap</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.7</entry> <entry><code>basic_regex</code> non-member functions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.8.7.1</entry> <entry><code>basic_regex</code> non-member swap</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.9</entry> <entry>Class template <code>sub_match</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.9.1</entry> <entry><code>sub_match</code> members</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.9.2</entry> <entry><code>sub_match</code> non-member operators</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10</entry> <entry>Class template <code>match_results</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10.1</entry> <entry><code>match_results</code> constructors</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10.2</entry> <entry><code>match_results</code> size</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10.3</entry> <entry><code>match_results</code> element access</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10.4</entry> <entry><code>match_results</code> formatting</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10.5</entry> <entry><code>match_results</code> allocator</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.10.6</entry> <entry><code>match_results</code> swap</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.11</entry> <entry>Regular expression algorithms</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.11.1</entry> <entry>exceptions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.11.2</entry> <entry><code>regex_match</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.11.3</entry> <entry><code>regex_search</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.11.4</entry> <entry><code>regex_replace</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12</entry> <entry>Regular expression Iterators</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.1</entry> <entry>Class template <code>regex_iterator</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.1.1</entry> <entry><code>regex_iterator</code> constructors</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.1.2</entry> <entry><code>regex_iterator</code> comparisons</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.1.3</entry> <entry><code>regex_iterator</code> dereference</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.1.4</entry> <entry><code>regex_iterator</code> increment</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.2</entry> <entry>Class template <code>regex_token_iterator</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.2.1</entry> <entry><code>regex_token_iterator</code> constructors</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.2.2</entry> <entry><code>regex_token_iterator</code> comparisons</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.2.3</entry> <entry><code>regex_token_iterator</code> dereference</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.12.2.4</entry> <entry><code>regex_token_iterator</code> increment</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>7.13</entry> <entry>Modified ECMAScript regular expression grammar</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry><emphasis>8</emphasis></entry> @@ -1359,61 +1359,61 @@ release. <entry>8.1</entry> <entry>Additions to header <code><complex></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.2</entry> <entry>Function <code>acos</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.3</entry> <entry>Function <code>asin</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.4</entry> <entry>Function <code>atan</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.5</entry> <entry>Function <code>acosh</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.6</entry> <entry>Function <code>asinh</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.7</entry> <entry>Function <code>atanh</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.8</entry> <entry>Function <code>fabs</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.1.9</entry> <entry>Additional Overloads</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> @@ -1433,88 +1433,88 @@ release. <entry>8.4</entry> <entry>Additions to header <code><cctype></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.4.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.4.2</entry> <entry>Function <code>isblank</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.5</entry> <entry>Additions to header <code><ctype.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.6</entry> <entry>Header <code><cfenv></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.6.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.6.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.7</entry> <entry>Header <code><fenv.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.8</entry> <entry>Additions to header <code><cfloat></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.9</entry> <entry>Additions to header <code><float.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>8.10</entry> <entry>Additions to header <code><ios></code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>8.10.1</entry> <entry>Synopsis</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>8.10.2</entry> <entry>Function <code>hexfloat</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.11</entry> <entry>Header <code><cinttypes></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.11.1</entry> @@ -1526,56 +1526,56 @@ release. <entry>8.11.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.12</entry> <entry>Header <code><inttypes.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.13</entry> <entry>Additions to header <code><climits></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.14</entry> <entry>Additions to header <code><limits.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>8.15</entry> <entry>Additions to header <code><locale></code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.16</entry> <entry>Additions to header <code><cmath></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.16.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.16.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.16.3</entry> <entry>Function template definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.16.4</entry> @@ -1587,73 +1587,73 @@ release. <entry>8.17</entry> <entry>Additions to header <code><math.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.18</entry> <entry>Additions to header <code><cstdarg></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.19</entry> <entry>Additions to header <code><stdarg.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.20</entry> <entry>The header <code><cstdbool></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.21</entry> <entry>The header <code><stdbool.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.22</entry> <entry>The header <code><cstdint></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.22.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.22.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.23</entry> <entry>The header <code><stdint.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.24</entry> <entry>Additions to header <code><cstdio></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.24.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.24.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.24.3</entry> @@ -1665,43 +1665,43 @@ release. <entry>8.24.4</entry> <entry>Additions to header <code><stdio.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.25</entry> <entry>Additions to header <code><cstdlib></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.25.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.25.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.25.3</entry> <entry>Function <code>abs</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.25.4</entry> <entry>Function <code>div</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.26</entry> <entry>Additions to header <code><stdlib.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.27</entry> @@ -1725,19 +1725,19 @@ release. <entry>8.30</entry> <entry>Additions to header <code><cwchar></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.30.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.30.2</entry> <entry>Definitions</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.30.3</entry> @@ -1749,34 +1749,34 @@ release. <entry>8.31</entry> <entry>Additions to header <code><wchar.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.32</entry> <entry>Additions to header <code><cwctype></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.32.1</entry> <entry>Synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.32.2</entry> <entry>Function <code>iswblank</code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>8.33</entry> <entry>Additions to header <code><wctype.h></code></entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> </tbody> </tgroup> </table> -</sect2> +</section> diff --git a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml index f3b29b9bf36..997e76be18f 100644 --- a/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml +++ b/libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml @@ -1,15 +1,14 @@ -<sect2 id="status.iso.tr24733" xreflabel="Status C++ TR24733"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="status.iso.tr24733" xreflabel="Status C++ TR24733"> <?dbhtml filename="status_iso_cxxtr24733.html"?> -<sect2info> +<info><title>C++ TR 24733</title> <keywordset> <keyword> TR 24733 </keyword> </keywordset> -</sect2info> - -<title>C++ TR 24733</title> +</info> <para> This table is based on the table of contents of @@ -32,13 +31,14 @@ particular release. Broken/Partial <?dbhtml bgcolor="#B0B0B0" ?> --> -<table frame='all'> +<table frame="all"> <title>C++ TR 24733 Implementation Status</title> -<tgroup cols='4' align='left' colsep='0' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="0" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <thead> <row> <entry>Section</entry> @@ -88,14 +88,14 @@ particular release. <row> <entry>3.1</entry> <entry>Characteristics of decimal floating-point types</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>3.2</entry> <entry>Decimal Types</entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> @@ -129,157 +129,157 @@ particular release. <entry>3.2.5</entry> <entry>Initialization from coefficient and exponent</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.2.6</entry> <entry>Conversion to generic floating-point type</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.2.7</entry> <entry>Unary arithmetic operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.2.8</entry> <entry>Binary arithmetic operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.2.9</entry> <entry>Comparison operators</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.2.10</entry> <entry>Formatted input</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.2.11</entry> <entry>Formatted output</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.3</entry> <entry>Additions to header <code>limits</code></entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4</entry> <entry>Headers <code>cfloat</code> and <code>float.h</code></entry> - <entry></entry> - <entry></entry> + <entry/> + <entry/> </row> <row> <entry>3.4.2</entry> <entry>Additions to header <code>cfloat</code> synopsis</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#B0B0B0" ?> <entry>3.4.3</entry> <entry>Additions to header <code>float.h</code> synopsis</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4.4</entry> <entry>Maximum finite value</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4.5</entry> <entry>Epsilon</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4.6</entry> <entry>Minimum positive normal value</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4.7</entry> <entry>Minimum positive subnormal value</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <entry>3.4.8</entry> <entry>Evaluation format</entry> <entry>Y</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.5</entry> <entry>Additions to <code>cfenv</code> and <code>fenv.h</code></entry> <entry>Outside the scope of GCC</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.6</entry> <entry>Additions to <code>cmath</code> and <code>math.h</code></entry> <entry>Outside the scope of GCC</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.7</entry> <entry>Additions to <code>cstdio</code> and <code>stdio.h</code></entry> <entry>Outside the scope of GCC</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.8</entry> <entry>Additions to <code>cstdlib</code> and <code>stdlib.h</code></entry> <entry>Outside the scope of GCC</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.9</entry> <entry>Additions to <code>cwchar</code> and <code>wchar.h</code></entry> <entry>Outside the scope of GCC</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.10</entry> <entry>Facets</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.11</entry> <entry>Type traits</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> <?dbhtml bgcolor="#C8B0B0" ?> <entry>3.12</entry> <entry>Hash functions</entry> <entry>N</entry> - <entry></entry> + <entry/> </row> <row> @@ -296,4 +296,4 @@ particular release. </table> -</sect2> +</section> diff --git a/libstdc++-v3/doc/xml/manual/strings.xml b/libstdc++-v3/doc/xml/manual/strings.xml index 412484e8ef2..4d9fc64f766 100644 --- a/libstdc++-v3/doc/xml/manual/strings.xml +++ b/libstdc++-v3/doc/xml/manual/strings.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.strings" xreflabel="Strings"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.strings" xreflabel="Strings"> <?dbhtml filename="strings.html"?> -<chapterinfo> +<info><title> + Strings + <indexterm><primary>Strings</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,25 +14,20 @@ library </keyword> </keywordset> -</chapterinfo> - -<title> - Strings - <indexterm><primary>Strings</primary></indexterm> -</title> +</info> <!-- Sect1 01 : Character Traits --> <!-- Sect1 02 : String Classes --> -<sect1 id="std.strings.string" xreflabel="string"> - <title>String Classes</title> +<section xml:id="std.strings.string" xreflabel="string"><info><title>String Classes</title></info> + - <sect2 id="strings.string.simple" xreflabel="Simple Transformations"> - <title>Simple Transformations</title> + <section xml:id="strings.string.simple" xreflabel="Simple Transformations"><info><title>Simple Transformations</title></info> + <para> Here are Standard, simple, and portable ways to perform common transformations on a <code>string</code> instance, such as - "convert to all upper case." The word transformations + "convert to all upper case." The word transformations is especially apt, because the standard template function <code>transform<></code> is used. </para> @@ -90,8 +84,8 @@ are overloaded names (declared in <code><cctype></code> and <code><locale></code>) so the template-arguments for <code>transform<></code> cannot be deduced, as explained in - <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this - message</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-11/msg00180.html">this + message</link>. <!-- section 14.8.2.4 clause 16 in ISO 14882:1998 --> At minimum, you can write short wrappers like </para> @@ -122,14 +116,14 @@ optimize named temporaries out of existence. </para> - </sect2> - <sect2 id="strings.string.case" xreflabel="Case Sensitivity"> - <title>Case Sensitivity</title> + </section> + <section xml:id="strings.string.case" xreflabel="Case Sensitivity"><info><title>Case Sensitivity</title></info> + <para> </para> <para>The well-known-and-if-it-isn't-well-known-it-ought-to-be - <ulink url="http://www.gotw.ca/gotw/">Guru of the Week</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gotw.ca/gotw/">Guru of the Week</link> discussions held on Usenet covered this topic in January of 1998. Briefly, the challenge was, <quote>write a 'ci_string' class which is identical to the standard 'string' class, but is @@ -149,34 +143,33 @@ <para>The solution is surprisingly easy. The original answer was posted on Usenet, and a revised version appears in Herb Sutter's - book <emphasis>Exceptional C++</emphasis> and on his website as <ulink url="http://www.gotw.ca/gotw/029.htm">GotW 29</ulink>. + book <emphasis>Exceptional C++</emphasis> and on his website as <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.gotw.ca/gotw/029.htm">GotW 29</link>. </para> <para>See? Told you it was easy!</para> <para> <emphasis>Added June 2000:</emphasis> The May 2000 issue of C++ - Report contains a fascinating <ulink - url="http://lafstern.org/matt/col2_new.pdf"> article</ulink> by + Report contains a fascinating <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://lafstern.org/matt/col2_new.pdf"> article</link> by Matt Austern (yes, <emphasis>the</emphasis> Matt Austern) on why case-insensitive comparisons are not as easy as they seem, and why creating a class is the <emphasis>wrong</emphasis> way to go about it in production code. (The GotW answer mentions one of the principle difficulties; his article mentions more.) </para> - <para>Basically, this is "easy" only if you ignore some things, + <para>Basically, this is "easy" only if you ignore some things, things which may be too important to your program to ignore. (I chose to ignore them when originally writing this entry, and am surprised that nobody ever called me on it...) The GotW question and answer remain useful instructional tools, however. </para> <para><emphasis>Added September 2000:</emphasis> James Kanze provided a link to a - <ulink url="http://www.unicode.org/reports/tr21/tr21-5.html">Unicode - Technical Report discussing case handling</ulink>, which provides some + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.unicode.org/reports/tr21/tr21-5.html">Unicode + Technical Report discussing case handling</link>, which provides some very good information. </para> - </sect2> - <sect2 id="strings.string.character_types" xreflabel="Arbitrary Characters"> - <title>Arbitrary Character Types</title> + </section> + <section xml:id="strings.string.character_types" xreflabel="Arbitrary Characters"><info><title>Arbitrary Character Types</title></info> + <para> </para> @@ -231,24 +224,24 @@ built-in types. </para> <para>If you want to use your own special character class, then you have - <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html">a lot - of work to do</ulink>, especially if you with to use i18n features + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00163.html">a lot + of work to do</link>, especially if you with to use i18n features (facets require traits information but don't have a traits argument). </para> - <para>Another example of how to specialize char_traits was given <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html">on the - mailing list</ulink> and at a later date was put into the file <code> + <para>Another example of how to specialize char_traits was given <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00260.html">on the + mailing list</link> and at a later date was put into the file <code> include/ext/pod_char_traits.h</code>. We agree that the way it's used with basic_string (scroll down to main()) - doesn't look nice, but that's because <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html">the - nice-looking first attempt</ulink> turned out to <ulink url="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html">not - be conforming C++</ulink>, due to the rule that CharT must be a POD. + doesn't look nice, but that's because <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00236.html">the + nice-looking first attempt</link> turned out to <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/libstdc++/2002-08/msg00242.html">not + be conforming C++</link>, due to the rule that CharT must be a POD. (See how tricky this is?) </para> - </sect2> + </section> - <sect2 id="strings.string.token" xreflabel="Tokenizing"> - <title>Tokenizing</title> + <section xml:id="strings.string.token" xreflabel="Tokenizing"><info><title>Tokenizing</title></info> + <para> </para> <para>The Standard C (and C++) function <code>strtok()</code> leaves a lot to @@ -256,7 +249,7 @@ destroys the character string on which it operates, and it requires you to handle all the memory problems. But it does let the client code decide what to use to break the string into pieces; it allows - you to choose the "whitespace," so to speak. + you to choose the "whitespace," so to speak. </para> <para>A C++ implementation lets us keep the good things and fix those annoyances. The implementation here is more intuitive (you only @@ -345,9 +338,9 @@ stringtok(Container &container, string const &in, </para> - </sect2> - <sect2 id="strings.string.shrink" xreflabel="Shrink to Fit"> - <title>Shrink to Fit</title> + </section> + <section xml:id="strings.string.shrink" xreflabel="Shrink to Fit"><info><title>Shrink to Fit</title></info> + <para> </para> <para>From GCC 3.4 calling <code>s.reserve(res)</code> on a @@ -366,12 +359,16 @@ stringtok(Container &container, string const &in, entry</link>) but the regular copy constructor cannot be used because libstdc++'s <code>string</code> is Copy-On-Write. </para> + <para>In <link linkend="status.iso.200x">C++0x</link> mode you can call + <code>s.shrink_to_fit()</code> to achieve the same effect as + <code>s.reserve(s.size())</code>. + </para> - </sect2> + </section> - <sect2 id="strings.string.Cstring" xreflabel="CString (MFC)"> - <title>CString (MFC)</title> + <section xml:id="strings.string.Cstring" xreflabel="CString (MFC)"><info><title>CString (MFC)</title></info> + <para> </para> @@ -383,8 +380,8 @@ stringtok(Container &container, string const &in, are relying on special functions offered by the CString class. </para> <para>Things are not as bad as they seem. In - <ulink url="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this - message</ulink>, Joe Buck points out a few very important things: + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc/1999-04n/msg00236.html">this + message</link>, Joe Buck points out a few very important things: </para> <itemizedlist> <listitem><para>The Standard <code>string</code> supports all the operations @@ -481,8 +478,8 @@ stringtok(Container &container, string const &in, </para></listitem> </itemizedlist> - </sect2> -</sect1> + </section> +</section> <!-- Sect1 03 : Interacting with C --> diff --git a/libstdc++-v3/doc/xml/manual/support.xml b/libstdc++-v3/doc/xml/manual/support.xml index 20b5b726eed..2cb7205bd44 100644 --- a/libstdc++-v3/doc/xml/manual/support.xml +++ b/libstdc++-v3/doc/xml/manual/support.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.support" xreflabel="Support"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.support" xreflabel="Support"> <?dbhtml filename="support.html"?> -<chapterinfo> +<info><title> + Support + <indexterm><primary>Support</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,12 +14,7 @@ library </keyword> </keywordset> -</chapterinfo> - -<title> - Support - <indexterm><primary>Support</primary></indexterm> -</title> +</info> <para> This part deals with the functions called and objects created @@ -34,11 +28,11 @@ kind of support a C++ program gets from the Standard Library. </para> -<sect1 id="std.support.types" xreflabel="Types"> +<section xml:id="std.support.types" xreflabel="Types"><info><title>Types</title></info> <?dbhtml filename="fundamental_types.html"?> - <title>Types</title> - <sect2 id="std.support.types.fundamental" xreflabel="Fundamental Types"> - <title>Fundamental Types</title> + + <section xml:id="std.support.types.fundamental" xreflabel="Fundamental Types"><info><title>Fundamental Types</title></info> + <para> C++ has the following builtin types: </para> @@ -98,9 +92,9 @@ instead, use a POD. </para> - </sect2> - <sect2 id="std.support.types.numeric_limits" xreflabel="Numeric Properties"> - <title>Numeric Properties</title> + </section> + <section xml:id="std.support.types.numeric_limits" xreflabel="Numeric Properties"><info><title>Numeric Properties</title></info> + <para> @@ -108,8 +102,7 @@ traits classes to give access to various implementation defined-aspects of the fundamental types. The traits classes -- fourteen in total -- are all specializations of the template class - <classname>numeric_limits</classname>, documented <ulink - url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html">here</ulink> + <classname>numeric_limits</classname>, documented <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00593.html">here</link> and defined as follows: </para> @@ -153,10 +146,10 @@ static const float_round_style round_style; }; </programlisting> - </sect2> + </section> - <sect2 id="std.support.types.null" xreflabel="NULL"> - <title>NULL</title> + <section xml:id="std.support.types.null" xreflabel="NULL"><info><title>NULL</title></info> + <para> The only change that might affect people is the type of <constant>NULL</constant>: while it is required to be a macro, @@ -166,7 +159,7 @@ <para> For <command>g++</command>, <constant>NULL</constant> is - <programlisting>#define</programlisting>'d to be + <code>#define</code>'d to be <constant>__null</constant>, a magic keyword extension of <command>g++</command>. </para> @@ -180,25 +173,24 @@ <constant>NULL</constant> is always a pointer.) </para> - <para>In his book <ulink - url="http://www.awprofessional.com/titles/0-201-92488-9/"><emphasis>Effective - C++</emphasis></ulink>, Scott Meyers points out that the best way + <para>In his book <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.awprofessional.com/titles/0-201-92488-9/"><emphasis>Effective + C++</emphasis></link>, Scott Meyers points out that the best way to solve this problem is to not overload on pointer-vs-integer types to begin with. He also offers a way to make your own magic <constant>NULL</constant> that will match pointers before it matches integers. </para> <para>See - <ulink url="http://www.awprofessional.com/titles/0-201-31015-5/">the - Effective C++ CD example</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.awprofessional.com/titles/0-201-31015-5/">the + Effective C++ CD example</link> </para> - </sect2> + </section> -</sect1> +</section> -<sect1 id="std.support.memory" xreflabel="Dynamic Memory"> +<section xml:id="std.support.memory" xreflabel="Dynamic Memory"><info><title>Dynamic Memory</title></info> <?dbhtml filename="dynamic_memory.html"?> - <title>Dynamic Memory</title> + <para> There are six flavors each of <function>new</function> and <function>delete</function>, so make certain that you're using the right @@ -211,7 +203,7 @@ people are used to using </para></listitem> <listitem><para> - Single object "nothrow" form, returning NULL on errors + Single object "nothrow" form, returning NULL on errors </para></listitem> <listitem><para> Array <function>new</function>, throwing @@ -276,16 +268,15 @@ <classname>bad_alloc</classname> is derived from the base <classname>exception</classname> class defined in Sect1 19. </para> -</sect1> +</section> -<sect1 id="std.support.termination" xreflabel="Termination"> +<section xml:id="std.support.termination" xreflabel="Termination"><info><title>Termination</title></info> <?dbhtml filename="termination.html"?> - <title>Termination</title> - <sect2 id="support.termination.handlers" xreflabel="Termination Handlers"> - <title>Termination Handlers</title> + + <section xml:id="support.termination.handlers" xreflabel="Termination Handlers"><info><title>Termination Handlers</title></info> + <para> - Not many changes here to <filename - class="headerfile">cstdlib</filename>. You should note that the + Not many changes here to <filename class="headerfile">cstdlib</filename>. You should note that the <function>abort()</function> function does not call the destructors of automatic nor static objects, so if you're depending on those to do cleanup, it isn't going to happen. @@ -298,7 +289,7 @@ funky, too, until you look closer. Basically, three points to remember are: </para> - <orderedlist> + <orderedlist inheritnum="ignore" continuation="restarts"> <listitem> <para> Static objects are destroyed in reverse order of their creation. @@ -342,11 +333,11 @@ those slots. If you think you may run out, we recommend using the <function>xatexit</function>/<function>xexit</function> combination from <literal>libiberty</literal>, which has no such limit. </para> - </sect2> + </section> - <sect2 id="support.termination.verbose" xreflabel="Verbose Terminate Handler"> + <section xml:id="support.termination.verbose" xreflabel="Verbose Terminate Handler"><info><title>Verbose Terminate Handler</title></info> <?dbhtml filename="verbose_termination.html"?> - <title>Verbose Terminate Handler</title> + <para> If you are having difficulty with uncaught exceptions and want a little bit of help debugging the causes of the core dumps, you can @@ -446,7 +437,7 @@ int main(int argc) an unspecified manner. </para> - </sect2> -</sect1> + </section> +</section> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/test.xml b/libstdc++-v3/doc/xml/manual/test.xml index 6c0f266d349..006ff332086 100644 --- a/libstdc++-v3/doc/xml/manual/test.xml +++ b/libstdc++-v3/doc/xml/manual/test.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.intro.setup.test" xreflabel="Testing"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.intro.setup.test" xreflabel="Testing"> <?dbhtml filename="test.html"?> -<sect1info> +<info><title>Test</title> <keywordset> <keyword> ISO C++ @@ -25,20 +26,18 @@ exception safety </keyword> </keywordset> -</sect1info> - -<title>Test</title> +</info> <para> The libstdc++ testsuite includes testing for standard conformance, regressions, ABI, and performance. </para> -<sect2 id="test.organization" xreflabel="Test Organization"> -<title>Organization</title> +<section xml:id="test.organization" xreflabel="Test Organization"><info><title>Organization</title></info> + + +<section xml:id="test.organization.layout" xreflabel="Directory Layout"><info><title>Directory Layout</title></info> -<sect3 id="test.organization.layout" xreflabel="Directory Layout"> -<title>Directory Layout</title> <para> The directory <emphasis>libsrcdir/testsuite</emphasis> contains the @@ -131,11 +130,11 @@ util Files for libtestc++, utilities and testing routines. All new tests should be written with the policy of one test case, one file in mind. </para> -</sect3> +</section> + +<section xml:id="test.organization.naming" xreflabel="Naming Conventions"><info><title>Naming Conventions</title></info> -<sect3 id="test.organization.naming" xreflabel="Naming Conventions"> -<title>Naming Conventions</title> <para> In addition, there are some special names and suffixes that are @@ -225,15 +224,15 @@ cat 27_io/objects/char/3_xin.in | a.out </listitem> </itemizedlist> -</sect3> -</sect2> +</section> +</section> -<sect2 id="test.run" xreflabel="Running the Testsuite"> -<title>Running the Testsuite</title> +<section xml:id="test.run" xreflabel="Running the Testsuite"><info><title>Running the Testsuite</title></info> - <sect3 id="test.run.basic"> - <title>Basic</title> + + <section xml:id="test.run.basic"><info><title>Basic</title></info> + <para> You can check the status of the build without installing it @@ -259,18 +258,16 @@ cat 27_io/objects/char/3_xin.in | a.out <para> Archives of test results for various versions and platforms are - available on the GCC website in the <ulink - url="http://gcc.gnu.org/gcc-4.3/buildstat.html">build - status</ulink> section of each individual release, and are also - archived on a daily basis on the <ulink - url="http://gcc.gnu.org/ml/gcc-testresults/current">gcc-testresults</ulink> + available on the GCC website in the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/gcc-4.3/buildstat.html">build + status</link> section of each individual release, and are also + archived on a daily basis on the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc-testresults/current">gcc-testresults</link> mailing list. Please check either of these places for a similar combination of source version, operating system, and host CPU. </para> - </sect3> + </section> - <sect3 id="test.run.variations"> - <title>Variations</title> + <section xml:id="test.run.variations"><info><title>Variations</title></info> + <para> There are several options for running tests, including testing the regression tests, testing a subset of the regression tests, @@ -470,13 +467,12 @@ runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite please email the main libstdc++ mailing list if you see something odd or have questions. </para> - </sect3> + </section> - <sect3 id="test.run.permutations"> - <title>Permutations</title> + <section xml:id="test.run.permutations"><info><title>Permutations</title></info> + <para> - To run the libstdc++ test suite under the <link - linkend="manual.ext.debug_mode">debug mode</link>, edit + To run the libstdc++ test suite under the <link linkend="manual.ext.debug_mode">debug mode</link>, edit <filename>libstdc++-v3/scripts/testsuite_flags</filename> to add the compile-time flag <constant>-D_GLIBCXX_DEBUG</constant> to the result printed by the <literal>--build-cxx</literal> @@ -500,11 +496,11 @@ runtest --tool libstdc++ --srcdir=/path/to/gcc/libstdc++-v3/testsuite set to <constant>-D_GLIBCXX_DEBUG</constant> or <constant>-D_GLIBCXX_PARALLEL</constant>. </para> - </sect3> -</sect2> + </section> +</section> + +<section xml:id="test.new_tests"><info><title>Writing a new test case</title></info> -<sect2 id="test.new_tests"> -<title>Writing a new test case</title> <para> The first step in making a new test case is to choose the correct @@ -632,14 +628,14 @@ up in the normal.exp file. <para> More examples can be found in the libstdc++-v3/testsuite/*/*.cc files. </para> -</sect2> +</section> + +<section xml:id="test.harness" xreflabel="Test Harness and Utilities"><info><title>Test Harness and Utilities</title></info> -<sect2 id="test.harness" xreflabel="Test Harness and Utilities"> -<title>Test Harness and Utilities</title> -<sect3 id="test.harness.dejagnu"> -<title>Dejagnu Harness Details</title> +<section xml:id="test.harness.dejagnu"><info><title>Dejagnu Harness Details</title></info> + <para> Underlying details of testing for conformance and regressions are abstracted via the GNU Dejagnu package. This is similar to the @@ -682,10 +678,10 @@ board" information unique to this library. This is currently unused and sets only default variables. </para> -</sect3> +</section> + +<section xml:id="test.harness.utils"><info><title>Utilities</title></info> -<sect3 id="test.harness.utils"> -<title>Utilities</title> <para> </para> <para> @@ -800,24 +796,24 @@ only default variables. </itemizedlist> </listitem> </itemizedlist> -</sect3> +</section> -</sect2> +</section> -<sect2 id="test.special"> -<title>Special Topics</title> +<section xml:id="test.special"><info><title>Special Topics</title></info> -<sect3 id="test.exception.safety"> -<title> + +<section xml:id="test.exception.safety"><info><title> Qualifying Exception Safety Guarantees <indexterm> <primary>Test</primary> <secondary>Exception Safety</secondary> </indexterm> -</title> +</title></info> + + +<section xml:id="test.exception.safety.overview"><info><title>Overview</title></info> -<sect4 id="test.exception.safety.overview"> -<title>Overview</title> <para> Testing is composed of running a particular test sequence, @@ -856,13 +852,13 @@ only default variables. potential error paths have been exercised in a sequential manner. </para> -</sect4> +</section> -<sect4 id="test.exception.safety.status"> -<title> +<section xml:id="test.exception.safety.status"><info><title> Existing tests -</title> +</title></info> + <itemizedlist> <listitem> @@ -924,13 +920,13 @@ as the allocator type. </para> </listitem> </itemizedlist> -</sect4> +</section> -<sect4 id="test.exception.safety.containers"> -<title> +<section xml:id="test.exception.safety.containers"><info><title> C++0x Requirements Test Sequence Descriptions -</title> +</title></info> + <itemizedlist> <listitem> @@ -1030,10 +1026,10 @@ C++0x Requirements Test Sequence Descriptions </listitem> </itemizedlist> -</sect4> +</section> -</sect3> +</section> -</sect2> +</section> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/using.xml b/libstdc++-v3/doc/xml/manual/using.xml index e4863c2e4dc..e3400a678c1 100644 --- a/libstdc++-v3/doc/xml/manual/using.xml +++ b/libstdc++-v3/doc/xml/manual/using.xml @@ -1,21 +1,15 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="manual.intro.using" xreflabel="Using"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.intro.using" xreflabel="Using"> + <info><title>Using</title></info> <?dbhtml filename="using.html"?> -<title>Using</title> - - - <sect1 id="manual.intro.using.flags" xreflabel="Flags"> - <title>Command Options</title> + <section xml:id="manual.intro.using.flags" xreflabel="Flags"><info><title>Command Options</title></info> + <para> The set of features available in the GNU C++ library is shaped by - several <ulink url="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC - Command Options</ulink>. Options that impact libstdc++ are + several <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc-4.3.2//gcc/Invoking-GCC.html">GCC + Command Options</link>. Options that impact libstdc++ are enumerated and detailed in the table below. </para> @@ -23,11 +17,12 @@ By default, <command>g++</command> is equivalent to <command>g++ -std=gnu++98</command>. The standard library also defaults to this dialect. </para> - <table frame='all'> + <table frame="all"> <title>C++ Command Options</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <thead> <row> @@ -82,19 +77,19 @@ </tgroup> </table> - </sect1> + </section> - <sect1 id="manual.intro.using.headers" xreflabel="Headers"> + <section xml:id="manual.intro.using.headers" xreflabel="Headers"><info><title>Headers</title></info> <?dbhtml filename="using_headers.html"?> - <title>Headers</title> + - <sect2 id="manual.intro.using.headers.all" xreflabel="Header Files"> - <title>Header Files</title> + <section xml:id="manual.intro.using.headers.all" xreflabel="Header Files"><info><title>Header Files</title></info> + <para> The C++ standard specifies the entire set of header files that must be available to all hosted implementations. Actually, the - word "files" is a misnomer, since the contents of the + word "files" is a misnomer, since the contents of the headers don't necessarily have to be in any kind of external file. The only rule is that when one <code>#include</code>'s a header, the contents of that header become available, no matter @@ -121,14 +116,15 @@ C++98/03 include files. These are available in the default compilation mode, i.e. <code>-std=c++98</code> or <code>-std=gnu++98</code>. </para> -<table frame='all'> +<table frame="all"> <title>C++ 1998 Library Headers</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> <entry><filename class="headerfile">algorithm</filename></entry> @@ -180,15 +176,16 @@ </tgroup> </table> -<para></para> -<table frame='all'> +<para/> +<table frame="all"> <title>C++ 1998 Library Headers for C Library Facilities</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> <entry><filename class="headerfile">cassert</filename></entry> @@ -225,15 +222,16 @@ C++0x include files. These are only available in C++0x compilation mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>. </para> -<para></para> -<table frame='all'> +<para/> +<table frame="all"> <title>C++ 200x Library Headers</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> @@ -309,16 +307,17 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>. </tgroup> </table> -<para></para> +<para/> -<table frame='all'> +<table frame="all"> <title>C++ 200x Library Headers for C Library Facilities</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> <entry><filename class="headerfile">cassert</filename></entry> @@ -368,14 +367,15 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>. In addition, TR1 includes as: </para> -<table frame='all'> +<table frame="all"> <title>C++ TR 1 Library Headers</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> @@ -400,17 +400,18 @@ mode, i.e. <literal>-std=c++0x</literal> or <literal>-std=gnu++0x</literal>. </tgroup> </table> -<para></para> +<para/> -<table frame='all'> +<table frame="all"> <title>C++ TR 1 Library Headers for C Library Facilities</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> @@ -445,10 +446,11 @@ compiler supports scalar decimal floating-point types defined via <code>__attribute__((mode(SD|DD|LD)))</code>. </para> -<table frame='all'> +<table frame="all"> <title>C++ TR 24733 Decimal Floating-Point Header</title> -<tgroup cols='1' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> + +<tgroup cols="1" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> <tbody> <row> <entry><filename class="headerfile">decimal/decimal</filename></entry> @@ -461,11 +463,12 @@ compiler supports scalar decimal floating-point types defined via Also included are files for the C++ ABI interface: </para> -<table frame='all'> +<table frame="all"> <title>C++ ABI Headers</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <tbody> <row><entry><filename class="headerfile">cxxabi.h</filename></entry><entry><filename class="headerfile">cxxabi_forced.h</filename></entry></row> </tbody> @@ -476,14 +479,15 @@ compiler supports scalar decimal floating-point types defined via And a large variety of extensions. </para> -<table frame='all'> +<table frame="all"> <title>Extension Headers</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> @@ -536,16 +540,17 @@ compiler supports scalar decimal floating-point types defined via </tgroup> </table> -<para></para> +<para/> -<table frame='all'> +<table frame="all"> <title>Extension Debug Headers</title> -<tgroup cols='5' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> -<colspec colname='c5'></colspec> + +<tgroup cols="5" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> +<colspec colname="c5"/> <tbody> <row> @@ -567,15 +572,16 @@ compiler supports scalar decimal floating-point types defined via </tgroup> </table> -<para></para> +<para/> -<table frame='all'> +<table frame="all"> <title>Extension Profile Headers</title> -<tgroup cols='4' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> -<colspec colname='c3'></colspec> -<colspec colname='c4'></colspec> + +<tgroup cols="4" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> +<colspec colname="c3"/> +<colspec colname="c4"/> <tbody> <row> @@ -596,13 +602,14 @@ compiler supports scalar decimal floating-point types defined via </tgroup> </table> -<para></para> +<para/> -<table frame='all'> +<table frame="all"> <title>Extension Parallel Headers</title> -<tgroup cols='2' align='left' colsep='1' rowsep='1'> -<colspec colname='c1'></colspec> -<colspec colname='c2'></colspec> + +<tgroup cols="2" align="left" colsep="1" rowsep="1"> +<colspec colname="c1"/> +<colspec colname="c2"/> <tbody> <row> <entry><filename class="headerfile">parallel/algorithm</filename></entry> @@ -612,10 +619,10 @@ compiler supports scalar decimal floating-point types defined via </tgroup> </table> - </sect2> + </section> - <sect2 id="manual.intro.using.headers.mixing" xreflabel="Mixing Headers"> - <title>Mixing Headers</title> + <section xml:id="manual.intro.using.headers.mixing" xreflabel="Mixing Headers"><info><title>Mixing Headers</title></info> + <para> A few simple rules. </para> @@ -655,10 +662,10 @@ same translation unit: <para> Several parts of C++0x diverge quite substantially from TR1 predecessors. </para> - </sect2> + </section> - <sect2 id="manual.intro.using.headers.cheaders" xreflabel="C Headers and"> - <title>The C Headers and <code>namespace std</code></title> + <section xml:id="manual.intro.using.headers.cheaders" xreflabel="C Headers and"><info><title>The C Headers and <code>namespace std</code></title></info> + <para> The standard specifies that if one includes the C-style header @@ -682,10 +689,10 @@ used uniformly, instead of a combination of <code>std::sinf</code>, <code>std::sin</code>, and <code>std::sinl</code>. </para> - </sect2> + </section> - <sect2 id="manual.intro.using.headers.pre" xreflabel="Precompiled Headers"> - <title>Precompiled Headers</title> + <section xml:id="manual.intro.using.headers.pre" xreflabel="Precompiled Headers"><info><title>Precompiled Headers</title></info> + <para>There are three base header files that are provided. They can be @@ -754,18 +761,18 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe </programlisting> <para>The exclamation point to the left of the <code>stdc++.h.gch</code> listing means that the generated PCH file was used, and thus the </para> -<para></para> +<para/> -<para> Detailed information about creating precompiled header files can be found in the GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html">documentation</ulink>. +<para> Detailed information about creating precompiled header files can be found in the GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Precompiled-Headers.html">documentation</link>. </para> - </sect2> - </sect1> + </section> + </section> - <sect1 id="manual.intro.using.macros" xreflabel="Macros"> + <section xml:id="manual.intro.using.macros" xreflabel="Macros"><info><title>Macros</title></info> <?dbhtml filename="using_macros.html"?> - <title>Macros</title> + <para> All library macros begin with <code>_GLIBCXX_</code>. @@ -863,8 +870,7 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe <code>--enable-concept-checks</code>. When defined, performs compile-time checking on certain template instantiations to detect violations of the requirements of the standard. This - is described in more detail <link - linkend="manual.ext.compile_checks">here</link>. + is described in more detail <link linkend="manual.ext.compile_checks">here</link>. </para> </listitem></varlistentry> @@ -901,14 +907,14 @@ g++ -Winvalid-pch -I. -include stdc++.h -H -g -O2 hello.cc -o test.exe </listitem></varlistentry> </variablelist> - </sect1> + </section> - <sect1 id="manual.intro.using.namespaces" xreflabel="Namespaces"> + <section xml:id="manual.intro.using.namespaces" xreflabel="Namespaces"><info><title>Namespaces</title></info> <?dbhtml filename="using_namespaces.html"?> - <title>Namespaces</title> + - <sect2 id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces"> - <title>Available Namespaces</title> + <section xml:id="manual.intro.using.namespaces.all" xreflabel="Available Namespaces"><info><title>Available Namespaces</title></info> + @@ -937,14 +943,14 @@ and <code>__gnu_pbds</code>. </para></listitem> </itemizedlist> -<para> A complete list of implementation namespaces (including namespace contents) is available in the generated source <ulink url="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html">documentation</ulink>. +<para> A complete list of implementation namespaces (including namespace contents) is available in the generated source <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html">documentation</link>. </para> - </sect2> + </section> - <sect2 id="manual.intro.using.namespaces.std" xreflabel="namespace std"> - <title>namespace std</title> + <section xml:id="manual.intro.using.namespaces.std" xreflabel="namespace std"><info><title>namespace std</title></info> + <para> @@ -967,10 +973,10 @@ cases where the qualified verbiage becomes unwieldy.) </listitem> </itemizedlist> - </sect2> + </section> - <sect2 id="manual.intro.using.namespaces.comp" xreflabel="Using Namespace Composition"> - <title>Using Namespace Composition</title> + <section xml:id="manual.intro.using.namespaces.comp" xreflabel="Using Namespace Composition"><info><title>Using Namespace Composition</title></info> + <para> Best practice in programming suggests sequestering new data or @@ -1005,22 +1011,22 @@ namespace gtk <code>std::string</code> does not get imported into the global namespace. Additionally, a more elaborate arrangement can be made for backwards compatibility and portability, whereby the <code>using</code>-declarations can wrapped in macros that - are set based on autoconf-tests to either "" or i.e. <code>using + are set based on autoconf-tests to either "" or i.e. <code>using std::string;</code> (depending on whether the system has libstdc++ in <code>std::</code> or not). (ideas from Llewelly and Karl Nelson) </para> - </sect2> - </sect1> + </section> + </section> - <sect1 id="manual.intro.using.linkage" xreflabel="Linkage"> + <section xml:id="manual.intro.using.linkage" xreflabel="Linkage"><info><title>Linking</title></info> <?dbhtml filename="using_dynamic_or_shared.html"?> - <title>Linking</title> + - <sect2 id="manual.intro.using.linkage.freestanding" xreflabel="Freestanding"> - <title>Almost Nothing</title> + <section xml:id="manual.intro.using.linkage.freestanding" xreflabel="Freestanding"><info><title>Almost Nothing</title></info> + <para> Or as close as it gets: freestanding. This is a minimal configuration, with only partial support for the standard @@ -1121,10 +1127,10 @@ namespace gtk identified above is actually used at compile time. Violations are diagnosed as undefined symbols at link time. </para> - </sect2> + </section> - <sect2 id="manual.intro.using.linkage.dynamic" xreflabel="Dynamic and Shared"> - <title>Finding Dynamic or Shared Libraries</title> + <section xml:id="manual.intro.using.linkage.dynamic" xreflabel="Dynamic and Shared"><info><title>Finding Dynamic or Shared Libraries</title></info> + <para> If the only library built is the static library @@ -1139,10 +1145,10 @@ namespace gtk </para> <para> A quick read of the relevant part of the GCC - manual, <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b">Compiling - C++ Programs</ulink>, specifies linking against a C++ + manual, <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Invoking-G_002b_002b.html#Invoking-G_002b_002b">Compiling + C++ Programs</link>, specifies linking against a C++ library. More details from the - GCC <ulink url="http://gcc.gnu.org/faq.html#rpath">FAQ</ulink>, + GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/faq.html#rpath">FAQ</link>, which states <emphasis>GCC does not, by default, specify a location so that the dynamic linker can find dynamic libraries at runtime.</emphasis> @@ -1176,22 +1182,42 @@ A quick read of the relevant part of the GCC <itemizedlist> <listitem> <para> - GNU ld (default on Linux):<literal>-Wl,--rpath,<filename class="directory">destdir</filename>/lib</literal> + GNU ld (default on Linux): + <literal>-Wl,-rpath,</literal><filename class="directory">destdir/lib</filename> </para> </listitem> <listitem> <para> - IRIX ld:<literal> - -Wl,-rpath,<filename class="directory">destdir</filename>/lib</literal> + IRIX ld: + <literal>-Wl,-rpath,</literal><filename class="directory">destdir/lib</filename> </para> </listitem> <listitem> <para> - Solaris ld:<literal>-Wl,-R<filename class="directory">destdir</filename>/lib</literal> + Solaris ld: + <literal>-Wl,-R</literal><filename class="directory">destdir/lib</filename> </para> </listitem> </itemizedlist> </listitem> + <listitem> + <para> + Some linkers allow you to specify the path to the library by + setting <literal>LD_RUN_PATH</literal> in your environment + when linking. + </para> + </listitem> + <listitem> + <para> + On some platforms the system administrator can configure the + dynamic linker to always look for libraries in + <filename class="directory">destdir/lib</filename>, for example + by using the <command>ldconfig</command> utility on Linux + or the <command>crle</command> utility on Solaris. This is a + system-wide change which can make the system unusable so if you + are unsure then use one of the other methods described above. + </para> + </listitem> </itemizedlist> <para> Use the <command>ldd</command> utility on the linked executable @@ -1205,13 +1231,13 @@ A quick read of the relevant part of the GCC create your executables, these details are taken care of for you. </para> - </sect2> - </sect1> + </section> + </section> - <sect1 id="manual.intro.using.concurrency" xreflabel="Concurrency"> + <section xml:id="manual.intro.using.concurrency" xreflabel="Concurrency"><info><title>Concurrency</title></info> <?dbhtml filename="using_concurrency.html"?> - <title>Concurrency</title> + <para>This section discusses issues surrounding the proper compilation of multithreaded applications which use the Standard C++ @@ -1219,8 +1245,8 @@ A quick read of the relevant part of the GCC standard does not address matters of multithreaded applications. </para> - <sect2 id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq"> - <title>Prerequisites</title> + <section xml:id="manual.intro.using.concurrency.prereq" xreflabel="Thread Prereq"><info><title>Prerequisites</title></info> + <para>All normal disclaimers aside, multithreaded C++ application are only supported when libstdc++ and all user code was built with @@ -1254,14 +1280,14 @@ A quick read of the relevant part of the GCC in ``gcc -dumpspecs'' (look at lib and cpp entries). </para> - </sect2> + </section> - <sect2 id="manual.intro.using.concurrency.thread_safety" xreflabel="Thread Safety"> - <title>Thread Safety</title> + <section xml:id="manual.intro.using.concurrency.thread_safety" xreflabel="Thread Safety"><info><title>Thread Safety</title></info> + <para> -We currently use the <ulink url="http://www.sgi.com/tech/stl/thread_safety.html">SGI STL</ulink> definition of thread safety. +We currently use the <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/thread_safety.html">SGI STL</link> definition of thread safety. </para> @@ -1295,9 +1321,8 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) Requisite command-line flags are used for atomic operations and threading. Examples of this include <code>-pthread</code> and <code>-march=native</code>, although specifics vary - depending on the host environment. See <ulink - url="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html">Machine - Dependent Options</ulink>. + depending on the host environment. See <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html">Machine + Dependent Options</link>. </para> </listitem> <listitem> @@ -1346,20 +1371,20 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) </para> - </sect2> - <sect2 id="manual.intro.using.concurrency.atomics" xreflabel="Atomics"> - <title>Atomics</title> + </section> + <section xml:id="manual.intro.using.concurrency.atomics" xreflabel="Atomics"><info><title>Atomics</title></info> + <para> </para> - </sect2> + </section> - <sect2 id="manual.intro.using.concurrency.io" xreflabel="IO"> - <title>IO</title> + <section xml:id="manual.intro.using.concurrency.io" xreflabel="IO"><info><title>IO</title></info> + <para>This gets a bit tricky. Please read carefully, and bear with me. </para> - <sect3 id="concurrency.io.structure" xreflabel="Structure"> - <title>Structure</title> + <section xml:id="concurrency.io.structure" xreflabel="Structure"><info><title>Structure</title></info> + <para>A wrapper type called <code>__basic_file</code> provides our abstraction layer for the <code>std::filebuf</code> classes. Nearly all decisions dealing @@ -1370,18 +1395,18 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) level is akin to providing locking within containers, and is not done for the same reasons (see the links above). </para> - </sect3> + </section> - <sect3 id="concurrency.io.defaults" xreflabel="Defaults"> - <title>Defaults</title> + <section xml:id="concurrency.io.defaults" xreflabel="Defaults"><info><title>Defaults</title></info> + <para>The __basic_file type is simply a collection of small wrappers around the C stdio layer (again, see the link under Structure). We do no locking ourselves, but simply pass through to calls to <code>fopen</code>, <code>fwrite</code>, and so forth. </para> - <para>So, for 3.0, the question of "is multithreading safe for I/O" - must be answered with, "is your platform's C library threadsafe - for I/O?" Some are by default, some are not; many offer multiple + <para>So, for 3.0, the question of "is multithreading safe for I/O" + must be answered with, "is your platform's C library threadsafe + for I/O?" Some are by default, some are not; many offer multiple implementations of the C library with varying tradeoffs of threadsafety and efficiency. You, the programmer, are always required to take care with multiple threads. @@ -1400,10 +1425,10 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) inside an <code>std::ofstream</code>), you need to guard such accesses like any other critical shared resource. </para> - </sect3> + </section> - <sect3 id="concurrency.io.future" xreflabel="Future"> - <title>Future</title> + <section xml:id="concurrency.io.future" xreflabel="Future"><info><title>Future</title></info> + <para> A second choice may be available for I/O implementations: libio. This is disabled by default, and in fact will not currently work due to other @@ -1414,11 +1439,11 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) type is basically derived from FILE. (The real situation is more complex than that... it's derived from an internal type used to implement FILE. See libio/libioP.h to see scary things done with - vtbls.) The result is that there is no "layer" of C stdio + vtbls.) The result is that there is no "layer" of C stdio to go through; the filebuf makes calls directly into the same functions used to implement <code>fread</code>, <code>fwrite</code>, and so forth, using internal data structures. (And when I say - "makes calls directly," I mean the function is literally + "makes calls directly," I mean the function is literally replaced by a jump into an internal function. Fast but frightening. *grin*) </para> @@ -1433,20 +1458,20 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) installed. For other platforms, a copy of the libio subsection will be built and included in libstdc++. </para> - </sect3> + </section> - <sect3 id="concurrency.io.alt" xreflabel="Alt"> - <title>Alternatives</title> + <section xml:id="concurrency.io.alt" xreflabel="Alt"><info><title>Alternatives</title></info> + <para>Don't forget that other cstdio implementations are possible. You could easily write one to perform your own forms of locking, to solve your - "interesting" problems. + "interesting" problems. </para> - </sect3> + </section> - </sect2> + </section> - <sect2 id="manual.intro.using.concurrency.containers" xreflabel="Containers"> - <title>Containers</title> + <section xml:id="manual.intro.using.concurrency.containers" xreflabel="Containers"><info><title>Containers</title></info> + <para>This section discusses issues surrounding the design of multithreaded applications which use Standard C++ containers. @@ -1461,10 +1486,10 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) </para> <para>Two excellent pages to read when working with the Standard C++ containers and threads are - <ulink url="http://www.sgi.com/tech/stl/thread_safety.html">SGI's - http://www.sgi.com/tech/stl/thread_safety.html</ulink> and - <ulink url="http://www.sgi.com/tech/stl/Allocators.html">SGI's - http://www.sgi.com/tech/stl/Allocators.html</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/thread_safety.html">SGI's + http://www.sgi.com/tech/stl/thread_safety.html</link> and + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/Allocators.html">SGI's + http://www.sgi.com/tech/stl/Allocators.html</link>. </para> <para><emphasis>However, please ignore all discussions about the user-level configuration of the lock implementation inside the STL @@ -1508,17 +1533,15 @@ gcc version 4.1.2 20070925 (Red Hat 4.1.2-33) options and capabilities. </para> - </sect2> -</sect1> + </section> +</section> <!-- Section 0x : Exception policies, expectations, topics --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="using_exceptions.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="using_exceptions.xml"> </xi:include> <!-- Section 0x : Debug --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="debug.xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="debug.xml"> </xi:include> </chapter> diff --git a/libstdc++-v3/doc/xml/manual/using_exceptions.xml b/libstdc++-v3/doc/xml/manual/using_exceptions.xml index d6f52a572a1..afc38734ae8 100644 --- a/libstdc++-v3/doc/xml/manual/using_exceptions.xml +++ b/libstdc++-v3/doc/xml/manual/using_exceptions.xml @@ -1,7 +1,8 @@ -<sect1 id="manual.intro.using.exceptions" xreflabel="Using Exceptions"> +<section xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="manual.intro.using.exceptions" xreflabel="Using Exceptions"> <?dbhtml filename="using_exceptions.html"?> -<sect1info> +<info><title>Exceptions</title> <keywordset> <keyword> C++ @@ -25,9 +26,7 @@ -fno-exceptions </keyword> </keywordset> -</sect1info> - -<title>Exceptions</title> +</info> <para> The C++ language provides language support for stack unwinding @@ -48,8 +47,8 @@ exception neutrality and exception safety. </para> -<sect2 id="intro.using.exception.safety" xreflabel="Exception Safety"> -<title>Exception Safety</title> +<section xml:id="intro.using.exception.safety" xreflabel="Exception Safety"><info><title>Exception Safety</title></info> + <para> What is exception-safe code? @@ -121,11 +120,11 @@ exception neutrality and exception safety. </listitem> </itemizedlist> -</sect2> +</section> -<sect2 id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality"> -<title>Exception Neutrality</title> +<section xml:id="intro.using.exception.propagating" xreflabel="Exceptions Neutrality"><info><title>Exception Neutrality</title></info> + <para> Simply put, once thrown an exception object should continue in flight unless handled explicitly. In practice, this means @@ -201,10 +200,10 @@ exception neutrality and exception safety. </listitem> </itemizedlist> -</sect2> +</section> + +<section xml:id="intro.using.exception.no" xreflabel="-fno-exceptions"><info><title>Doing without</title></info> -<sect2 id="intro.using.exception.no" xreflabel="-fno-exceptions"> -<title>Doing without</title> <para> C++ is a language that strives to be as efficient as is possible in delivering features. As such, considerable care is used by both @@ -217,7 +216,7 @@ exception neutrality and exception safety. support <literal>try</literal> and <literal>catch</literal> blocks and thrown objects. (Language support for <literal>-fno-exceptions</literal> is documented in the GNU - GCC <ulink url="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">manual</ulink>.) + GCC <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/onlinedocs/gcc/Code-Gen-Options.html#Code-Gen-Options">manual</link>.) </para> <para>Before detailing the library support @@ -353,13 +352,13 @@ exception neutrality and exception safety. </para> -</sect2> +</section> -<sect2 id="intro.using.exception.compat"> -<title>Compatibility</title> +<section xml:id="intro.using.exception.compat"><info><title>Compatibility</title></info> + + +<section xml:id="using.exception.compat.c"><info><title>With <literal>C</literal></title></info> -<sect3 id="using.exception.compat.c"> -<title>With <literal>C</literal></title> <para> C language code that is expecting to interoperate with C++ should be compiled with <literal>-fexceptions</literal>. This will make @@ -381,10 +380,10 @@ is called. with <literal>-fexceptions</literal>. </para> -</sect3> +</section> + +<section xml:id="using.exception.compat.posix"><info><title>With <literal>POSIX</literal> thread cancellation</title></info> -<sect3 id="using.exception.compat.posix"> -<title>With <literal>POSIX</literal> thread cancellation</title> <para> GNU systems re-use some of the exception handling mechanisms to @@ -424,28 +423,27 @@ is called. <programlisting> catch(const __cxxabiv1::__forced_unwind&) { - this->_M_setstate(ios_base::badbit); + this->_M_setstate(ios_base::badbit); throw; } catch(...) - { this->_M_setstate(ios_base::badbit); } + { this->_M_setstate(ios_base::badbit); } </programlisting> -</sect3> -</sect2> +</section> +</section> + +<bibliography xml:id="using.exceptions.biblio"><info><title>Bibliography</title></info> -<bibliography id="using.exceptions.biblio"> -<title>Bibliography</title> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.opengroup.org/austin"> - <citetitle> - System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) - </citetitle> - </ulink> - </biblioid> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.opengroup.org/austin" class="uri"> + </biblioid> + <citetitle> + System Interface Definitions, Issue 7 (IEEE Std. 1003.1-2008) + </citetitle> + <pagenums> 2.9.5 Thread Cancellation </pagenums> @@ -459,17 +457,13 @@ is called. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.boost.org/community/error_handling.html"> - <citetitle> - Error and Exception Handling - </citetitle> - </ulink> - </biblioid> - <author> - <firstname>David</firstname> - <surname>Abrahams </surname> - </author> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/community/error_handling.html" class="uri"> + </biblioid> + <citetitle> + Error and Exception Handling + </citetitle> + + <author><personname><firstname>David</firstname><surname>Abrahams </surname></personname></author> <publisher> <publishername> Boost @@ -479,17 +473,13 @@ is called. <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.boost.org/community/exception_safety.html"> - <citetitle> - Exception-Safety in Generic Components - </citetitle> - </ulink> - </biblioid> - <author> - <firstname>David</firstname> - <surname>Abrahams</surname> - </author> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.boost.org/community/exception_safety.html" class="uri"> + </biblioid> + <citetitle> + Exception-Safety in Generic Components + </citetitle> + + <author><personname><firstname>David</firstname><surname>Abrahams</surname></personname></author> <publisher> <publishername> Boost @@ -498,17 +488,12 @@ is called. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf"> - <citetitle> - Standard Library Exception Policy - </citetitle> - </ulink> - </biblioid> - <author> - <firstname>Matt</firstname> - <surname>Austern</surname> - </author> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.pdf" class="uri"> + </biblioid> + <citetitle> + Standard Library Exception Policy + </citetitle> + <author><personname><firstname>Matt</firstname><surname>Austern</surname></personname></author> <publisher> <publishername> WG21 N1077 @@ -517,17 +502,13 @@ is called. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html"> - <citetitle> - ia64 c++ abi exception handling - </citetitle> - </ulink> - </biblioid> - <author> - <firstname>Richard</firstname> - <surname>Henderson</surname> - </author> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/ml/gcc-patches/2001-03/msg00661.html" class="uri"> + </biblioid> + <citetitle> + ia64 c++ abi exception handling + </citetitle> + + <author><personname><firstname>Richard</firstname><surname>Henderson</surname></personname></author> <publisher> <publishername> GNU @@ -536,42 +517,32 @@ is called. </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://www.research.att.com/~bs/3rd_safe.pdf"> - <citetitle> - Appendix E: Standard-Library Exception Safety - </citetitle> - </ulink> - </biblioid> - <author> - <firstname>Bjarne</firstname> - <surname>Stroustrup</surname> - </author> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.research.att.com/~bs/3rd_safe.pdf" class="uri"> + </biblioid> + <citetitle> + Appendix E: Standard-Library Exception Safety + </citetitle> + <author><personname><firstname>Bjarne</firstname><surname>Stroustrup</surname></personname></author> </biblioentry> <biblioentry> - <title> + <citetitle> Exceptional C++ - </title> + </citetitle> <pagenums> Exception-Safety Issues and Techniques </pagenums> - <author> - <firstname>Herb</firstname> - <surname>Sutter</surname> - </author> + <author><personname><firstname>Herb</firstname><surname>Sutter</surname></personname></author> </biblioentry> <biblioentry> - <biblioid class="uri"> - <ulink url="http://gcc.gnu.org/PR25191"> - <citetitle> - GCC Bug 25191: exception_defines.h #defines try/catch - </citetitle> - </ulink> + <biblioid xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://gcc.gnu.org/PR25191" class="uri"> </biblioid> + <citetitle> + GCC Bug 25191: exception_defines.h #defines try/catch + </citetitle> </biblioentry> </bibliography> -</sect1> +</section> diff --git a/libstdc++-v3/doc/xml/manual/utilities.xml b/libstdc++-v3/doc/xml/manual/utilities.xml index ef118f5ccc4..5c3a8fd4864 100644 --- a/libstdc++-v3/doc/xml/manual/utilities.xml +++ b/libstdc++-v3/doc/xml/manual/utilities.xml @@ -1,12 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ ]> - -<chapter id="std.util" xreflabel="Utilities"> +<chapter xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="std.util" xreflabel="Utilities"> <?dbhtml filename="utilities.html"?> -<chapterinfo> +<info><title> + Utilities + <indexterm><primary>Utilities</primary></indexterm> +</title> <keywordset> <keyword> ISO C++ @@ -15,30 +14,27 @@ library </keyword> </keywordset> -</chapterinfo> +</info> + -<title> - Utilities - <indexterm><primary>Utilities</primary></indexterm> -</title> <!-- Section 01 : Functors --> -<section id="std.util.functors" xreflabel="Functors"> +<section xml:id="std.util.functors" xreflabel="Functors"><info><title>Functors</title></info> <?dbhtml filename="functors.html"?> - <title>Functors</title> + <para>If you don't know what functors are, you're not alone. Many people get slightly the wrong idea. In the interest of not reinventing the wheel, we will refer you to the introduction to the functor concept written by SGI as chapter of their STL, in - <ulink url="http://www.sgi.com/tech/stl/functors.html">their - http://www.sgi.com/tech/stl/functors.html</ulink>. + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.sgi.com/tech/stl/functors.html">their + http://www.sgi.com/tech/stl/functors.html</link>. </para> </section> <!-- Section 02 : Pairs --> -<section id="std.util.pairs" xreflabel="Pairs"> +<section xml:id="std.util.pairs" xreflabel="Pairs"><info><title>Pairs</title></info> <?dbhtml filename="pairs.html"?> - <title>Pairs</title> + <para>The <code>pair<T1,T2></code> is a simple and handy way to carry around a pair of objects. One is of type T1, and another of type T2; they may be the same type, but you don't get anything @@ -92,9 +88,9 @@ </section> <!-- Section 03 : Memory --> -<section id="std.util.memory" xreflabel="Memory"> +<section xml:id="std.util.memory" xreflabel="Memory"><info><title>Memory</title></info> <?dbhtml filename="memory.html"?> - <title>Memory</title> + <para> Memory contains three general areas. First, function and operator calls via <function>new</function> and <function>delete</function> @@ -104,26 +100,23 @@ </para> <!-- Section 01 : allocator --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="allocator.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="allocator.xml"> </xi:include> <!-- Section 02 : auto_ptr --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="auto_ptr.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="auto_ptr.xml"> </xi:include> <!-- Section 03 : shared_ptr --> - <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - parse="xml" href="shared_ptr.xml"> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" parse="xml" href="shared_ptr.xml"> </xi:include> </section> <!-- Section 04 : Traits --> -<section id="std.util.traits" xreflabel="Traits"> +<section xml:id="std.util.traits" xreflabel="Traits"><info><title>Traits</title></info> <?dbhtml filename="traits.html"?> - <title>Traits</title> + <para> </para> </section> diff --git a/libstdc++-v3/doc/xml/spine.xml b/libstdc++-v3/doc/xml/spine.xml index 27d0d8ab3c4..5fb739fb2bc 100644 --- a/libstdc++-v3/doc/xml/spine.xml +++ b/libstdc++-v3/doc/xml/spine.xml @@ -1,15 +1,11 @@ -<?xml version='1.0'?> -<!DOCTYPE set PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" - "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" -[ -<!ENTITY authors SYSTEM "authors.xml"> -]> - -<set id="set-index" xreflabel="The GNU C++ Library Documentation"> +<set xmlns="http://docbook.org/ns/docbook" version="5.0" + xml:id="set-index" + xreflabel="The GNU C++ Library"> <?dbhtml filename="spine.html"?> -<title>The GNU C++ Library Documentation</title> -<setinfo> + <title>The GNU C++ Library</title> + +<info> <copyright> <year>2000</year> <year>2001</year> @@ -23,26 +19,144 @@ <year>2009</year> <year>2010</year> <holder> - <ulink url="http://www.fsf.org">FSF</ulink> + <link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.fsf.org">FSF</link> </holder> </copyright> - &authors; -</setinfo> + +<authorgroup version="5.0"> + +<!-- + <author> + <firstname>Benjamin</firstname> + <surname>Kosnik</surname> + + <affiliation> + <shortaffil>Red Hat</shortaffil> + <orgname>Red Hat, Inc.</orgname> + <address> + <email>libstdc++@gcc.gnu.org</email> + </address> + </affiliation> + + <authorblurb> + <para> + </para> + </authorblurb> + </author> +--> + + <author><personname><firstname/><surname/></personname><personblurb> + <para> + </para> + </personblurb></author> + + <author><personname><firstname>Paolo</firstname><surname>Carlini</surname></personname><personblurb> + <para> + TR1, LWG Active, Closed, Defects lists. + </para> + </personblurb></author> + + <author><personname><firstname>Phil</firstname><surname>Edwards</surname></personname><personblurb> + <para> + Originating author, started HOWTO and FAQ, worked on sections + Demangling, Macros, Strings, Iterators, Backwards + Compatibility, SGI Extensions, Configure, Build, Install. + </para> + </personblurb></author> + + <author><personname><firstname>Doug</firstname><surname>Gregor</surname></personname><personblurb> + <para> + Debug Mode, TR1 function objects + </para> + </personblurb></author> + + <author><personname><firstname>Benjamin</firstname><surname>Kosnik</surname></personname><personblurb> + <para> + Allocators, ABI, API evolution and deprecation history, + Backwards Compatibility, Thread, Debug Support, Locales, + Facets, Parallel Mode, Headers, Namespaces, Construction and + Structure, Using Exceptions, DocBook conversion and layout. + </para> + </personblurb></author> + + + <author><personname><firstname>Dhruv</firstname><surname>Matani</surname></personname><personblurb> + <para> + bitmap_allocator + </para> + </personblurb></author> + + <author><personname><firstname>Jason</firstname><surname>Merrill</surname></personname><personblurb> + <para> + License, __verbose_terminate_handler + </para> + </personblurb></author> + + <author><personname><firstname>Mark</firstname><surname>Mitchell</surname></personname><personblurb> + <para> + Porting + </para> + </personblurb></author> + + <author><personname><firstname>Nathan</firstname><surname>Myers</surname></personname><personblurb> + <para> + Referenced counted string, C++1998 implementation status. + </para> + </personblurb></author> + + <author><personname><firstname>Felix</firstname><surname>Natter</surname></personname><personblurb> + <para> + Namespace composition, Backwards Compatibility. + </para> + </personblurb></author> + + + <author><personname><firstname>Stefan</firstname><surname>Olsson</surname></personname><personblurb> + <para> + mt_allocator + </para> + </personblurb></author> + + <author><personname><firstname>Silvius</firstname><surname>Rus</surname></personname><personblurb> + <para> + Profile mode + </para> + </personblurb></author> + + <author><personname><firstname>Johannes</firstname><surname>Singler</surname></personname><personblurb> + <para> + Parallel mode + </para> + </personblurb></author> + + <author><personname><firstname>Ami</firstname><surname>Tavory</surname></personname><personblurb> + <para> + Policy Based Data Structures, Associative Containers, Unordered + Containers. + </para> + </personblurb></author> + + <author><personname><firstname>Jonathan</firstname><surname>Wakely</surname></personname><personblurb> + <para> + shared_ptr, markup editing and styling + </para> + </personblurb></author> + +</authorgroup> + +</info> <!-- User Manual --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="manual/spine.xml" parse="xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="manual/spine.xml" parse="xml"> </xi:include> <!-- Source Level Documentation--> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="api.xml" parse="xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="api.xml" parse="xml"> </xi:include> <!-- FAQ --> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" - href="faq.xml" parse="xml"> +<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="faq.xml" parse="xml"> </xi:include> </set> |