summaryrefslogtreecommitdiff
path: root/asdcplib/src/KM_platform.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-14 23:54:53 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-14 23:54:53 +0000
commita2374eb06a0f6d391d1d5ae04f50ce5e8076173a (patch)
treea3b83b31e739e7b5312a3a99e9a1c1446ff29bbb /asdcplib/src/KM_platform.h
parent38ff2954f40131a12aa8a037b9fc6c4abd3894b9 (diff)
Use out-of-tree asdcplib-cth
Diffstat (limited to 'asdcplib/src/KM_platform.h')
-rw-r--r--asdcplib/src/KM_platform.h270
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
-//