You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2018/02/19 16:42:44 UTC

[trafficserver] branch master updated: Doc: Add internal documenation for ts::string_view.

This is an automated email from the ASF dual-hosted git repository.

amc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git


The following commit(s) were added to refs/heads/master by this push:
     new e4aa18e  Doc: Add internal documenation for ts::string_view.
e4aa18e is described below

commit e4aa18e3337929bb1c9dc4272f369c86a1325c61
Author: Alan M. Carroll <am...@apache.org>
AuthorDate: Fri Feb 16 17:12:42 2018 -0600

    Doc: Add internal documenation for ts::string_view.
---
 .../internal-libraries/index.en.rst                |  3 +-
 .../internal-libraries/string_view.en.rst          | 65 ++++++++++++++++++++++
 2 files changed, 67 insertions(+), 1 deletion(-)

diff --git a/doc/developer-guide/internal-libraries/index.en.rst b/doc/developer-guide/internal-libraries/index.en.rst
index 1b6cd1e..1e569e3 100644
--- a/doc/developer-guide/internal-libraries/index.en.rst
+++ b/doc/developer-guide/internal-libraries/index.en.rst
@@ -26,7 +26,8 @@ Here we document various internal libraries whose use is encouraged by |ATS|
 development team.
 
 .. toctree::
-   :maxdepth: 2
+   :maxdepth: 1
 
+   string_view.en
    memview.en
    scalar.en
diff --git a/doc/developer-guide/internal-libraries/string_view.en.rst b/doc/developer-guide/internal-libraries/string_view.en.rst
new file mode 100644
index 0000000..911dd23
--- /dev/null
+++ b/doc/developer-guide/internal-libraries/string_view.en.rst
@@ -0,0 +1,65 @@
+.. Licensed to the Apache Software Foundation (ASF) under one
+   or more contributor license agreements.  See the NOTICE file
+   distributed with this work for additional information
+   regarding copyright ownership.  The ASF licenses this file
+   to you under the Apache License, Version 2.0 (the
+   "License"); you may not use this file except in compliance
+   with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing,
+   software distributed under the License is distributed on an
+   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+   KIND, either express or implied.  See the License for the
+   specific language governing permissions and limitations
+   under the License.
+
+.. include:: ../../common.defs
+
+.. default-domain:: cpp
+
+ts::string_view
+***************
+
+Synopsis
+========
+
+:code:`#include <ts/string_view.h>`
+
+.. class:: string_view
+
+This is an internal implementation of `std::string_view
+<https://en.cppreference.com/w/cpp/header/string_view>`__. This was done because
+:code:`std::string_view` is part of the C++17 standard and therefore cannot be assumed in our
+supported compilers (which are currently only C++11).
+
+Description
+===========
+
+:class:`string_view` provides a read only view into memory allocated elsewhere and is handy for when
+passing around pieces of memory, such as pieces of an HTTP header. It is essentially a pointer and a
+length and a quick glance at our internal API will provide numerous places this kind of data is
+passed.
+
+This implementation is intended to be as similar as possible to the standard version to avoid
+transition difficulties if / when we upgrade to C++17. For this reason no additional features,
+regardless of how useful we might find them, have been or will be added to this class.
+
+The only known difference at this time is the literal operator is :code:`""_sv` instead of
+:code:`""sv` as it is for :code:`std::string_view`. The reason is a compiler limitation which does
+not allow non-compiler headers to define literal operators without a leading ``_``. The use would be
+
+.. code-block:: cpp
+
+   ts::string_view ts_v = "A literal string"_sv; // ts::string_view
+   std::string_view std_v = "A literal string"sv; // std::string_view
+
+If you discover any other differences, that is a bug in our implementation and should be fixed.
+
+For a class that provides a much richer set of text manipulation methods, see :class:`TextView`
+which is a subclass of :class:`string_view`.
+
+There is no shortage of additional reference material available, beyond the basic description noted
+above, which serves to describe the API and usage of this class, and duplicating it here would serve
+no purpose.

-- 
To stop receiving notification emails like this one, please contact
amc@apache.org.