From 28745079d3b14cbee501e5d8a89312a1e9931c9c Mon Sep 17 00:00:00 2001 From: imsframework Date: Thu, 8 Oct 2009 21:59:07 +0000 Subject: [PATCH] Add engine --- trunk/doubango.sln | 12 ++ trunk/doubango/doubango.vcproj | 39 ++++- trunk/doubango/src/api_engine.cxx | 146 ++++++++++++++++ trunk/doubango/src/api_engine.h | 22 +++ trunk/doubango/src/api_errors.h | 33 ++++ trunk/doubango/src/api_stack.cxx | 69 ++++++++ trunk/doubango/src/api_stack.h | 29 ++++ trunk/doubango/src/doubango.h | 5 +- trunk/doubango/src/pref.h | 20 +++ trunk/doubango/src/statemap.h | 2 + trunk/doubango/src/stdint0.h | 268 ------------------------------ trunk/doubango/src/test.cxx | 2 - 12 files changed, 367 insertions(+), 280 deletions(-) create mode 100644 trunk/doubango/src/api_engine.cxx create mode 100644 trunk/doubango/src/api_engine.h create mode 100644 trunk/doubango/src/api_errors.h create mode 100644 trunk/doubango/src/api_stack.cxx create mode 100644 trunk/doubango/src/api_stack.h delete mode 100644 trunk/doubango/src/stdint0.h delete mode 100644 trunk/doubango/src/test.cxx diff --git a/trunk/doubango.sln b/trunk/doubango.sln index f096040a..9c4f53ba 100644 --- a/trunk/doubango.sln +++ b/trunk/doubango.sln @@ -3,6 +3,10 @@ Microsoft Visual Studio Solution File, Format Version 10.00 # Visual Studio 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doubango", "doubango\doubango.vcproj", "{F31BBB1C-A0EB-46DE-B920-B843918E9090}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsofia_sip_ua", "sofia-sip-1.12.10\win32\libsofia-sip-ua\libsofia_sip_ua.vcproj", "{0D85D39A-C7FB-4C52-A541-73665FB478E6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcproj", "{D38BEAF4-2B25-49F4-97BC-3DC10440DC6D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 @@ -13,6 +17,14 @@ Global {F31BBB1C-A0EB-46DE-B920-B843918E9090}.Debug|Win32.Build.0 = Debug|Win32 {F31BBB1C-A0EB-46DE-B920-B843918E9090}.Release|Win32.ActiveCfg = Release|Win32 {F31BBB1C-A0EB-46DE-B920-B843918E9090}.Release|Win32.Build.0 = Release|Win32 + {0D85D39A-C7FB-4C52-A541-73665FB478E6}.Debug|Win32.ActiveCfg = Debug|Win32 + {0D85D39A-C7FB-4C52-A541-73665FB478E6}.Debug|Win32.Build.0 = Debug|Win32 + {0D85D39A-C7FB-4C52-A541-73665FB478E6}.Release|Win32.ActiveCfg = Release|Win32 + {0D85D39A-C7FB-4C52-A541-73665FB478E6}.Release|Win32.Build.0 = Release|Win32 + {D38BEAF4-2B25-49F4-97BC-3DC10440DC6D}.Debug|Win32.ActiveCfg = Debug|Win32 + {D38BEAF4-2B25-49F4-97BC-3DC10440DC6D}.Debug|Win32.Build.0 = Debug|Win32 + {D38BEAF4-2B25-49F4-97BC-3DC10440DC6D}.Release|Win32.ActiveCfg = Release|Win32 + {D38BEAF4-2B25-49F4-97BC-3DC10440DC6D}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/trunk/doubango/doubango.vcproj b/trunk/doubango/doubango.vcproj index 1fdef3b0..c603bcb5 100644 --- a/trunk/doubango/doubango.vcproj +++ b/trunk/doubango/doubango.vcproj @@ -41,7 +41,7 @@ - - @@ -241,6 +238,18 @@ + + + + + + - - @@ -329,6 +334,22 @@ + + + + + + + + +#include +#include + +#include + +#define PSTACK stack* + +PREF_NAMESPACE_START + +/* engine callback declaration */ +static void engine_callback(nua_event_t event, + int status, + char const *phrase, + nua_t *nua, + nua_magic_t *magic, + nua_handle_t *nh, + nua_hmagic_t *hmagic, + sip_t const *sip, + tagi_t tags[]); + +/* global variable holding engine initialization state */ +static bool __initialized = false; + +/* global variable holding all stacks */ +static std::list __stacks; + +/* predicate: find stack by id */ +struct pred_stack_find_by_id: public std::binary_function< PSTACK, int, bool > { + bool operator () ( const PSTACK s, const int &id ) const { + return s->get_id() == id; + } +}; + + +/* initialize engine (system utilities) */ +ERR engine_initialize() +{ + if(__initialized) return ERR_ENGINE_ALREADY_INITIALIZED; + + if( !su_init() ) + { + __initialized = true; + return ERR_SUCCESS; + } + + return ERR_GLOBAL_FAILURE; +} + +/* deinitialize engine (system utilities) */ +ERR engine_deinitialize() +{ + if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED; + + std::list::iterator iter = __stacks.begin(); + for ( ; iter!=__stacks.end(); iter++ ) + { + delete(*iter); + } + __stacks.clear(); + + su_deinit(); + + __initialized = false; + return ERR_SUCCESS; +} + +/* creates a stack with the specified id */ +ERR engine_stack_create(int stack_id) +{ + if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED; + + if(engine_stack_find(stack_id)) + { + return ERR_STACK_ALREADY_EXIST; + } + stack* sk = new stack(stack_id, engine_callback); + if(sk->get_initialized()) + { + __stacks.push_back(sk); + } + else + { + delete sk; + return ERR_STACK_NOT_INITIALIZED; + } + + return ERR_SUCCESS; +} + +/* runs the stack with the specified id */ +ERR engine_stack_run(int stack_id) +{ + if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED; + + return ERR_NOT_IMPLEMENTED; +} + +/* shutdown downs the stack with the specified id */ +ERR engine_stack_shutdown(int stack_id) +{ + if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED; + + return ERR_NOT_IMPLEMENTED; +} + +/* shutdown downs all stacks */ +ERR engine_stack_shutdown_all(void) +{ + if(!__initialized) return ERR_ENGINE_NOT_INITIALIZED; + + return ERR_NOT_IMPLEMENTED; +} + +/* find stack by id*/ +stack* engine_stack_find(int stack_id) +{ + std::list::iterator iter = __stacks.begin(); + iter = std::find_if( iter, __stacks.end(), std::bind2nd( pred_stack_find_by_id(), stack_id ) ); + if(iter != __stacks.end()) + { + return *iter; + } + return NULL; +} + +/* engine callback*/ +void engine_callback(nua_event_t event, + int status, + char const *phrase, + nua_t *nua, + nua_magic_t *magic, + nua_handle_t *nh, + nua_hmagic_t *hmagic, + sip_t const *sip, + tagi_t tags[]) +{ + +} + +#undef PSTACK + +PREF_NAMESPACE_END \ No newline at end of file diff --git a/trunk/doubango/src/api_engine.h b/trunk/doubango/src/api_engine.h new file mode 100644 index 00000000..0730ca1b --- /dev/null +++ b/trunk/doubango/src/api_engine.h @@ -0,0 +1,22 @@ +#ifndef _DOUBANGO_API_ENGINE_H_ +#define _DOUBANGO_API_ENGINE_H_ + +#include "pref.h" +#include "api_errors.h" +#include "api_stack.h" + +PREF_NAMESPACE_START + +DOUBANGO_API_C ERR engine_initialize(void); +DOUBANGO_API_C ERR engine_deinitialize(void); + +DOUBANGO_API_C ERR engine_stack_create(int stack_id); +DOUBANGO_API_C ERR engine_stack_run(int stack_id); +DOUBANGO_API_C ERR engine_stack_shutdown(int stack_id); +DOUBANGO_API_C ERR engine_stack_shutdown_all(void); + +stack* engine_stack_find(int stack_id); + +PREF_NAMESPACE_END + +#endif /* _DOUBANGO_API_ENGINE_H_ */ \ No newline at end of file diff --git a/trunk/doubango/src/api_errors.h b/trunk/doubango/src/api_errors.h new file mode 100644 index 00000000..16f2100d --- /dev/null +++ b/trunk/doubango/src/api_errors.h @@ -0,0 +1,33 @@ +#ifndef _DOUBANGO_ERRORS_H_ +#define _DOUBANGO_ERRORS_H_ + +#include "pref.h" + +PREF_NAMESPACE_START + +#define ERR_SUCCEED(code) (code == PREF_NAMESPACE_VALUE::ERR_SUCCESS) +#define ERR_FAILED(code) !ERR_SUCCEED(code) + +typedef enum tag_ERR +{ + ERR_SUCCESS = 0x0000, + + ERR_GLOBAL_FAILURE = -0xFFFF, + ERR_NOT_IMPLEMENTED, + ERR_FUNC_OBSOLETE, + + /* ENGINE errors */ + ERR_ENGINE_NOT_INITIALIZED, /* engine not initialized or initialization failed*/ + ERR_ENGINE_ALREADY_INITIALIZED, /* engine have been already initialized */ + + /* STACK errors */ + ERR_STACK_ALREADY_EXIST, + ERR_STACK_NOT_INITIALIZED, /* stack not initialized or initialization failed*/ + ERR_STACK_IS_INVALID, /* stack is in an invalide state (NULL, destroyed, locked, ...) */ + ERR_STACK_NOT_RUNNING, /* operation failed because the stack is not running */ +} +ERR; + +PREF_NAMESPACE_END + +#endif /* _DOUBANGO_ERRORS_H_ */ \ No newline at end of file diff --git a/trunk/doubango/src/api_stack.cxx b/trunk/doubango/src/api_stack.cxx new file mode 100644 index 00000000..df8a0d0d --- /dev/null +++ b/trunk/doubango/src/api_stack.cxx @@ -0,0 +1,69 @@ +#include "api_stack.h" + +PREF_NAMESPACE_START + +/* stack constructor */ +stack::stack(int _id, nua_callback_f callback): id(_id), initialized(false) +{ + // initialize memory handling + if( su_home_init(this->home) ) return; + + // initialize root object + this->root = su_root_create(this); + if(!this->root) + { + su_home_deinit(this->home); + return; + } + + // create NUA stack + this->nua = nua_create(this->root, callback, this, + /* tags as necessary ...*/ + TAG_NULL()); + if (!this->nua) + { + su_root_destroy(this->root); + su_home_deinit(this->home); + return; + } + + // set necessary parameters + nua_set_params(this->nua, + /* tags as necessary ...*/ + TAG_NULL()); + + // enter main loop for processing of messages + su_root_run(this->root); + + this->initialized = true; +} + +/* stack destructor */ +stack::~stack() +{ + if(this->initialized) + { + // destroy NUA stack + nua_destroy(this->nua); + + // deinit root object + su_root_destroy(this->root); + + // deinitialize memory handling + su_home_deinit(this->home); + } +} + +/* gets the stack id */ +inline int stack::get_id()const +{ + return this->id; +} + +/* returns true if initialized, false otherwise */ +inline bool stack::get_initialized() const +{ + return this->initialized; +} + +PREF_NAMESPACE_END \ No newline at end of file diff --git a/trunk/doubango/src/api_stack.h b/trunk/doubango/src/api_stack.h new file mode 100644 index 00000000..dca41c8d --- /dev/null +++ b/trunk/doubango/src/api_stack.h @@ -0,0 +1,29 @@ +#ifndef __DOUBANGO_STACK_H__ +#define __DOUBANGO_STACK_H__ + +#include "pref.h" +#include + +PREF_NAMESPACE_START + +class DOUBANGO_API stack +{ +public: + stack(int id, nua_callback_f callback); + ~stack(); + + inline int get_id() const; + inline bool get_initialized() const; + +private: + int id; + bool initialized; + + su_home_t home[1]; /* memory home */ + su_root_t *root; /* root object */ + nua_t *nua; /* NUA stack object */ +}; + +PREF_NAMESPACE_END + +#endif /* __DOUBANGO_STACK_H__ */ \ No newline at end of file diff --git a/trunk/doubango/src/doubango.h b/trunk/doubango/src/doubango.h index 63388293..c17ff2f5 100644 --- a/trunk/doubango/src/doubango.h +++ b/trunk/doubango/src/doubango.h @@ -28,6 +28,9 @@ #ifndef __DOUBANGO_DOUBANGO_H__ #define __DOUBANGO_DOUBANGO_H__ - +extern "C" +{ + #include "api_engine.h" +} #endif /* __DOUBANGO_DOUBANGO_H__ */ \ No newline at end of file diff --git a/trunk/doubango/src/pref.h b/trunk/doubango/src/pref.h index fe1c3ea9..4058d6ad 100644 --- a/trunk/doubango/src/pref.h +++ b/trunk/doubango/src/pref.h @@ -31,6 +31,26 @@ #define PREF_NAMESPACE_USE 1 #define PREF_NAMESPACE_VALUE dgo +/* doubango api funtions export */ +#if defined(WIN32) || defined(__SYMBIAN32__) +# ifdef DOUBANGO_EXPORTS +# define DOUBANGO_API __declspec(dllexport) +# define DOUBANGO_API_C extern "C" DOUBANGO_API +# else +# define DOUBANGO_API __declspec(dllimport) +# define DOUBANGO_API_C +# endif +#else +# define DOUBANGO_API +# define DOUBANGO_API_C +#endif + +/* disable warnings */ +#ifdef WIN32 +#pragma warning( disable : 4132 4100 4127 4152 4355 4996) +#endif + +/* namespace definition*/ #if PREF_NAMESPACE_USE # define PREF_NAMESPACE_START namespace PREF_NAMESPACE_VALUE { # define PREF_NAMESPACE_END } diff --git a/trunk/doubango/src/statemap.h b/trunk/doubango/src/statemap.h index 193387b0..0fbd1207 100644 --- a/trunk/doubango/src/statemap.h +++ b/trunk/doubango/src/statemap.h @@ -44,6 +44,8 @@ // (See bottom of file) // +#include "pref.h" + #if (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) #include #if defined(SMC_NO_EXCEPTIONS) diff --git a/trunk/doubango/src/stdint0.h b/trunk/doubango/src/stdint0.h deleted file mode 100644 index 0cce6b7e..00000000 --- a/trunk/doubango/src/stdint0.h +++ /dev/null @@ -1,268 +0,0 @@ -/* - ** Copyright (C) 2009 Doubango Telecom - - This file is part of 'Doubango IMS Client Framework'. - - 'Doubango IMS Client Framework' is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - 'Doubango IMS Client Framework' is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with 'Doubango IMS Client Framework'. If not, see . - - ** For commercial use, you must purchase a proprietary license from Doubango Telecom. -*/ - -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// 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 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. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include - -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when -// compiling for ARM we should wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#ifdef __cplusplus -extern "C" { -#endif -# include -#ifdef __cplusplus -} -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types - -// Visual Studio 6 and Embedded Visual C++ 4 doesn't -// realize that, e.g. char has the same size as __int8 -// so we give up on __intX for them. -#if (_MSC_VER < 1300) - typedef signed char int8_t; - typedef signed short int16_t; - typedef signed int int32_t; - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; -#else - typedef signed __int8 int8_t; - typedef signed __int16 int16_t; - typedef signed __int32 int32_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types -typedef int8_t int_fast8_t; -typedef int16_t int_fast16_t; -typedef int32_t int_fast32_t; -typedef int64_t int_fast64_t; -typedef uint8_t uint_fast8_t; -typedef uint16_t uint_fast16_t; -typedef uint32_t uint_fast32_t; -typedef uint64_t uint_fast64_t; - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef signed __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 signed int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - - -#endif // _MSC_STDINT_H_ ] \ No newline at end of file diff --git a/trunk/doubango/src/test.cxx b/trunk/doubango/src/test.cxx deleted file mode 100644 index 0cf2ff36..00000000 --- a/trunk/doubango/src/test.cxx +++ /dev/null @@ -1,2 +0,0 @@ -#include "stdint0.h" -#include "sm.h" \ No newline at end of file