Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
googletest
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
googletest
Commits
a198966d
Commit
a198966d
authored
Jan 29, 2011
by
vladlosev
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Renames some internal functions to avoid name clashes.
parent
48b13151
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
26 deletions
+34
-26
gtest-printers.h
include/gtest/gtest-printers.h
+6
-6
gtest-port.h
include/gtest/internal/gtest-port.h
+19
-11
gtest-printers.cc
src/gtest-printers.cc
+2
-2
gtest-port_test.cc
test/gtest-port_test.cc
+7
-7
No files found.
include/gtest/gtest-printers.h
View file @
a198966d
...
@@ -404,22 +404,22 @@ GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
...
@@ -404,22 +404,22 @@ GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
// Overloads for C strings.
// Overloads for C strings.
GTEST_API_
void
PrintTo
(
const
char
*
s
,
::
std
::
ostream
*
os
);
GTEST_API_
void
PrintTo
(
const
char
*
s
,
::
std
::
ostream
*
os
);
inline
void
PrintTo
(
char
*
s
,
::
std
::
ostream
*
os
)
{
inline
void
PrintTo
(
char
*
s
,
::
std
::
ostream
*
os
)
{
PrintTo
(
implicit_cast
<
const
char
*>
(
s
),
os
);
PrintTo
(
ImplicitCast_
<
const
char
*>
(
s
),
os
);
}
}
// signed/unsigned char is often used for representing binary data, so
// signed/unsigned char is often used for representing binary data, so
// we print pointers to it as void* to be safe.
// we print pointers to it as void* to be safe.
inline
void
PrintTo
(
const
signed
char
*
s
,
::
std
::
ostream
*
os
)
{
inline
void
PrintTo
(
const
signed
char
*
s
,
::
std
::
ostream
*
os
)
{
PrintTo
(
implicit_cast
<
const
void
*>
(
s
),
os
);
PrintTo
(
ImplicitCast_
<
const
void
*>
(
s
),
os
);
}
}
inline
void
PrintTo
(
signed
char
*
s
,
::
std
::
ostream
*
os
)
{
inline
void
PrintTo
(
signed
char
*
s
,
::
std
::
ostream
*
os
)
{
PrintTo
(
implicit_cast
<
const
void
*>
(
s
),
os
);
PrintTo
(
ImplicitCast_
<
const
void
*>
(
s
),
os
);
}
}
inline
void
PrintTo
(
const
unsigned
char
*
s
,
::
std
::
ostream
*
os
)
{
inline
void
PrintTo
(
const
unsigned
char
*
s
,
::
std
::
ostream
*
os
)
{
PrintTo
(
implicit_cast
<
const
void
*>
(
s
),
os
);
PrintTo
(
ImplicitCast_
<
const
void
*>
(
s
),
os
);
}
}
inline
void
PrintTo
(
unsigned
char
*
s
,
::
std
::
ostream
*
os
)
{
inline
void
PrintTo
(
unsigned
char
*
s
,
::
std
::
ostream
*
os
)
{
PrintTo
(
implicit_cast
<
const
void
*>
(
s
),
os
);
PrintTo
(
ImplicitCast_
<
const
void
*>
(
s
),
os
);
}
}
// MSVC can be configured to define wchar_t as a typedef of unsigned
// MSVC can be configured to define wchar_t as a typedef of unsigned
...
@@ -431,7 +431,7 @@ inline void PrintTo(unsigned char* s, ::std::ostream* os) {
...
@@ -431,7 +431,7 @@ inline void PrintTo(unsigned char* s, ::std::ostream* os) {
// Overloads for wide C strings
// Overloads for wide C strings
GTEST_API_
void
PrintTo
(
const
wchar_t
*
s
,
::
std
::
ostream
*
os
);
GTEST_API_
void
PrintTo
(
const
wchar_t
*
s
,
::
std
::
ostream
*
os
);
inline
void
PrintTo
(
wchar_t
*
s
,
::
std
::
ostream
*
os
)
{
inline
void
PrintTo
(
wchar_t
*
s
,
::
std
::
ostream
*
os
)
{
PrintTo
(
implicit_cast
<
const
wchar_t
*>
(
s
),
os
);
PrintTo
(
ImplicitCast_
<
const
wchar_t
*>
(
s
),
os
);
}
}
#endif
#endif
...
...
include/gtest/internal/gtest-port.h
View file @
a198966d
...
@@ -919,25 +919,29 @@ inline void FlushInfoLog() { fflush(NULL); }
...
@@ -919,25 +919,29 @@ inline void FlushInfoLog() { fflush(NULL); }
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
//
//
// Use
implicit_cast
as a safe version of static_cast for upcasting in
// Use
ImplicitCast_
as a safe version of static_cast for upcasting in
// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
// const Foo*). When you use
implicit_cast
, the compiler checks that
// const Foo*). When you use
ImplicitCast_
, the compiler checks that
// the cast is safe. Such explicit
implicit_cast
s are necessary in
// the cast is safe. Such explicit
ImplicitCast_
s are necessary in
// surprisingly many situations where C++ demands an exact type match
// surprisingly many situations where C++ demands an exact type match
// instead of an argument type convertable to a target type.
// instead of an argument type convertable to a target type.
//
//
// The syntax for using
implicit_cast
is the same as for static_cast:
// The syntax for using
ImplicitCast_
is the same as for static_cast:
//
//
//
implicit_cast
<ToType>(expr)
//
ImplicitCast_
<ToType>(expr)
//
//
//
implicit_cast
would have been part of the C++ standard library,
//
ImplicitCast_
would have been part of the C++ standard library,
// but the proposal was submitted too late. It will probably make
// but the proposal was submitted too late. It will probably make
// its way into the language in the future.
// its way into the language in the future.
//
// This relatively ugly name is intentional. It prevents clashes with
// similar functions users may have (e.g., implicit_cast). The internal
// namespace alone is not enough because the function can be found by ADL.
template
<
typename
To
>
template
<
typename
To
>
inline
To
implicit_cast
(
To
x
)
{
return
x
;
}
inline
To
ImplicitCast_
(
To
x
)
{
return
x
;
}
// When you upcast (that is, cast a pointer from type Foo to type
// When you upcast (that is, cast a pointer from type Foo to type
// SuperclassOfFoo), it's fine to use
implicit_cast
<>, since upcasts
// SuperclassOfFoo), it's fine to use
ImplicitCast_
<>, since upcasts
// always succeed. When you downcast (that is, cast a pointer from
// always succeed. When you downcast (that is, cast a pointer from
// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
// how do you know the pointer is really of type SubclassOfFoo? It
// how do you know the pointer is really of type SubclassOfFoo? It
...
@@ -953,15 +957,19 @@ inline To implicit_cast(To x) { return x; }
...
@@ -953,15 +957,19 @@ inline To implicit_cast(To x) { return x; }
// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
// if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
// if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
// You should design the code some other way not to need this.
// You should design the code some other way not to need this.
template
<
typename
To
,
typename
From
>
// use like this: down_cast<T*>(foo);
//
inline
To
down_cast
(
From
*
f
)
{
// so we only accept pointers
// This relatively ugly name is intentional. It prevents clashes with
// similar functions users may have (e.g., down_cast). The internal
// namespace alone is not enough because the function can be found by ADL.
template
<
typename
To
,
typename
From
>
// use like this: DownCast_<T*>(foo);
inline
To
DownCast_
(
From
*
f
)
{
// so we only accept pointers
// Ensures that To is a sub-type of From *. This test is here only
// Ensures that To is a sub-type of From *. This test is here only
// for compile-time type checking, and has no overhead in an
// for compile-time type checking, and has no overhead in an
// optimized build at run-time, as it will be optimized away
// optimized build at run-time, as it will be optimized away
// completely.
// completely.
if
(
false
)
{
if
(
false
)
{
const
To
to
=
NULL
;
const
To
to
=
NULL
;
::
testing
::
internal
::
implicit_cast
<
From
*>
(
to
);
::
testing
::
internal
::
ImplicitCast_
<
From
*>
(
to
);
}
}
#if GTEST_HAS_RTTI
#if GTEST_HAS_RTTI
...
...
src/gtest-printers.cc
View file @
a198966d
...
@@ -308,7 +308,7 @@ void PrintTo(const char* s, ostream* os) {
...
@@ -308,7 +308,7 @@ void PrintTo(const char* s, ostream* os) {
if
(
s
==
NULL
)
{
if
(
s
==
NULL
)
{
*
os
<<
"NULL"
;
*
os
<<
"NULL"
;
}
else
{
}
else
{
*
os
<<
implicit_cast
<
const
void
*>
(
s
)
<<
" pointing to "
;
*
os
<<
ImplicitCast_
<
const
void
*>
(
s
)
<<
" pointing to "
;
PrintCharsAsStringTo
(
s
,
strlen
(
s
),
os
);
PrintCharsAsStringTo
(
s
,
strlen
(
s
),
os
);
}
}
}
}
...
@@ -325,7 +325,7 @@ void PrintTo(const wchar_t* s, ostream* os) {
...
@@ -325,7 +325,7 @@ void PrintTo(const wchar_t* s, ostream* os) {
if
(
s
==
NULL
)
{
if
(
s
==
NULL
)
{
*
os
<<
"NULL"
;
*
os
<<
"NULL"
;
}
else
{
}
else
{
*
os
<<
implicit_cast
<
const
void
*>
(
s
)
<<
" pointing to "
;
*
os
<<
ImplicitCast_
<
const
void
*>
(
s
)
<<
" pointing to "
;
PrintWideCharsAsStringTo
(
s
,
wcslen
(
s
),
os
);
PrintWideCharsAsStringTo
(
s
,
wcslen
(
s
),
os
);
}
}
}
}
...
...
test/gtest-port_test.cc
View file @
a198966d
...
@@ -79,12 +79,12 @@ class Derived : public Base {
...
@@ -79,12 +79,12 @@ class Derived : public Base {
TEST
(
ImplicitCastTest
,
ConvertsPointers
)
{
TEST
(
ImplicitCastTest
,
ConvertsPointers
)
{
Derived
derived
(
0
);
Derived
derived
(
0
);
EXPECT_TRUE
(
&
derived
==
::
testing
::
internal
::
implicit_cast
<
Base
*>
(
&
derived
));
EXPECT_TRUE
(
&
derived
==
::
testing
::
internal
::
ImplicitCast_
<
Base
*>
(
&
derived
));
}
}
TEST
(
ImplicitCastTest
,
CanUseInheritance
)
{
TEST
(
ImplicitCastTest
,
CanUseInheritance
)
{
Derived
derived
(
1
);
Derived
derived
(
1
);
Base
base
=
::
testing
::
internal
::
implicit_cast
<
Base
>
(
derived
);
Base
base
=
::
testing
::
internal
::
ImplicitCast_
<
Base
>
(
derived
);
EXPECT_EQ
(
derived
.
member
(),
base
.
member
());
EXPECT_EQ
(
derived
.
member
(),
base
.
member
());
}
}
...
@@ -103,7 +103,7 @@ class Castable {
...
@@ -103,7 +103,7 @@ class Castable {
TEST
(
ImplicitCastTest
,
CanUseNonConstCastOperator
)
{
TEST
(
ImplicitCastTest
,
CanUseNonConstCastOperator
)
{
bool
converted
=
false
;
bool
converted
=
false
;
Castable
castable
(
&
converted
);
Castable
castable
(
&
converted
);
Base
base
=
::
testing
::
internal
::
implicit_cast
<
Base
>
(
castable
);
Base
base
=
::
testing
::
internal
::
ImplicitCast_
<
Base
>
(
castable
);
EXPECT_TRUE
(
converted
);
EXPECT_TRUE
(
converted
);
}
}
...
@@ -122,7 +122,7 @@ class ConstCastable {
...
@@ -122,7 +122,7 @@ class ConstCastable {
TEST
(
ImplicitCastTest
,
CanUseConstCastOperatorOnConstValues
)
{
TEST
(
ImplicitCastTest
,
CanUseConstCastOperatorOnConstValues
)
{
bool
converted
=
false
;
bool
converted
=
false
;
const
ConstCastable
const_castable
(
&
converted
);
const
ConstCastable
const_castable
(
&
converted
);
Base
base
=
::
testing
::
internal
::
implicit_cast
<
Base
>
(
const_castable
);
Base
base
=
::
testing
::
internal
::
ImplicitCast_
<
Base
>
(
const_castable
);
EXPECT_TRUE
(
converted
);
EXPECT_TRUE
(
converted
);
}
}
...
@@ -148,14 +148,14 @@ TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) {
...
@@ -148,14 +148,14 @@ TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) {
bool
converted
=
false
;
bool
converted
=
false
;
bool
const_converted
=
false
;
bool
const_converted
=
false
;
ConstAndNonConstCastable
castable
(
&
converted
,
&
const_converted
);
ConstAndNonConstCastable
castable
(
&
converted
,
&
const_converted
);
Base
base
=
::
testing
::
internal
::
implicit_cast
<
Base
>
(
castable
);
Base
base
=
::
testing
::
internal
::
ImplicitCast_
<
Base
>
(
castable
);
EXPECT_TRUE
(
converted
);
EXPECT_TRUE
(
converted
);
EXPECT_FALSE
(
const_converted
);
EXPECT_FALSE
(
const_converted
);
converted
=
false
;
converted
=
false
;
const_converted
=
false
;
const_converted
=
false
;
const
ConstAndNonConstCastable
const_castable
(
&
converted
,
&
const_converted
);
const
ConstAndNonConstCastable
const_castable
(
&
converted
,
&
const_converted
);
base
=
::
testing
::
internal
::
implicit_cast
<
Base
>
(
const_castable
);
base
=
::
testing
::
internal
::
ImplicitCast_
<
Base
>
(
const_castable
);
EXPECT_FALSE
(
converted
);
EXPECT_FALSE
(
converted
);
EXPECT_TRUE
(
const_converted
);
EXPECT_TRUE
(
const_converted
);
}
}
...
@@ -167,7 +167,7 @@ class To {
...
@@ -167,7 +167,7 @@ class To {
TEST
(
ImplicitCastTest
,
CanUseImplicitConstructor
)
{
TEST
(
ImplicitCastTest
,
CanUseImplicitConstructor
)
{
bool
converted
=
false
;
bool
converted
=
false
;
To
to
=
::
testing
::
internal
::
implicit_cast
<
To
>
(
&
converted
);
To
to
=
::
testing
::
internal
::
ImplicitCast_
<
To
>
(
&
converted
);
(
void
)
to
;
(
void
)
to
;
EXPECT_TRUE
(
converted
);
EXPECT_TRUE
(
converted
);
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment