libhext: C++ Library Documentation 1.0.13-b24695d
Loading...
Searching...
No Matches
CasePipe.h
Go to the documentation of this file.
1// Copyright 2015, 2016 Thomas Trapp
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef HEXT_CASE_PIPE_H_INCLUDED
16#define HEXT_CASE_PIPE_H_INCLUDED
17
18/// @file
19/// Declares hext::CasePipe
20
21#include "hext/Cloneable.h"
22#include "hext/StringPipe.h"
23#include "hext/Visibility.h"
24
25#include <string>
26
27
28namespace hext {
29
30
31/// Changes the case of a string. Changes to lower case by default.
32class HEXT_PUBLIC CasePipe final : public hext::Cloneable<CasePipe, StringPipe>
33{
34public:
35 /// CasePipe's options.
36 enum Option
37 {
38 ToLower = 1 << 1,
39 ToUpper = 1 << 2
40 };
41
42 /// Constructs a CasePipe.
43 ///
44 /// @param option: Change the string to this case. Default: to lower case.
45 explicit CasePipe(Option option = Option::ToLower) noexcept;
46
47 /// Changes the case of str.
48 std::string transform(std::string str) const override;
49
50private:
51 Option option_;
52};
53
54
55} // namespace hext
56
57
58#endif // HEXT_CASE_PIPE_H_INCLUDED
59
Defines template hext::Cloneable.
Declares hext::StringPipe.
Defines HEXT_PUBLIC and HEXT_PRIVATE.
#define HEXT_PUBLIC
Definition Visibility.h:26
Changes the case of a string. Changes to lower case by default.
Definition CasePipe.h:33
std::string transform(std::string str) const override
Changes the case of str.
CasePipe(Option option=Option::ToLower) noexcept
Constructs a CasePipe.
Option
CasePipe's options.
Definition CasePipe.h:37
Curiously recurring template pattern that extends a base class to provide a virtual method Cloneable:...
Definition Cloneable.h:37