bool.c
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:2k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * bool.c
  4.  *   Functions for the built-in type "bool".
  5.  *
  6.  * Copyright (c) 1994, Regents of the University of California
  7.  *
  8.  *
  9.  * IDENTIFICATION
  10.  *   $Header: /usr/local/cvsroot/pgsql/src/backend/utils/adt/bool.c,v 1.16.2.1 1999/08/02 05:24:50 scrappy Exp $
  11.  *
  12.  *-------------------------------------------------------------------------
  13.  */
  14. #include "postgres.h"
  15. #include "utils/builtins.h"
  16. /*****************************************************************************
  17.  *  USER I/O ROUTINES  *
  18.  *****************************************************************************/
  19. /*
  20.  * boolin - converts "t" or "f" to 1 or 0
  21.  *
  22.  * Check explicitly for "true/false" and TRUE/FALSE, 1/0, YES/NO.
  23.  * Reject other values. - thomas 1997-10-05
  24.  *
  25.  * In the switch statement, check the most-used possibilities first.
  26.  */
  27. bool
  28. boolin(char *b)
  29. {
  30. switch (*b)
  31. {
  32. case 't':
  33. case 'T':
  34. if (strncasecmp(b, "true", strlen(b)) == 0)
  35. return TRUE;
  36. break;
  37. case 'f':
  38. case 'F':
  39. if (strncasecmp(b, "false", strlen(b)) == 0)
  40. return FALSE;
  41. break;
  42. case 'y':
  43. case 'Y':
  44. if (strncasecmp(b, "yes", strlen(b)) == 0)
  45. return TRUE;
  46. break;
  47. case '1':
  48. if (strncasecmp(b, "1", strlen(b)) == 0)
  49. return TRUE;
  50. break;
  51. case 'n':
  52. case 'N':
  53. if (strncasecmp(b, "no", strlen(b)) == 0)
  54. return FALSE;
  55. break;
  56. case '0':
  57. if (strncasecmp(b, "0", strlen(b)) == 0)
  58. return FALSE;
  59. break;
  60. default:
  61. break;
  62. }
  63. elog(ERROR, "Bad boolean external representation '%s'", b);
  64. /* not reached */
  65. return FALSE;
  66. } /* boolin() */
  67. /*
  68.  * boolout - converts 1 or 0 to "t" or "f"
  69.  */
  70. char *
  71. boolout(bool b)
  72. {
  73. char    *result = (char *) palloc(2);
  74. *result = (b) ? 't' : 'f';
  75. result[1] = '';
  76. return result;
  77. } /* boolout() */
  78. /*****************************************************************************
  79.  *  PUBLIC ROUTINES  *
  80.  *****************************************************************************/
  81. bool
  82. booleq(bool arg1, bool arg2)
  83. {
  84. return arg1 == arg2;
  85. }
  86. bool
  87. boolne(bool arg1, bool arg2)
  88. {
  89. return arg1 != arg2;
  90. }
  91. bool
  92. boollt(bool arg1, bool arg2)
  93. {
  94. return arg1 < arg2;
  95. }
  96. bool
  97. boolgt(bool arg1, bool arg2)
  98. {
  99. return arg1 > arg2;
  100. }
  101. bool
  102. istrue(bool arg1)
  103. {
  104. return arg1 == TRUE;
  105. } /* istrue() */
  106. bool
  107. isfalse(bool arg1)
  108. {
  109. return arg1 != TRUE;
  110. } /* isfalse() */