diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-01-14 23:54:53 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-01-14 23:54:53 +0000 |
| commit | a2374eb06a0f6d391d1d5ae04f50ce5e8076173a (patch) | |
| tree | a3b83b31e739e7b5312a3a99e9a1c1446ff29bbb /asdcplib/src/KM_platform.h | |
| parent | 38ff2954f40131a12aa8a037b9fc6c4abd3894b9 (diff) | |
Use out-of-tree asdcplib-cth
Diffstat (limited to 'asdcplib/src/KM_platform.h')
| -rw-r--r-- | asdcplib/src/KM_platform.h | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/asdcplib/src/KM_platform.h b/asdcplib/src/KM_platform.h deleted file mode 100644 index 266c01ae..00000000 --- a/asdcplib/src/KM_platform.h +++ /dev/null @@ -1,270 +0,0 @@ -/* -Copyright (c) 2004-2009, John Hurst -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - /*! \file KM_platform.h - \version $Id: KM_platform.h,v 1.6 2010/09/14 19:21:47 msheby Exp $ - \brief platform portability - */ - -#ifndef _KM_PLATFORM_H_ -# define _KM_PLATFORM_H_ - -# ifdef __APPLE__ -# ifdef __BIG_ENDIAN__ -# define KM_BIG_ENDIAN -# endif -# endif - -# ifdef KM_WIN32 -# define WIN32_LEAN_AND_MEAN -# define VC_EXTRALEAN -# include <windows.h> -/* we like the "SendMessage" name, so get rid of the preprocessor define - * and replace with an inline function */ -# undef SendMessage -#ifdef UNICODE
-inline
-WINUSERAPI
-LRESULT
-WINAPI
-SendMessage(
- HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam)
-{
- return SendMessageW(hWnd, Msg, wParam, lParam);
-}
-#else
-inline
-WINUSERAPI
-LRESULT
-WINAPI
-SendMessage(
- HWND hWnd,
- UINT Msg,
- WPARAM wParam,
- LPARAM lParam)
-{
- return SendMessageA(hWnd, Msg, wParam, lParam);
-}
-#endif // !UNICODE
- -# include <stdlib.h> -# include <stdio.h> -# include <stdarg.h> -# pragma warning(disable:4786) // Ignore "identifer > 255 characters" warning - -typedef unsigned __int64 ui64_t; -typedef __int64 i64_t; -# define i64_C(c) (i64_t)(c) -# define ui64_C(c) (ui64_t)(c) -# define snprintf _snprintf -# define vsnprintf _vsnprintf - -# else // KM_WIN32 -typedef unsigned long long ui64_t; -typedef long long i64_t; -# define i64_C(c) c##LL -# define ui64_C(c) c##ULL - -# endif // KM_WIN32 - -# include <stdio.h> -# include <assert.h> -# include <stdlib.h> -# include <limits.h> - -typedef unsigned char byte_t; -typedef char i8_t; -typedef unsigned char ui8_t; -typedef short i16_t; -typedef unsigned short ui16_t; -typedef int i32_t; -typedef unsigned int ui32_t; - - -namespace Kumu -{ - inline ui16_t Swap2(ui16_t i) - { - return ( (i << 8) | (( i & 0xff00) >> 8) ); - } - - inline ui32_t Swap4(ui32_t i) - { - return - ( (i & 0x000000ffUL) << 24 ) | - ( (i & 0xff000000UL) >> 24 ) | - ( (i & 0x0000ff00UL) << 8 ) | - ( (i & 0x00ff0000UL) >> 8 ); - } - - inline ui64_t Swap8(ui64_t i) - { - return - ( (i & ui64_C(0x00000000000000FF)) << 56 ) | - ( (i & ui64_C(0xFF00000000000000)) >> 56 ) | - ( (i & ui64_C(0x000000000000FF00)) << 40 ) | - ( (i & ui64_C(0x00FF000000000000)) >> 40 ) | - ( (i & ui64_C(0x0000000000FF0000)) << 24 ) | - ( (i & ui64_C(0x0000FF0000000000)) >> 24 ) | - ( (i & ui64_C(0x00000000FF000000)) << 8 ) | - ( (i & ui64_C(0x000000FF00000000)) >> 8 ); - } - - // - template<class T> - inline T xmin(T lhs, T rhs) { - return (lhs < rhs) ? lhs : rhs; - } - - // - template<class T> - inline T xmax(T lhs, T rhs) { - return (lhs > rhs) ? lhs : rhs; - } - - // - template<class T> - inline T xclamp(T v, T l, T h) { - if ( v < l ) return l; - if ( v > h ) return h; - return v; - } - - - // read an integer from byte-structured storage - template<class T> - inline T cp2i(const byte_t* p) { return *(T*)p; } - - // write an integer to byte-structured storage - template<class T> - inline void i2p(T i, byte_t* p) { *(T*)p = i; } - -# ifdef KM_BIG_ENDIAN -# define KM_i16_LE(i) Kumu::Swap2(i) -# define KM_i32_LE(i) Kumu::Swap4(i) -# define KM_i64_LE(i) Kumu::Swap8(i) -# define KM_i16_BE(i) (i) -# define KM_i32_BE(i) (i) -# define KM_i64_BE(i) (i) -# else -# define KM_i16_LE(i) (i) -# define KM_i32_LE(i) (i) -# define KM_i64_LE(i) (i) -# define KM_i16_BE(i) Kumu::Swap2(i) -# define KM_i32_BE(i) Kumu::Swap4(i) -# define KM_i64_BE(i) Kumu::Swap8(i) -# endif // KM_BIG_ENDIAN - - // A non-reference counting, auto-delete container for internal - // member object pointers. - template <class T> - class mem_ptr - { - mem_ptr(T&); - - protected: - T* m_p; // the thing we point to - - public: - mem_ptr() : m_p(0) {} - mem_ptr(T* p) : m_p(p) {} - ~mem_ptr() { delete m_p; } - - inline T& operator*() const { return *m_p; } - inline T* operator->() const { return m_p; } - inline operator T*()const { return m_p; } - inline const mem_ptr<T>& operator=(T* p) { this->set(p); return *this; } - inline T* set(T* p) { delete m_p; m_p = p; return m_p; } - inline T* get() const { return m_p; } - inline void release() { m_p = 0; } - inline bool empty() const { return m_p == 0; } - }; - -} // namespace Kumu - -// Produces copy constructor boilerplate. Allows convenient private -// declatarion of copy constructors to prevent the compiler from -// silently manufacturing default methods. -# define KM_NO_COPY_CONSTRUCT(T) \ - T(const T&); \ - T& operator=(const T&) - -/* -// Example - class foo - { - KM_NO_COPY_CONSTRUCT(foo); // accessing private mthods will cause compile time error - public: - // ... - }; -*/ - -// Produces copy constructor boilerplate. Implements -// copy and assignment, see example below -# define KM_EXPLICIT_COPY_CONSTRUCT(T) \ - T(const T&); \ - const T& operator=(const T&) - -# define KM_EXPLICIT_COPY_CONSTRUCT_IMPL_START(N, T) \ - void T##_copy_impl(N::T& lhs, const N::T& rhs) \ - { - -#define KM_COPY_ITEM(I) lhs.I = rhs.I; - -# define KM_EXPLICIT_COPY_CONSTRUCT_IMPL_END(N, T) \ - } \ - N::T::T(const N::T& rhs) { T##_copy_impl(*this, rhs); } \ - const N::T& N::T::operator=(const N::T& rhs) { T##_copy_impl(*this, rhs); return *this; } - -/* -// Example -namespace bar { - class foo - { - public: - std::string param_a; - int param_b; - - KM_EXPLICIT_COPY_CONSTRUCT(foo); - // ... - }; -} - -// -KM_EXPLICIT_COPY_CONSTRUCT_IMPL_START(bar, foo) -KM_COPY_ITEM(param_a) -KM_COPY_ITEM(param_b) -KM_EXPLICIT_COPY_CONSTRUCT_IMPL_END(bar, foo) -*/ - -#endif // _KM_PLATFORM_H_ - -// -// KM_platform.h -// |
