Skip to content

Commit 5ecad24

Browse files
committed
Update fakeit to v2.0.8
1 parent 7c0d97c commit 5ecad24

File tree

1 file changed

+69
-51
lines changed

1 file changed

+69
-51
lines changed

test/include/fakeit.hpp

Lines changed: 69 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
/*
33
* FakeIt - A Simplified C++ Mocking Framework
44
* Copyright (c) Eran Pe'er 2013
5-
* Generated: 2021-03-21 11:36:30.552658
5+
* Generated: 2021-04-11 20:16:43.585492
66
* Distributed under the MIT License. Please refer to the LICENSE file at:
77
* https://github.com/eranpeer/FakeIt
88
*/
@@ -5285,10 +5285,16 @@ namespace fakeit {
52855285

52865286
};
52875287
}
5288+
#if defined(__GNUG__) && !defined(__clang__)
5289+
#define FAKEIT_NO_DEVIRTUALIZE_ATTR [[gnu::optimize("no-devirtualize")]]
5290+
#else
5291+
#define FAKEIT_NO_DEVIRTUALIZE_ATTR
5292+
#endif
5293+
52885294
namespace fakeit {
52895295

52905296
template<typename TARGET, typename SOURCE>
5291-
[[gnu::optimize("no-devirtualize")]]
5297+
FAKEIT_NO_DEVIRTUALIZE_ATTR
52925298
TARGET union_cast(SOURCE source) {
52935299

52945300
union {
@@ -5310,15 +5316,23 @@ namespace fakeit {
53105316
class VTUtils {
53115317
public:
53125318

5319+
#ifdef __GNUG__
5320+
#ifndef __clang__
53135321
#pragma GCC diagnostic push
53145322
#pragma GCC diagnostic ignored "-Wcast-function-type"
5323+
#endif
5324+
#endif
53155325
template<typename C, typename R, typename ... arglist>
53165326
static unsigned int getOffset(R (C::*vMethod)(arglist...)) {
53175327
auto sMethod = reinterpret_cast<unsigned int (VirtualOffsetSelector::*)(int)>(vMethod);
53185328
VirtualOffsetSelector offsetSelctor;
53195329
return (offsetSelctor.*sMethod)(0);
53205330
}
5331+
#ifdef __GNUG__
5332+
#ifndef __clang__
53215333
#pragma GCC diagnostic pop
5334+
#endif
5335+
#endif
53225336

53235337
template<typename C>
53245338
static typename std::enable_if<std::has_virtual_destructor<C>::value, unsigned int>::type
@@ -5808,74 +5822,78 @@ namespace fakeit {
58085822
}
58095823
#include <new>
58105824

5811-
namespace fakeit {
5812-
5813-
#ifdef __GNUG__
5814-
#ifndef __clang__
5815-
#pragma GCC diagnostic push
5816-
#pragma GCC diagnostic ignored "-Wpedantic"
5817-
#endif
5818-
#endif
5819-
5820-
5821-
#ifdef _MSC_VER
5822-
#pragma warning( push )
5823-
#pragma warning( disable : 4200 )
5824-
#endif
58255825

5826+
namespace fakeit
5827+
{
5828+
namespace details
5829+
{
5830+
template <int instanceAreaSize, typename C, typename... BaseClasses>
5831+
class FakeObjectImpl
5832+
{
5833+
public:
5834+
void initializeDataMembersArea()
5835+
{
5836+
for (size_t i = 0; i < instanceAreaSize; ++i)
5837+
{
5838+
instanceArea[i] = (char) 0;
5839+
}
5840+
}
58265841

5827-
template<typename C, typename ... baseclasses>
5828-
class FakeObject {
5842+
protected:
5843+
VirtualTable<C, BaseClasses...> vtable;
5844+
char instanceArea[instanceAreaSize];
5845+
};
58295846

5830-
VirtualTable<C, baseclasses...> vtable;
5847+
template <typename C, typename... BaseClasses>
5848+
class FakeObjectImpl<0, C, BaseClasses...>
5849+
{
5850+
public:
5851+
void initializeDataMembersArea()
5852+
{}
58315853

5832-
static const size_t SIZE = sizeof(C) - sizeof(VirtualTable<C, baseclasses...>);
5833-
char instanceArea[SIZE ? SIZE : 0];
5854+
protected:
5855+
VirtualTable<C, BaseClasses...> vtable;
5856+
};
5857+
}
58345858

5835-
FakeObject(FakeObject const &) = delete;
5836-
FakeObject &operator=(FakeObject const &) = delete;
5859+
template <typename C, typename... BaseClasses>
5860+
class FakeObject
5861+
: public details::FakeObjectImpl<sizeof(C) - sizeof(VirtualTable<C, BaseClasses...>), C, BaseClasses...>
5862+
{
5863+
FakeObject(FakeObject const&) = delete;
5864+
FakeObject& operator=(FakeObject const&) = delete;
58375865

58385866
public:
5839-
5840-
FakeObject() : vtable() {
5841-
initializeDataMembersArea();
5842-
}
5843-
5844-
~FakeObject() {
5845-
vtable.dispose();
5867+
FakeObject()
5868+
{
5869+
this->initializeDataMembersArea();
58465870
}
58475871

5848-
void initializeDataMembersArea() {
5849-
for (size_t i = 0; i < SIZE; ++i) instanceArea[i] = (char) 0;
5872+
~FakeObject()
5873+
{
5874+
this->vtable.dispose();
58505875
}
58515876

5852-
void setMethod(unsigned int index, void *method) {
5853-
vtable.setMethod(index, method);
5877+
void setMethod(unsigned int index, void* method)
5878+
{
5879+
this->vtable.setMethod(index, method);
58545880
}
58555881

5856-
VirtualTable<C, baseclasses...> &getVirtualTable() {
5857-
return vtable;
5882+
VirtualTable<C, BaseClasses...>& getVirtualTable()
5883+
{
5884+
return this->vtable;
58585885
}
58595886

5860-
void setVirtualTable(VirtualTable<C, baseclasses...> &t) {
5861-
vtable = t;
5887+
void setVirtualTable(VirtualTable<C, BaseClasses...>& t)
5888+
{
5889+
this->vtable = t;
58625890
}
58635891

5864-
void setDtor(void *dtor) {
5865-
vtable.setDtor(dtor);
5892+
void setDtor(void* dtor)
5893+
{
5894+
this->vtable.setDtor(dtor);
58665895
}
58675896
};
5868-
5869-
#ifdef _MSC_VER
5870-
#pragma warning( pop )
5871-
#endif
5872-
5873-
#ifdef __GNUG__
5874-
#ifndef __clang__
5875-
#pragma GCC diagnostic pop
5876-
#endif
5877-
#endif
5878-
58795897
}
58805898
namespace fakeit {
58815899

0 commit comments

Comments
 (0)