From 59502017339ffb8fd34cb56351ba1284713cf4ec Mon Sep 17 00:00:00 2001 From: Marian Krivos Date: Tue, 23 Aug 2011 13:06:32 +0000 Subject: [PATCH] trunk/branch integration: compile fix --- Foundation/include/Poco/NamedMutex.h | 2 + Foundation/include/Poco/Platform.h | 55 +++++--- Foundation/include/Poco/Platform_WIN32.h | 10 +- Foundation/include/Poco/PriorityStrategy.h | 142 +++++++++++++++++++++ 4 files changed, 187 insertions(+), 22 deletions(-) create mode 100644 Foundation/include/Poco/PriorityStrategy.h diff --git a/Foundation/include/Poco/NamedMutex.h b/Foundation/include/Poco/NamedMutex.h index 4ba7325c3..95f383a65 100644 --- a/Foundation/include/Poco/NamedMutex.h +++ b/Foundation/include/Poco/NamedMutex.h @@ -48,6 +48,8 @@ #include "Poco/NamedMutex_WIN32U.h" #elif defined(POCO_OS_FAMILY_WINDOWS) #include "Poco/NamedMutex_WIN32.h" +#elif defined(POCO_ANDROID) +#include "Poco/NamedMutex_Android.h" #elif defined(POCO_OS_FAMILY_UNIX) #include "Poco/NamedMutex_UNIX.h" #else diff --git a/Foundation/include/Poco/Platform.h b/Foundation/include/Poco/Platform.h index 3ba50db83..518d8ac00 100644 --- a/Foundation/include/Poco/Platform.h +++ b/Foundation/include/Poco/Platform.h @@ -1,7 +1,7 @@ // // Platform.h // -// $Id: //poco/svn/Foundation/include/Poco/Platform.h#3 $ +// $Id: //poco/1.4/Foundation/include/Poco/Platform.h#4 $ // // Library: Foundation // Package: Core @@ -115,8 +115,11 @@ #define POCO_OS_FAMILY_UNIX 1 #define POCO_OS POCO_OS_CYGWIN #elif defined(__VMS) - #define POCO_OS_FAMILY_VMS 1 - #define POCO_OS POCO_OS_VMS + #define POCO_OS_FAMILY_VMS 1 + #define POCO_OS POCO_OS_VMS +#elif defined(POCO_VXWORKS) + #define POCO_OS_FAMILY_UNIX 1 + #define POCO_OS POCO_OS_VXWORKS #endif @@ -135,9 +138,12 @@ #define POCO_ARCH_ARM 0x0a #define POCO_ARCH_M68K 0x0b #define POCO_ARCH_S390 0x0c +#define POCO_ARCH_SH 0x0d +#define POCO_ARCH_NIOS2 0x0e + #if defined(__ALPHA) || defined(__alpha) || defined(__alpha__) || defined(_M_ALPHA) - #define POCO_ARCH POCO_ARCH_ALPHA + #define POCO_ARCH POCO_ARCH_ALPHA #define POCO_ARCH_LITTLE_ENDIAN 1 #elif defined(i386) || defined(__i386) || defined(__i386__) || defined(_M_IX86) #define POCO_ARCH POCO_ARCH_IA32 @@ -156,12 +162,12 @@ #define POCO_ARCH POCO_ARCH_MIPS #define POCO_ARCH_BIG_ENDIAN 1 #elif defined(__hppa) || defined(__hppa__) - #define POCO_ARCH POCO_ARCH_HPPA - #define POCO_ARCH_BIG_ENDIAN 1 + #define POCO_ARCH POCO_ARCH_HPPA + #define POCO_ARCH_BIG_ENDIAN 1 #elif defined(__PPC) || defined(__POWERPC__) || defined(__powerpc) || defined(__PPC__) || \ - defined(__powerpc__) || defined(__ppc__) || defined(_ARCH_PPC) || defined(_M_PPC) - #define POCO_ARCH POCO_ARCH_PPC - #define POCO_ARCH_BIG_ENDIAN 1 + defined(__powerpc__) || defined(__ppc__) || defined(__ppc) || defined(_ARCH_PPC) || defined(_M_PPC) + #define POCO_ARCH POCO_ARCH_PPC + #define POCO_ARCH_BIG_ENDIAN 1 #elif defined(_POWER) || defined(_ARCH_PWR) || defined(_ARCH_PWR2) || defined(_ARCH_PWR3) || \ defined(_ARCH_PWR4) || defined(__THW_RS6000) #define POCO_ARCH POCO_ARCH_POWER @@ -177,21 +183,36 @@ #define POCO_ARCH_LITTLE_ENDIAN 1 #endif #elif defined(__m68k__) - #define POCO_ARCH POCO_ARCH_M68K - #define POCO_ARCH_BIG_ENDIAN 1 + #define POCO_ARCH POCO_ARCH_M68K + #define POCO_ARCH_BIG_ENDIAN 1 #elif defined(__s390__) - #define POCO_ARCH POCO_ARCH_S390 - #define POCO_ARCH_BIG_ENDIAN 1 -#endif + #define POCO_ARCH POCO_ARCH_S390 + #define POCO_ARCH_BIG_ENDIAN 1 +#elif defined(__sh__) || defined(__sh) + #define POCO_ARCH POCO_ARCH_SH + #if defined(__LITTLE_ENDIAN__) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #define POCO_ARCH_BIG_ENDIAN 1 + #endif //TODO: need to determine Linux > 2.6.0 #if (POCO_OS == POCO_OS_LINUX) - #define POCO_HAVE_FD_EPOLL 1 -#endif + #define POCO_HAVE_FD_EPOLL 1 + #endif //TODO: determine all platforms having poll() call #if (POCO_OS == POCO_OS_SOLARIS) || (POCO_OS == POCO_OS_LINUX) - #define POCO_HAVE_FD_POLL 1 + #define POCO_HAVE_FD_POLL 1 + +#elif defined (nios2) || defined(__nios2) || defined(__nios2__) + #define POCO_ARCH POCO_ARCH_NIOS2 + #if defined(__nios2_little_endian) || defined(nios2_little_endian) || defined(__nios2_little_endian__) + #define POCO_ARCH_LITTLE_ENDIAN 1 + #else + #define POCO_ARCH_BIG_ENDIAN 1 + #endif + #endif diff --git a/Foundation/include/Poco/Platform_WIN32.h b/Foundation/include/Poco/Platform_WIN32.h index 389997aee..d7d82a3f9 100644 --- a/Foundation/include/Poco/Platform_WIN32.h +++ b/Foundation/include/Poco/Platform_WIN32.h @@ -56,11 +56,11 @@ // Reduce bloat imported by "Poco/UnWindows.h" #if defined(_WIN32) - #if !defined(_WIN32_WINNT) - #define _WIN32_WINNT 0x0500 - #endif - #if !defined(WIN32_LEAN_AND_MEAN) && !defined(POCO_BLOATED_WIN32) - #define WIN32_LEAN_AND_MEAN + #if !defined(_WIN32_WINNT) + #define _WIN32_WINNT 0x0501 + #endif + #if !defined(WIN32_LEAN_AND_MEAN) && !defined(POCO_BLOATED_WIN32) + #define WIN32_LEAN_AND_MEAN #endif #endif diff --git a/Foundation/include/Poco/PriorityStrategy.h b/Foundation/include/Poco/PriorityStrategy.h new file mode 100644 index 000000000..ce0f63719 --- /dev/null +++ b/Foundation/include/Poco/PriorityStrategy.h @@ -0,0 +1,142 @@ +// +// PriorityStrategy.h +// +// $Id: //poco/1.4/Foundation/include/Poco/PriorityStrategy.h#2 $ +// +// Library: Foundation +// Package: Events +// Module: PrioritytStrategy +// +// Implementation of the DefaultStrategy template. +// +// Copyright (c) 2006-2011, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// Permission is hereby granted, free of charge, to any person or organization +// obtaining a copy of the software and accompanying documentation covered by +// this license (the "Software") to use, reproduce, display, distribute, +// execute, and transmit the Software, and to prepare derivative works of the +// Software, and to permit third-parties to whom the Software is furnished to +// do so, all subject to the following: +// +// The copyright notices in the Software and this entire statement, including +// the above license grant, this restriction and the following disclaimer, +// must be included in all copies of the Software, in whole or in part, and +// all derivative works of the Software, unless such copies or derivative +// works are solely in the form of machine-executable object code generated by +// a source language processor. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// + + +#ifndef Foundation_PriorityStrategy_INCLUDED +#define Foundation_PriorityStrategy_INCLUDED + + +#include "Poco/NotificationStrategy.h" +#include "Poco/SharedPtr.h" +#include + + +namespace Poco { + + +template +class PriorityStrategy: public NotificationStrategy + /// NotificationStrategy for PriorityEvent. + /// + /// Delegates are kept in a std::vector<>, ordered + /// by their priority. +{ +public: + typedef SharedPtr DelegatePtr; + typedef std::vector Delegates; + typedef typename Delegates::iterator Iterator; + +public: + PriorityStrategy() + { + } + + PriorityStrategy(const PriorityStrategy& s): + _delegates(s._delegates) + { + } + + ~PriorityStrategy() + { + } + + void notify(const void* sender, TArgs& arguments) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->notify(sender, arguments); + } + } + + void add(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if ((*it)->priority() > delegate.priority()) + { + _delegates.insert(it, DelegatePtr(static_cast(delegate.clone()))); + return; + } + } + _delegates.push_back(DelegatePtr(static_cast(delegate.clone()))); + } + + void remove(const TDelegate& delegate) + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + if (delegate.equals(**it)) + { + (*it)->disable(); + _delegates.erase(it); + return; + } + } + } + + PriorityStrategy& operator = (const PriorityStrategy& s) + { + if (this != &s) + { + _delegates = s._delegates; + } + return *this; + } + + void clear() + { + for (Iterator it = _delegates.begin(); it != _delegates.end(); ++it) + { + (*it)->disable(); + } + _delegates.clear(); + } + + bool empty() const + { + return _delegates.empty(); + } + +protected: + Delegates _delegates; +}; + + +} // namespace Poco + + +#endif // Foundation_PriorityStrategy_INCLUDED