Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
Charset.cpp
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4#include "Stroika/Foundation/StroikaPreComp.h"
5
7
8#include "Charset.h"
9
10using namespace Stroika::Foundation;
12
13// Comment this in to turn on aggressive noisy DbgTrace in this module
14//#define USE_NOISY_TRACE_IN_THIS_MODULE_ 1
15
16struct Charset::Rep_ {
17 Rep_ (const String& v)
18 : fValue{v}
19 {
20 }
21 String fValue;
22};
23
24/*
25 ********************************************************************************
26 ****************************** Characters::Charset *****************************
27 ********************************************************************************
28 */
29Charset::Charset (const std::string& charsetName)
30 : fRep_{make_shared<Rep_> (String{charsetName})} // conversion throws if not valid ascii
31{
32}
33Charset::Charset (const std::string_view& charsetName)
34 : fRep_{make_shared<Rep_> (String{charsetName})} // conversion asserts valid ASCII
35{
36}
37Charset::Charset (const String& charsetName)
38 : fRep_{make_shared<Rep_> (charsetName)}
39{
40}
41
42Charset::operator String () const
43{
44 return fRep_->fValue;
45}
46
47string Charset::AsNarrowSDKString () const
48{
49 return fRep_->fValue.AsNarrowSDKString ();
50}
51
52strong_ordering Charset::operator<=> (const Charset& rhs) const
53{
54 return String ::ThreeWayComparer{eCaseInsensitive}(fRep_->fValue, rhs.fRep_->fValue);
55}
56
57bool Charset::operator== (const Charset& rhs) const
58{
59 return String::EqualsComparer{eCaseInsensitive}(fRep_->fValue, rhs.fRep_->fValue);
60}
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Definition String.h:201