Types.h
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:3k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. /* $Id: Types.h,v 1.1.1.1 2005/11/11 21:32:03 faxguy Exp $ */
  2. /*
  3.  * Copyright (c) 1990-1996 Sam Leffler
  4.  * Copyright (c) 1991-1996 Silicon Graphics, Inc.
  5.  * HylaFAX is a trademark of Silicon Graphics
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26. #ifndef _Types_
  27. #define _Types_
  28. #include "string.h"
  29. #include "assert.h"
  30. #include "stdio.h"
  31. #include "sys/types.h"
  32. #include "port.h"
  33. // Needed for the placement new operator
  34. #ifdef HAS_OLD_NEW_H
  35. #include "new.h"
  36. #else
  37. #include "new"
  38. #endif
  39. // Boolean type
  40. #ifdef NEED_BOOL
  41. typedef u_char bool;
  42. #undef true
  43. #define true ((bool)1)
  44. #undef false
  45. #define false ((bool)0)
  46. #endif
  47. // minimum of two numbers
  48. inline int fxmin(int a, int b) { return (a < b) ? a : b; }
  49. inline u_long fxmin(u_long a, u_long b) { return (a < b) ? a : b; }
  50. inline u_int fxmin(u_int a, u_int b) { return (a < b) ? a : b; }
  51. // maximum of two numbers
  52. inline int fxmax(int a, int b) { return (a > b) ? a : b; }
  53. inline u_long fxmax(u_long a, u_long b) { return (a > b) ? a : b; }
  54. inline u_int fxmax(u_int a, u_int b) { return (a > b) ? a : b; }
  55. #define streq(a, b) (strcmp(a,b) == 0)
  56. #define strneq(a, b, n) (strncmp(a,b,n) == 0)
  57. #ifdef NDEBUG
  58. #define fxAssert(EX,MSG)
  59. #else
  60. extern "C" void _fxassert(const char*, const char*, int);
  61. #define fxAssert(EX,MSG) if (EX); else _fxassert(MSG,__FILE__,__LINE__);
  62. #endif
  63. //----------------------------------------------------------------------
  64. // Use this macro at the end of a multi-line macro definition.  This
  65. // helps eliminate the extra back slash problem.
  66. #define __enddef__
  67. // Some macros for namespace hacking.  These macros concatenate their
  68. // arguments.
  69. #ifdef __ANSI_CPP__
  70. #define fxIDENT(a) a
  71. #define fxCAT(a,b) a##b
  72. #define fxCAT2(a,b) a##b
  73. #define fxCAT3(a,b,c) a##b##c
  74. #define fxCAT4(a,b,c,d) a##b##c##d
  75. #define fxCAT5(a,b,c,d,e) a##b##c##d##e
  76. #define fxQUOTE(a) #a
  77. #else
  78. #define fxIDENT(a) a
  79. #define fxCAT(a,b) fxIDENT(a)b
  80. #define fxCAT2(a,b) fxIDENT(a)b
  81. #define fxCAT3(a,b,c) fxCAT2(a,b)c
  82. #define fxCAT4(a,b,c,d) fxCAT3(a,b,c)d
  83. #define fxCAT5(a,b,c,d,e) fxCAT4(a,b,c,d)e
  84. #define fxQUOTE(a) "a"
  85. #endif
  86. //----------------------------------------------------------------------
  87. // Workaround for difficulties with signal handler definitions (yech)
  88. #ifndef fxSIGHANDLER
  89. #define fxSIGHANDLER
  90. #endif
  91. #ifndef fxSIGVECHANDLER
  92. #define fxSIGVECHANDLER
  93. #endif
  94. #ifndef fxSIGACTIONHANDLER
  95. #define fxSIGACTIONHANDLER
  96. #endif
  97. #endif /* _Types_ */