My Project
Toggle main menu visibility
Loading...
Searching...
No Matches
libpolys
tests
cxxtest
StdValueTraits.h
Go to the documentation of this file.
1
#ifndef __cxxtest_StdValueTraits_h__
2
#define __cxxtest_StdValueTraits_h__
3
4
//
5
// This file defines ValueTraits for std:: stuff.
6
// It is #included by <cxxtest/ValueTraits.h> if you
7
// define CXXTEST_HAVE_STD
8
//
9
10
#include <
cxxtest/ValueTraits.h
>
11
#include <
cxxtest/StdHeaders.h
>
12
13
#ifdef _CXXTEST_OLD_STD
14
# define CXXTEST_STD(x) x
15
#else
// !_CXXTEST_OLD_STD
16
# define CXXTEST_STD(x) std::x
17
#endif
// _CXXTEST_OLD_STD
18
19
#ifndef CXXTEST_USER_VALUE_TRAITS
20
21
namespace
CxxTest
22
{
23
//
24
// NOTE: This should have been
25
// template<class Char, class Traits, class Allocator>
26
// class ValueTraits< std::basic_string<Char, Traits, Allocator> > {};
27
// But MSVC doesn't support it (yet).
28
//
29
30
//
31
// If we have std::string, we might as well use it
32
//
33
class
StdTraitsBase
34
{
35
public
:
36
StdTraitsBase
&
operator<<
(
const
CXXTEST_STD
(
string
) &
s
) { _s +=
s
;
return
*
this
; }
37
const
char
*
asString
()
const
{
return
_s.c_str(); }
38
39
private
:
40
CXXTEST_STD
(
string
) _s;
41
};
42
43
//
44
// std::string
45
//
46
CXXTEST_TEMPLATE_INSTANTIATION
47
class
ValueTraits
<
const
CXXTEST_STD
(
string
)> :
public
StdTraitsBase
48
{
49
public
:
50
ValueTraits
(
const
CXXTEST_STD
(
string
) &
s
)
51
{
52
*
this
<<
"\""
;
53
for
(
unsigned
i
= 0;
i
<
s
.length(); ++
i
) {
54
char
c[
sizeof
(
"\\xXX"
)];
55
charToString
(
s
[
i
], c );
56
*
this
<< c;
57
}
58
*
this
<<
"\""
;
59
}
60
};
61
62
CXXTEST_COPY_CONST_TRAITS
(
CXXTEST_STD
(
string
) );
63
64
#ifndef _CXXTEST_OLD_STD
65
//
66
// std::wstring
67
//
68
CXXTEST_TEMPLATE_INSTANTIATION
69
class
ValueTraits
<
const
CXXTEST_STD
(basic_string<wchar_t>)> :
public
StdTraitsBase
70
{
71
public
:
72
ValueTraits
(
const
CXXTEST_STD
(basic_string<wchar_t>) &
s
)
73
{
74
*
this
<<
"L\""
;
75
for
(
unsigned
i
= 0;
i
<
s
.length(); ++
i
) {
76
char
c[
sizeof
(
"\\x12345678"
)];
77
charToString
( (
unsigned
long
)
s
[
i
], c );
78
*
this
<< c;
79
}
80
*
this
<<
"\""
;
81
}
82
};
83
84
CXXTEST_COPY_CONST_TRAITS
(
CXXTEST_STD
(basic_string<wchar_t>) );
85
#endif
// _CXXTEST_OLD_STD
86
87
//
88
// Convert a range defined by iterators to a string
89
// This is useful for almost all STL containers
90
//
91
template
<
class
Stream,
class
Iterator>
92
void
dumpRange
( Stream &
s
, Iterator first, Iterator
last
)
93
{
94
s
<<
"{ "
;
95
while
( first !=
last
) {
96
s
<<
TS_AS_STRING
(*first);
97
++ first;
98
s
<< ((first ==
last
) ?
" }"
:
", "
);
99
}
100
}
101
102
#ifdef _CXXTEST_PARTIAL_TEMPLATE_SPECIALIZATION
103
//
104
// std::pair
105
//
106
template
<
class
First,
class
Second>
107
class
ValueTraits<
CXXTEST_STD
(pair)<First, Second> > :
public
StdTraitsBase
108
{
109
public
:
110
ValueTraits
(
const
CXXTEST_STD
(pair)<First, Second> &
p
)
111
{
112
*
this
<<
"<"
<<
TS_AS_STRING
(
p
.first ) <<
", "
<<
TS_AS_STRING
(
p
.second ) <<
">"
;
113
}
114
};
115
116
//
117
// std::vector
118
//
119
template
<
class
Element>
120
class
ValueTraits
<
CXXTEST_STD
(vector)<Element> > :
public
StdTraitsBase
121
{
122
public
:
123
ValueTraits
(
const
CXXTEST_STD
(vector)<Element> &
v
)
124
{
125
dumpRange
( *
this
,
v
.begin(),
v
.end() );
126
}
127
};
128
129
//
130
// std::list
131
//
132
template
<
class
Element>
133
class
ValueTraits
<
CXXTEST_STD
(list)<Element> > :
public
StdTraitsBase
134
{
135
public
:
136
ValueTraits
(
const
CXXTEST_STD
(list)<Element> &
l
)
137
{
138
dumpRange
( *
this
,
l
.begin(),
l
.end() );
139
}
140
};
141
142
//
143
// std::set
144
//
145
template
<
class
Element>
146
class
ValueTraits
<
CXXTEST_STD
(set)<Element> > :
public
StdTraitsBase
147
{
148
public
:
149
ValueTraits
(
const
CXXTEST_STD
(set)<Element> &
s
)
150
{
151
dumpRange
( *
this
,
s
.begin(),
s
.end() );
152
}
153
};
154
155
//
156
// std::map
157
//
158
template
<
class
Key,
class
Value>
159
class
ValueTraits
<
CXXTEST_STD
(
map
)<Key, Value> > :
public
StdTraitsBase
160
{
161
public
:
162
ValueTraits
(
const
CXXTEST_STD
(
map
)<Key, Value> &
m
)
163
{
164
dumpRange
( *
this
,
m
.begin(),
m
.end() );
165
}
166
};
167
168
//
169
// std::deque
170
//
171
template
<
class
Element>
172
class
ValueTraits
<
CXXTEST_STD
(deque)<Element> > :
public
StdTraitsBase
173
{
174
public
:
175
ValueTraits
(
const
CXXTEST_STD
(deque)<Element> &d )
176
{
177
dumpRange
( *
this
, d.begin(), d.end() );
178
}
179
};
180
181
//
182
// std::multiset
183
//
184
template
<
class
Element>
185
class
ValueTraits
<
CXXTEST_STD
(multiset)<Element> > :
public
StdTraitsBase
186
{
187
public
:
188
ValueTraits
(
const
CXXTEST_STD
(multiset)<Element> &ms )
189
{
190
dumpRange
( *
this
, ms.begin(), ms.end() );
191
}
192
};
193
194
//
195
// std::multimap
196
//
197
template
<
class
Key,
class
Value>
198
class
ValueTraits
<
CXXTEST_STD
(multimap)<Key, Value> > :
public
StdTraitsBase
199
{
200
public
:
201
ValueTraits
(
const
CXXTEST_STD
(multimap)<Key, Value> &mm )
202
{
203
dumpRange
( *
this
, mm.begin(), mm.end() );
204
}
205
};
206
207
//
208
// std::complex
209
//
210
template
<
class
Number>
211
class
ValueTraits
<
CXXTEST_STD
(complex)<Number> > :
public
StdTraitsBase
212
{
213
public
:
214
ValueTraits
(
const
CXXTEST_STD
(complex)<Number> &c )
215
{
216
if
( !c.imag() )
217
*
this
<<
TS_AS_STRING
(c.real());
218
else
if
( !c.real() )
219
*
this
<<
"("
<<
TS_AS_STRING
(c.imag()) <<
" * i)"
;
220
else
221
*
this
<<
"("
<<
TS_AS_STRING
(c.real()) <<
" + "
<<
TS_AS_STRING
(c.imag()) <<
" * i)"
;
222
}
223
};
224
#endif
// _CXXTEST_PARTIAL_TEMPLATE_SPECIALIZATION
225
};
226
227
#endif
// CXXTEST_USER_VALUE_TRAITS
228
229
#endif
// __cxxtest_StdValueTraits_h__
StdHeaders.h
CXXTEST_STD
#define CXXTEST_STD(x)
Definition
StdValueTraits.h:16
ValueTraits.h
CXXTEST_TEMPLATE_INSTANTIATION
#define CXXTEST_TEMPLATE_INSTANTIATION
Definition
ValueTraits.h:18
CXXTEST_COPY_CONST_TRAITS
#define CXXTEST_COPY_CONST_TRAITS(CXXTEST_CLASS)
Definition
ValueTraits.h:113
TS_AS_STRING
#define TS_AS_STRING(x)
Definition
ValueTraits.h:26
l
int l
Definition
cfEzgcd.cc:100
m
int m
Definition
cfEzgcd.cc:128
i
int i
Definition
cfEzgcd.cc:132
p
int p
Definition
cfModGcd.cc:4086
map
CanonicalForm map(const CanonicalForm &primElem, const Variable &alpha, const CanonicalForm &F, const Variable &beta)
map from to such that is mapped onto
Definition
cf_map_ext.cc:505
CxxTest::StdTraitsBase
Definition
StdValueTraits.h:34
CxxTest::StdTraitsBase::asString
const char * asString() const
Definition
StdValueTraits.h:37
CxxTest::StdTraitsBase::operator<<
StdTraitsBase & operator<<(const CXXTEST_STD(string) &s)
Definition
StdValueTraits.h:36
CxxTest::StdTraitsBase::CXXTEST_STD
CXXTEST_STD(string) _s
CxxTest::ValueTraits< const CXXTEST_STD(basic_string< wchar_t >)>::ValueTraits
ValueTraits(const CXXTEST_STD(basic_string< wchar_t >) &s)
Definition
StdValueTraits.h:72
CxxTest::ValueTraits< const CXXTEST_STD(string)>::ValueTraits
ValueTraits(const CXXTEST_STD(string) &s)
Definition
StdValueTraits.h:50
CxxTest::ValueTraits
Definition
ValueTraits.h:75
CxxTest::ValueTraits::ValueTraits
ValueTraits(const T &t)
Definition
ValueTraits.h:80
v
const Variable & v
< [in] a sqrfree bivariate poly
Definition
facBivar.h:39
const
#define const
Definition
fegetopt.c:39
last
STATIC_VAR poly last
Definition
hdegree.cc:1138
string
#define string
Definition
libparse.cc:1252
CxxTest
Definition
Descriptions.cpp:7
CxxTest::dumpRange
void dumpRange(Stream &s, Iterator first, Iterator last)
Definition
StdValueTraits.h:92
CxxTest::charToString
char * charToString(unsigned long c, char *s)
Definition
ValueTraits.cpp:48
CxxTest::s
char * s
Definition
ValueTraits.h:143
Generated on
for My Project by
doxygen 1.17.0
for
Singular