From e82ec688206f12afd64550ed158ee68278d4fa8f Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Tue, 17 Sep 2013 18:18:49 -0700 Subject: [PATCH] Remove obsolete beast_Function --- Builds/VisualStudio2012/beast.vcxproj | 3 +- Builds/VisualStudio2012/beast.vcxproj.filters | 12 +- modules/beast_core/beast_core.h | 4 +- .../beast_core/functional/beast_Function.h | 266 ------------------ .../{functional => memory}/SharedFunction.h | 0 5 files changed, 5 insertions(+), 280 deletions(-) delete mode 100644 modules/beast_core/functional/beast_Function.h rename modules/beast_core/{functional => memory}/SharedFunction.h (100%) diff --git a/Builds/VisualStudio2012/beast.vcxproj b/Builds/VisualStudio2012/beast.vcxproj index 99a33dcd2..ed9877d73 100644 --- a/Builds/VisualStudio2012/beast.vcxproj +++ b/Builds/VisualStudio2012/beast.vcxproj @@ -173,8 +173,6 @@ - - @@ -209,6 +207,7 @@ + diff --git a/Builds/VisualStudio2012/beast.vcxproj.filters b/Builds/VisualStudio2012/beast.vcxproj.filters index 8e6eaabfb..5292b52f9 100644 --- a/Builds/VisualStudio2012/beast.vcxproj.filters +++ b/Builds/VisualStudio2012/beast.vcxproj.filters @@ -149,9 +149,6 @@ {91538dcf-b219-4c80-9861-bb4949089775} - - {5df65855-1ccd-4997-97c1-f9788924ee2b} - {2f5b95a8-1adf-4319-8464-ddc2b2e03f0b} @@ -737,9 +734,6 @@ beast_core\maths - - beast_core\functional - beast_core\memory @@ -962,9 +956,6 @@ beast_asio\protocol - - beast_core\functional - beast_asio\basics @@ -1034,6 +1025,9 @@ beast_crypto\math + + beast_core\memory + diff --git a/modules/beast_core/beast_core.h b/modules/beast_core/beast_core.h index 9c806c00b..497d9c4d0 100644 --- a/modules/beast_core/beast_core.h +++ b/modules/beast_core/beast_core.h @@ -319,7 +319,7 @@ extern BEAST_API void BEAST_CALLTYPE logAssertion (char const* file, int line) n #include "diagnostic/beast_FPUFlags.h" #include "memory/SharedObject.h" #include "memory/SharedPtr.h" -#include "functional/SharedFunction.h" +#include "memory/SharedFunction.h" #include "diagnostic/ProtectedCall.h" #include "containers/beast_AbstractFifo.h" #include "text/beast_Identifier.h" @@ -407,8 +407,6 @@ extern BEAST_API void BEAST_CALLTYPE logAssertion (char const* file, int line) n #include "diagnostic/MeasureFunctionCallTime.h" -#include "functional/beast_Function.h" - #include "thread/beast_DeadlineTimer.h" #include "memory/beast_AllocatedBy.h" diff --git a/modules/beast_core/functional/beast_Function.h b/modules/beast_core/functional/beast_Function.h deleted file mode 100644 index bf3653d99..000000000 --- a/modules/beast_core/functional/beast_Function.h +++ /dev/null @@ -1,266 +0,0 @@ -//------------------------------------------------------------------------------ -/* - This file is part of Beast: https://github.com/vinniefalco/Beast - Copyright 2013, Vinnie Falco - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ -//============================================================================== - -#ifndef BEAST_FUNCTION_H_INCLUDED -#define BEAST_FUNCTION_H_INCLUDED - -// -// Strong replacement for boost::function: -// -// #1 Bounded memory requirement, avoids the free store. -// -// #2 Always refers to a functor (i.e. is never invalid) -// -// #3 Default value (None) is a function that -// returns a default object (the result type -// constructed with a default constructor). -// - -template -class Function; - -// -// nullary function -// - -template -class Function -{ -public: - typedef R result_type; - typedef Function self_type; - - struct None - { - typedef R result_type; - result_type operator () () const - { - return result_type (); - } - }; - - Function () - { - constructCopyOf (None ()); - } - - Function (Function const& f) - { - f.getCall ().constructCopyInto (m_storage); - } - - template - Function (Functor const& f) - { - constructCopyOf (f); - } - - ~Function () - { - getCall ().~Call (); - } - - Function& operator= (Function const& f) - { - getCall ().~Call (); - f.getCall ().constructCopyInto (m_storage); - return *this; - } - - template - Function& operator= (Functor const& f) - { - getCall ().~Call (); - constructCopyOf (f); - return *this; - } - - result_type operator () () - { - return getCall ().operator () (); - } - -private: - template - void constructCopyOf (Functor const& f) - { - // If this generates a compile error it means that - // the functor is too large for the static buffer. - // Increase the storage template parameter until - // the error message goes away. This might cause - // changes throughout the application with other - // template classes that depend on the size. - static_bassert (sizeof (StoredCall ) <= Bytes); - new (m_storage) StoredCall (f); - } - -private: - struct Call - { - virtual ~Call () {} - virtual void constructCopyInto (void* p) const = 0; - virtual result_type operator () () = 0; - }; - - template - struct StoredCall : Call - { - explicit StoredCall (Functor const& f) : m_f (f) { } - StoredCall (const StoredCall& c) : m_f (c.m_f) { } - void constructCopyInto (void* p) const - { - new (p) StoredCall (m_f); - } - result_type operator () () - { - return m_f (); - } - private: - Functor m_f; - }; - - Call& getCall () - { - return *reinterpret_cast (&m_storage[0]); - } - - Call const& getCall () const - { - return *reinterpret_cast (&m_storage[0]); - } - - char m_storage [Bytes]; // should be enough -}; - -//------------------------------------------------------------------------------ - -// -// unary function -// - -template -class Function -{ -public: - typedef R result_type; - typedef Function self_type; - - struct None - { - typedef R result_type; - result_type operator () (T1) const - { - return result_type (); - } - }; - - Function () - { - constructCopyOf (None ()); - } - - Function (const Function& f) - { - f.getCall ().constructCopyInto (m_storage); - } - - template - Function (Functor const& f) - { - constructCopyOf (f); - } - - ~Function () - { - getCall ().~Call (); - } - - Function& operator= (const Function& f) - { - getCall ().~Call (); - f.getCall ().constructCopyInto (m_storage); - return *this; - } - - template - Function& operator= (Functor const& f) - { - getCall ().~Call (); - constructCopyOf (f); - return *this; - } - - result_type operator () (T1 t1) - { - return getCall ().operator () (t1); - } - -private: - template - void constructCopyOf (Functor const& f) - { - // If this generates a compile error it means that - // the functor is too large for the static buffer. - // Increase the storage template parameter until - // the error message goes away. This might cause - // changes throughout the application with other - // template classes that depend on the size. - static_bassert (sizeof (StoredCall ) <= Bytes); - new (m_storage) StoredCall (f); - } - -private: - struct Call - { - virtual ~Call () {} - virtual void constructCopyInto (void* p) const = 0; - virtual result_type operator () (T1 t1) = 0; - }; - - template - struct StoredCall : Call - { - explicit StoredCall (Functor const& f) : m_f (f) { } - StoredCall (const StoredCall& c) : m_f (c.m_f) { } - void constructCopyInto (void* p) const - { - new (p) StoredCall (m_f); - } - result_type operator () (T1 t1) - { - return m_f (t1); - } - private: - Functor m_f; - }; - - Call& getCall () - { - return *reinterpret_cast (&m_storage[0]); - } - - Call const& getCall () const - { - return *reinterpret_cast (&m_storage[0]); - } - - char m_storage [Bytes]; // should be enough -}; - -#endif diff --git a/modules/beast_core/functional/SharedFunction.h b/modules/beast_core/memory/SharedFunction.h similarity index 100% rename from modules/beast_core/functional/SharedFunction.h rename to modules/beast_core/memory/SharedFunction.h