diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1f7326e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "doc/docca"] + path = doc/docca + url = https://github.com/vinniefalco/docca.git diff --git a/doc/.gitignore b/doc/.gitignore new file mode 100644 index 0000000..4aca2ca --- /dev/null +++ b/doc/.gitignore @@ -0,0 +1,4 @@ +html +temp +out.txt +qbk/reference.qbk diff --git a/doc/Jamfile b/doc/Jamfile new file mode 100644 index 0000000..97c6d51 --- /dev/null +++ b/doc/Jamfile @@ -0,0 +1,199 @@ +# +# Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com) +# +# Distributed under the Boost Software License, Version 1.0. (See accompanying +# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +# + +project fixed_string/doc ; + +import os ; +import path ; +import boostbook ; +import quickbook ; +import xsltproc ; +import doxygen ; +import modules ; +import saxonhe ; + +#------------------------------------------------------------------------------- +# +# Build the list of header files that Doxygen will scan. We need +# this list to inform the build system of the dependencies so the +# docs can be rebuild if any of the header files change. +# + +local sources = [ path.glob-tree ../include/boost/fixed_string : *.hpp *.ipp : detail impl ] ; + +# Get the configured paths to doxygen and xsltproc + +.doxygen = [ doxygen.name ] ; +.doxygen ?= doxygen ; + +.xsltproc = [ xsltproc.name ] ; +.xsltproc ?= xsltproc ; + +#------------------------------------------------------------------------------- +# +# Generate transform.xsl. This xsl transfomration takes as input +# the Doxygen-generated XML and produces QuickBook output. +# +make transform.xsl + : + docca/include/docca/doxygen.xsl + xsl/config.xsl + xsl/class_detail.xsl + xsl/includes.xsl + xsl/includes_foot.xsl + : + @make_transform + ; + +# Make a copy of the docca transform. Then, insert our +# customizations into the specially marked locations using sed. +# +actions make_transform +{ + cp $(2[1]) $(1) + sed -i -e "//{r $(2[2])" -e "d}" $(1) + sed -i -e "//{r $(2[3])" -e "d}" $(1) + sed -i -e "//{r $(2[4])" -e "d}" $(1) + sed -i -e "//{r $(2[5])" -e "d}" $(1) +} + +#------------------------------------------------------------------------------- +# +# Invoke Doxygen to process the header files and produce the XML +# containing the description of the C++ declarations and extracted +# Javadoc comments. +# +make index.xml + : + ./source.dox + : + @make_doxygen_xml + : + $(sources) + ; + +rule make_doxygen_xml ( targets * : sources * : properties * ) +{ + LIB_DIR on $(targets) = + [ path.native [ path.parent [ path.root + [ on $(sources[1]) return $(SEARCH) ] [ path.pwd ] ] ] ] ; +} + +if [ os.name ] = NT +{ + actions make_doxygen_xml + { + SET LIB_DIR=$(LIB_DIR) + SET XML_OUTPUT=$(1:D) + "$(.doxygen)" $(2) + } +} +else +{ + actions make_doxygen_xml + { + export LIB_DIR=$(LIB_DIR) + export XML_OUTPUT=$(1:D) + "$(.doxygen)" $(2) + } +} + +make combine.xslt : index.xml : @null_action ; + +actions null_action +{ + touch -c $(1) ; +} + +make reference.xml + : + combine.xslt + index.xml + : + @call-xsltproc + ; + +actions call-xsltproc +{ + "$(.xsltproc)" $(2) > $(1) +} + +#------------------------------------------------------------------------------- +# +# Produce the reference.qbk file by running +# the reference xml through the transform. +# +make reference.qbk + : + reference.xml + transform.xsl + : + saxonhe.saxonhe + ; + +# We have to make a copy of reference.qbk and put it +# in a place where the static .qbk files can find it +# +install qbk : reference.qbk ; + +#------------------------------------------------------------------------------- +# +# Produce the Boost.Book XML from the QuickBook +# + +install images + : + : + html/fixed_string/images + ; + +explicit images ; + +xml fixed_string_doc + : + qbk/main.qbk + : + images + qbk + ; + +explicit fixed_string_doc ; + +#------------------------------------------------------------------------------- +# +# HTML documentation for $(BOOST_ROOT)/doc/html +# +#------------------------------------------------------------------------------- + +boostbook fixed_string + : + fixed_string_doc + : + boost.root=../../../.. + chapter.autolabel=1 + chunk.section.depth=8 # Depth to which sections should be chunked + chunk.first.sections=1 # Chunk the first top-level section? + toc.section.depth=8 # How deep should recursive sections appear in the TOC? + toc.max.depth=8 # How many levels should be created for each TOC? + generate.section.toc.level=8 # Control depth of TOC generation in sections + generate.toc="chapter toc,title section nop reference nop" + ../../../tools/boostbook/dtd + : + images + ; + +#------------------------------------------------------------------------------- +# +# These are used to inform the build system of the +# means to build the integrated and stand-alone docs. +# + +alias boostdoc ; +explicit boostdoc ; + +alias boostrelease : fixed_string ; +explicit boostrelease ; diff --git a/doc/docca b/doc/docca new file mode 160000 index 0000000..9bbf76d --- /dev/null +++ b/doc/docca @@ -0,0 +1 @@ +Subproject commit 9bbf76d88b2f30f368b7ad836058a1e539430dce diff --git a/doc/qbk/index.xml b/doc/qbk/index.xml new file mode 100644 index 0000000..6bac679 --- /dev/null +++ b/doc/qbk/index.xml @@ -0,0 +1,15 @@ + + + + +
+ Index + +
diff --git a/doc/qbk/main.qbk b/doc/qbk/main.qbk new file mode 100644 index 0000000..f8c46d4 --- /dev/null +++ b/doc/qbk/main.qbk @@ -0,0 +1,45 @@ +[/ + Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + + Official repository: https://github.com/vinniefalco/fixed_string +] + +[library Boost.FixedString + [id json] + [quickbook 1.6] + [copyright 2016 - 2019 Vinnie Falco] + [purpose String Library] + [license + Distributed under the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + [@http://www.boost.org/LICENSE_1_0.txt]) + ] + [authors [Falco, Vinnie]] + [category template] + [category generic] +] + +[template mdash[] '''— '''] +[template indexterm1[term1] ''''''[term1]''''''] +[template indexterm2[term1 term2] ''''''[term1]''''''[term2]''''''] + +[template path_link[path name] ''''''[name]''''''] +[template include_file[path][^<''''''[path]''''''>]] +[template issue[n] '''#'''[n]''''''] + +[section:quickref Reference] + +[xinclude quickref.xml] +[endsect] +[block'''This Page Intentionally Left Blank 1/2'''] +[section:ref This Page Intentionally Left Blank 2/2] +[include reference.qbk] +[endsect] +[block''''''] + +This is the main file + +[xinclude index.xml] diff --git a/doc/qbk/quickref.xml b/doc/qbk/quickref.xml new file mode 100644 index 0000000..b6748cc --- /dev/null +++ b/doc/qbk/quickref.xml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/doc/source.dox b/doc/source.dox new file mode 100644 index 0000000..91e475b --- /dev/null +++ b/doc/source.dox @@ -0,0 +1,247 @@ +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +INPUT = \ + $(LIB_DIR)/include/boost/fixed_string + +ALIASES += esafe="@par Exception Safety" + +INPUT_ENCODING = UTF-8 +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXCLUDE_SYMBOLS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +FILTER_SOURCE_PATTERNS = +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = YES +EXPAND_ONLY_PREDEF = YES +SEARCH_INCLUDES = YES +INCLUDE_PATH = ../ +INCLUDE_FILE_PATTERNS = + +PREDEFINED = \ + GENERATING_DOCUMENTATION +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +DOXYFILE_ENCODING = UTF-8 +PROJECT_NAME = "FixedString" +PROJECT_NUMBER = +PROJECT_BRIEF = String Library +PROJECT_LOGO = +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +#####ALLOW_UNICODE_NAMES = NO +OUTPUT_LANGUAGE = English +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = YES +FULL_PATH_NAMES = YES +#STRIP_FROM_PATH = $(LIB_DIR)/include # Requires doxygen 1.8.7+ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +QT_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 4 +TCL_SUBST = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +OPTIMIZE_FOR_FORTRAN = NO +OPTIMIZE_OUTPUT_VHDL = NO +EXTENSION_MAPPING = +MARKDOWN_SUPPORT = YES +AUTOLINK_SUPPORT = YES +BUILTIN_STL_SUPPORT = NO +CPP_CLI_SUPPORT = NO +SIP_SUPPORT = NO +IDL_PROPERTY_SUPPORT = YES +DISTRIBUTE_GROUP_DOC = YES +#####GROUP_NESTED_COMPOUNDS = NO +SUBGROUPING = YES +INLINE_GROUPED_CLASSES = NO +INLINE_SIMPLE_STRUCTS = NO +TYPEDEF_HIDES_STRUCT = NO +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_PACKAGE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +EXTRACT_ANON_NSPACES = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +#####HIDE_COMPOUND_REFERENCE= NO +SHOW_INCLUDE_FILES = NO +SHOW_GROUPED_MEMB_INC = NO +FORCE_LOCAL_INCLUDES = NO +INLINE_INFO = NO +SORT_MEMBER_DOCS = NO +SORT_BRIEF_DOCS = NO +SORT_MEMBERS_CTORS_1ST = YES +SORT_GROUP_NAMES = NO +SORT_BY_SCOPE_NAME = NO +STRICT_PROTO_MATCHING = NO +GENERATE_TODOLIST = NO +GENERATE_TESTLIST = NO +GENERATE_BUGLIST = NO +GENERATE_DEPRECATEDLIST= NO +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = NO +SHOW_FILES = NO +SHOW_NAMESPACES = NO +FILE_VERSION_FILTER = +LAYOUT_FILE = +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +#####WARN_AS_ERROR = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +REFERENCES_LINK_SOURCE = YES +SOURCE_TOOLTIPS = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +CLANG_ASSISTED_PARSING = NO +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = NO +HTML_OUTPUT = dhtm +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_EXTRA_STYLESHEET = +HTML_EXTRA_FILES = +HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_GAMMA = 80 +HTML_TIMESTAMP = NO +HTML_DYNAMIC_SECTIONS = NO +HTML_INDEX_NUM_ENTRIES = 100 +GENERATE_DOCSET = NO +DOCSET_FEEDNAME = "Doxygen generated docs" +DOCSET_BUNDLE_ID = org.doxygen.Project +DOCSET_PUBLISHER_ID = org.doxygen.Publisher +DOCSET_PUBLISHER_NAME = Publisher +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +CHM_INDEX_ENCODING = +BINARY_TOC = NO +TOC_EXPAND = NO +GENERATE_QHP = NO +QCH_FILE = +QHP_NAMESPACE = org.doxygen.Project +QHP_VIRTUAL_FOLDER = doc +QHP_CUST_FILTER_NAME = +QHP_CUST_FILTER_ATTRS = +QHP_SECT_FILTER_ATTRS = +QHG_LOCATION = +GENERATE_ECLIPSEHELP = NO +ECLIPSE_DOC_ID = org.doxygen.Project +DISABLE_INDEX = NO +GENERATE_TREEVIEW = NO +ENUM_VALUES_PER_LINE = 4 +TREEVIEW_WIDTH = 250 +EXT_LINKS_IN_WINDOW = NO +FORMULA_FONTSIZE = 10 +FORMULA_TRANSPARENT = YES +USE_MATHJAX = NO +MATHJAX_FORMAT = HTML-CSS +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest +MATHJAX_EXTENSIONS = +MATHJAX_CODEFILE = +SEARCHENGINE = YES +SERVER_BASED_SEARCH = NO +EXTERNAL_SEARCH = NO +SEARCHENGINE_URL = +SEARCHDATA_FILE = searchdata.xml +EXTERNAL_SEARCH_ID = +EXTRA_SEARCH_MAPPINGS = + +GENERATE_LATEX = NO +GENERATE_RTF = NO +GENERATE_MAN = NO +GENERATE_DOCBOOK = NO +GENERATE_AUTOGEN_DEF = NO +GENERATE_PERLMOD = NO +CLASS_DIAGRAMS = NO +HAVE_DOT = NO + +#--------------------------------------------------------------------------- +# Configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = YES +XML_OUTPUT = $(XML_OUTPUT) +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# Configuration options related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +EXTERNAL_PAGES = YES +PERL_PATH = /usr/bin/perl diff --git a/doc/xsl/class_detail.xsl b/doc/xsl/class_detail.xsl new file mode 100644 index 0000000..63a91f0 --- /dev/null +++ b/doc/xsl/class_detail.xsl @@ -0,0 +1,36 @@ + + __Allocator__ + __AsyncStream__ + __AsyncReadStream__ + __AsyncWriteStream__ + __Body__ + __BufferSequence__ + __BufferSequence__ + __CompletionCondition__ + __CompletionHandler__ + __CompletionToken__ + __ConnectCondition__ + __ConnectHandler__ + __ConstBufferSequence__ + __DynamicBuffer__ + __EndpointSequence__ + __ExecutionContext__ + __Executor__ + __Executor__ + __Executor1__ + __Executor2__ + __Fields__ + __Handler__ + __Handler__ + __IteratorConnectHandler__ + __MutableBufferSequence__ + __Protocol__ + __RangeConnectHandler__ + __RatePolicy__ + __ReadHandler__ + __Stream__ + __SyncStream__ + __SyncReadStream__ + __SyncWriteStream__ + __WriteHandler__ + diff --git a/doc/xsl/config.xsl b/doc/xsl/config.xsl new file mode 100644 index 0000000..758d92a --- /dev/null +++ b/doc/xsl/config.xsl @@ -0,0 +1,6 @@ + + + + + + diff --git a/doc/xsl/includes.xsl b/doc/xsl/includes.xsl new file mode 100644 index 0000000..a84b5e7 --- /dev/null +++ b/doc/xsl/includes.xsl @@ -0,0 +1,5 @@ + + Defined in header [include_file + + ] + diff --git a/doc/xsl/includes_foot.xsl b/doc/xsl/includes_foot.xsl new file mode 100644 index 0000000..f50c71d --- /dev/null +++ b/doc/xsl/includes_foot.xsl @@ -0,0 +1,19 @@ + + + + Convenience header [include_file boost/beast/core.hpp] + + + Convenience header [include_file boost/beast/http.hpp] + + + Convenience header [include_file boost/beast/ssl.hpp] + + + Convenience header [include_file boost/beast/websocket.hpp] + + + Convenience header [include_file boost/beast/zlib.hpp] + + + diff --git a/include/boost/fixed_string/fixed_string.hpp b/include/boost/fixed_string/fixed_string.hpp index 25de040..79fb095 100644 --- a/include/boost/fixed_string/fixed_string.hpp +++ b/include/boost/fixed_string/fixed_string.hpp @@ -312,7 +312,7 @@ public: return assign(s, Traits::length(s)); } - /** Replace the contents with a copy of characters from the range `[first, last)` + /** Replace the contents with a copy of characters from the range `(first, last)` @throw std::length_error if `std::distance(first, last) > max_size()` @return `*this` @@ -762,7 +762,7 @@ public: size_type count, CharT ch); - /** Inserts characters from the range `[first, last)` before the element (if any) pointed by `pos` + /** Inserts characters from the range `(first, last)` before the element (if any) pointed by `pos` The inserted string can contain null characters. This function does not participate in overload resolution if @@ -868,7 +868,7 @@ public: erase( const_iterator pos); - /** Removes the characters in the range [first, last). + /** Removes the characters in the range `(first, last)` @return iterator pointing to the character last pointed to before the erase, or `end()` if no such character exists */ @@ -942,7 +942,7 @@ public: return append(sv.substr(pos, count)); } - /** Appends characters in the range [s, s + count) + /** Appends characters in the range `(s, s + count)` The appended string can contain null characters. @@ -969,7 +969,7 @@ public: return append(s, Traits::length(s)); } - /** Appends characters from the range `[first, last)` + /** Appends characters from the range `(first, last)` The inserted string can contain null characters. This function does not participate in overload resolution if