diff options
-rw-r--r-- | meowpp/meow/bases/pointers.h | 27 | ||||
-rw-r--r-- | meowpp/meow/syntax.h | 7 | ||||
-rw-r--r-- | meowpp/meow/threading/lockers.h | 2 | ||||
-rwxr-xr-x | meowpp/test.py | 2 |
4 files changed, 29 insertions, 9 deletions
diff --git a/meowpp/meow/bases/pointers.h b/meowpp/meow/bases/pointers.h index 9305bcf..59a676a 100644 --- a/meowpp/meow/bases/pointers.h +++ b/meowpp/meow/bases/pointers.h @@ -13,6 +13,7 @@ #include <cstdint> #include <cstdlib> +#include <meow/syntax.h> #include <meow/bases/object.h> #include <meow/debug/assert.h> #include <meow/alloc.h> @@ -164,6 +165,7 @@ class PointerTypesShareCounter { size_t* counter_; public: + PointerTypesShareCounter(); friend size_t* GetPointerCounter(PointerTypesShareCounter const* ptr); }; @@ -171,6 +173,10 @@ size_t* GetPointerCounter(PointerTypesShareCounter const* ptr) { return ptr->counter_; } +inline PointerTypesShareCounter::PointerTypesShareCounter() { + MEOW_SUPPRESS_UNUSED_WARNING(GetPointerCounter); +} + } @@ -477,6 +483,8 @@ class EntryPointerBase : public Object { * @brief Copies from another EntryPointerBase. */ virtual void CopyFrom(EntryPointerBase const *) = 0; + + using Object::CopyFrom; /*! * @brief Creates and returns a copy of itself. @@ -548,7 +556,6 @@ class NormalEntryPointer : counter_ = NewEntry<size_t>(1); } public: - struct CREATE_OBJ {}; /*! * @brief Points to NULL @@ -578,7 +585,7 @@ class NormalEntryPointer : * @param [in] args Arguments for the constructor of the Type. */ template<typename... Args> - NormalEntryPointer(CREATE_OBJ, Args... args) : + NormalEntryPointer(size_t, Args... args) : NormalEntryPointer(NewEntry<Type>(args...)) {} @@ -622,12 +629,17 @@ class EntryPointerTypesShareImpl { public: friend Object* GetEntryPointerImpl(EntryPointerTypesShareImpl const* ptr); + EntryPointerTypesShareImpl(); }; Object* GetEntryPointerImpl(EntryPointerTypesShareImpl const* ptr) { return ptr->impl_; } +inline EntryPointerTypesShareImpl::EntryPointerTypesShareImpl() { + MEOW_SUPPRESS_UNUSED_WARNING(GetEntryPointerImpl); +} + } @@ -672,8 +684,7 @@ class EntryPointer : public Object, public EntryPointerTypesShareImpl { EntryPointer(size_t n, Args... args) { set_impl_( dynamic_cast<EntryPointerBase<Type>*>( - NewEntry<NormalEntryPointer<Type>>( - typename NormalEntryPointer<Type>::CREATE_OBJ(), args...))); + NewEntry<NormalEntryPointer<Type>>(0, args...))); } /*! @@ -795,8 +806,12 @@ class EntryPointer : public Object, public EntryPointerTypesShareImpl { * @param [in] t Another pointer. */ EntryPointer& CopyFrom(EntryPointer const & t) { - DeleteEntry(get_impl_()); - set_impl_(t.get_impl_()->Copy()); + if (is_entry_of_array() == t.is_entry_of_array()) { + get_impl_()->CopyFrom(t.get_impl_()); + } else { + DeleteEntry(get_impl_()); + set_impl_(t.get_impl_()->Copy()); + } return *this; } diff --git a/meowpp/meow/syntax.h b/meowpp/meow/syntax.h index f1b1424..ec23ae6 100644 --- a/meowpp/meow/syntax.h +++ b/meowpp/meow/syntax.h @@ -32,9 +32,14 @@ for (__VA_ARGS__; with_flag__##__LINE__; \ with_flag__##__LINE__ = false) -/** +/*! * @brief Python style keyword pass for empty block. */ #define pass +/*! + * @brief Prevent some warning. + */ +#define MEOW_SUPPRESS_UNUSED_WARNING(x) (void)(x) + #endif // __MEOW_SYNTAX_H__ diff --git a/meowpp/meow/threading/lockers.h b/meowpp/meow/threading/lockers.h index fe06222..a6360b2 100644 --- a/meowpp/meow/threading/lockers.h +++ b/meowpp/meow/threading/lockers.h @@ -5,7 +5,7 @@ * @author cathook */ #ifndef __MEOW_THREADING_LOCKERS_H__ -#define __MEOW_THREADING_LOCKES_H__ +#define __MEOW_THREADING_LOCKERS_H__ #include <meow/bases/object.h> #include <meow/bases/state.h> diff --git a/meowpp/test.py b/meowpp/test.py index 40de33c..cbb7b8d 100755 --- a/meowpp/test.py +++ b/meowpp/test.py @@ -17,7 +17,7 @@ JOIN_TIMEOUT = 1 class Default(object): COMPILER = 'g++' - COMPILE_ARGS = '-g -Wall -Werror -std=c++11 -pedantic -pthread' + COMPILE_ARGS = '-g -Wall -Werror -std=c++11 -pedantic -pthread -lstdc++' PROJ_PATH = os.getcwd() TEST_PATH = os.getcwd() TIME_LIMIT = 30 |