From eff821c1cae42dba23f7ebffd5d2ba5a3b066f9a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 12 Sep 2017 19:20:03 +0200 Subject: [PATCH] Util/StringView: move struct WStringView to separate header --- Makefile.am | 2 ++ src/util/StringView.hxx | 27 -------------------- src/util/TStringView.hxx | 55 ++++++++++++++++++++++++++++++++++++++++ src/util/WStringView.hxx | 42 ++++++++++++++++++++++++++++++ 4 files changed, 99 insertions(+), 27 deletions(-) create mode 100644 src/util/TStringView.hxx create mode 100644 src/util/WStringView.hxx diff --git a/Makefile.am b/Makefile.am index 4f437ed3d..4abbd0947 100644 --- a/Makefile.am +++ b/Makefile.am @@ -425,6 +425,8 @@ libutil_a_SOURCES = \ src/util/StringBuffer.hxx \ src/util/StringPointer.hxx \ src/util/StringView.cxx src/util/StringView.hxx \ + src/util/WStringView.hxx \ + src/util/TStringView.hxx \ src/util/ConcatString.hxx \ src/util/AllocatedString.cxx src/util/AllocatedString.hxx \ src/util/TruncateString.cxx src/util/TruncateString.hxx \ diff --git a/src/util/StringView.hxx b/src/util/StringView.hxx index dda2edc44..903870edf 100644 --- a/src/util/StringView.hxx +++ b/src/util/StringView.hxx @@ -117,31 +117,4 @@ struct StringView : BasicStringView { :BasicStringView(src) {} }; -#ifdef _UNICODE - -struct WStringView : BasicStringView { - using BasicStringView::BasicStringView; - - constexpr WStringView(BasicStringView src) noexcept - :BasicStringView(src) {} -}; - -struct TStringView : WStringView { - using WStringView::WStringView; - - constexpr TStringView(WStringView src) noexcept - :WStringView(src) {} -}; - -#else - -struct TStringView : StringView { - using StringView::StringView; - - constexpr TStringView(StringView src) noexcept - :StringView(src) {} -}; - -#endif - #endif diff --git a/src/util/TStringView.hxx b/src/util/TStringView.hxx new file mode 100644 index 000000000..fd8a3bf42 --- /dev/null +++ b/src/util/TStringView.hxx @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2013-2017 Max Kellermann + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef TSTRING_VIEW_HXX +#define TSTRING_VIEW_HXX + +#ifdef _UNICODE +#include "WStringView.hxx" + +struct TStringView : WStringView { + using WStringView::WStringView; + + constexpr TStringView(WStringView src) noexcept + :WStringView(src) {} +}; + +#else +#include "StringView.hxx" + +struct TStringView : StringView { + using StringView::StringView; + + constexpr TStringView(StringView src) noexcept + :StringView(src) {} +}; + +#endif + +#endif diff --git a/src/util/WStringView.hxx b/src/util/WStringView.hxx new file mode 100644 index 000000000..4be668ade --- /dev/null +++ b/src/util/WStringView.hxx @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2013-2017 Max Kellermann + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef WSTRING_VIEW_HXX +#define WSTRING_VIEW_HXX + +#include "StringView.hxx" + +struct WStringView : BasicStringView { + using BasicStringView::BasicStringView; + + constexpr WStringView(BasicStringView src) noexcept + :BasicStringView(src) {} +}; + +#endif