acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
composite.h
1#pragma once
2
3
4
5//
6//
7//class CLASS_DECL_ACME string_composite :
8// public string_interface
9//{
10//private:
11//
12//
13// string * m_pstring;
14// string_interface * m_pinterface;
15//
16//
17//public:
18//
19//
20// inline string_composite() : m_pstring(nullptr), m_pinterface(nullptr) {}
21// inline string_composite(const string_composite & str) : m_pstring(str.m_pstring), m_pinterface(str.m_pinterface) {}
22// inline string_composite(string & str) : m_pstring(&str), m_pinterface(nullptr) {}
23// inline string_composite(const ::scoped_string & scopedstr) : m_pstring((string *) &str), m_pinterface(nullptr) {}
24// inline string_composite(const string * pstr) : m_pstring(const_cast < string * > (pstr)) , m_pinterface(nullptr) {}
25// inline string_composite(string_interface & strinterface) : m_pstring(nullptr),m_pinterface(&strinterface) {}
26// inline string_composite(const string_interface & strinterface) : m_pstring(nullptr), m_pinterface(const_cast < string_interface * > (&strinterface)) {}
27//
28//
29// virtual character_count get_length() const;
30// virtual void get_string(char_pointer psz) const;
31// virtual void set_string(const ::scoped_string & scopedstr, const ::action_context & action_context);
32//
33//
34//};
35//
36//
37//
38//inline character_count string_composite::get_length() const
39//{
40//
41// if(m_pstring != nullptr)
42// return m_pstring->get_length();
43// else
44// return m_pinterface->get_length();
45//
46//}
47//
48//
49//inline void string_composite::get_string(char_pointer psz) const
50//{
51// if(m_pstring != nullptr)
52// m_pstring->get_string(scopedstr);
53// else
54// m_pinterface->get_string(scopedstr);
55//}
56//
57//inline void string_composite::set_string(const ::scoped_string & scopedstr, const ::action_context & action_context)
58//{
59// if(m_pstring != nullptr)
60// m_pstring->set_string(str);
61// else
62// m_pinterface->set_string(str,action_context);
63//}
64//
65//
66//namespace str
67//{
68//
69// extern CLASS_DECL_ACME const_empty_string g_strEmpty;
70//
71// CLASS_DECL_ACME string_interface & empty_string();
72//
73//}
74//
75//
76//
77//template < >
78//inline string & to_string(string & str,string_composite & ca)
79//{
80//
81// ca.get_string(str.get_buffer(ca.get_length()));
82//
83// str.ReleaseBuffer(); // search for 0 termination (if you want a string that accepts nulls, use binary strng (bstring)
84//
85// return str;
86//
87//}
88//
89//