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

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * char.c
  4.  *   Functions for the built-in type "char".
  5.  *   Functions for the built-in type "cid".
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  *
  10.  * IDENTIFICATION
  11.  *   $Header: /usr/local/cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.22.2.1 1999/08/02 05:24:50 scrappy Exp $
  12.  *
  13.  *-------------------------------------------------------------------------
  14.  */
  15. #include "postgres.h"
  16. #include "utils/builtins.h"
  17. /*****************************************************************************
  18.  *  USER I/O ROUTINES  *
  19.  *****************************************************************************/
  20. /*
  21.  * charin - converts "x" to 'x'
  22.  */
  23. int32
  24. charin(char *ch)
  25. {
  26. if (ch == NULL)
  27. return (int32) '';
  28. return (int32) *ch;
  29. }
  30. /*
  31.  * charout - converts 'x' to "x"
  32.  */
  33. char *
  34. charout(int32 ch)
  35. {
  36. char    *result = (char *) palloc(2);
  37. result[0] = (char) ch;
  38. result[1] = '';
  39. return result;
  40. }
  41. /*
  42.  * cidin - converts "..." to internal representation.
  43.  *
  44.  * NOTE: we must not use 'charin' because cid might be a non
  45.  * printable character...
  46.  */
  47. int32
  48. cidin(char *s)
  49. {
  50. CommandId c;
  51. if (s == NULL)
  52. c = 0;
  53. else
  54. c = atoi(s);
  55. return (int32) c;
  56. }
  57. /*
  58.  * cidout - converts a cid to "..."
  59.  *
  60.  * NOTE: we must no use 'charout' because cid might be a non
  61.  * printable character...
  62.  */
  63. char *
  64. cidout(int32 c)
  65. {
  66. char    *result;
  67. CommandId c2;
  68. result = palloc(12);
  69. c2 = (CommandId) c;
  70. sprintf(result, "%u", (unsigned) (c2));
  71. return result;
  72. }
  73. /*****************************************************************************
  74.  *  PUBLIC ROUTINES  *
  75.  *****************************************************************************/
  76. bool
  77. chareq(int8 arg1, int8 arg2)
  78. {
  79. return arg1 == arg2;
  80. }
  81. bool
  82. charne(int8 arg1, int8 arg2)
  83. {
  84. return arg1 != arg2;
  85. }
  86. bool
  87. charlt(int8 arg1, int8 arg2)
  88. {
  89. return (uint8) arg1 < (uint8) arg2;
  90. }
  91. bool
  92. charle(int8 arg1, int8 arg2)
  93. {
  94. return (uint8) arg1 <= (uint8) arg2;
  95. }
  96. bool
  97. chargt(int8 arg1, int8 arg2)
  98. {
  99. return (uint8) arg1 > (uint8) arg2;
  100. }
  101. bool
  102. charge(int8 arg1, int8 arg2)
  103. {
  104. return (uint8) arg1 >= (uint8) arg2;
  105. }
  106. int8
  107. charpl(int8 arg1, int8 arg2)
  108. {
  109. return arg1 + arg2;
  110. }
  111. int8
  112. charmi(int8 arg1, int8 arg2)
  113. {
  114. return arg1 - arg2;
  115. }
  116. int8
  117. charmul(int8 arg1, int8 arg2)
  118. {
  119. return arg1 * arg2;
  120. }
  121. int8
  122. chardiv(int8 arg1, int8 arg2)
  123. {
  124. return arg1 / arg2;
  125. }
  126. bool
  127. cideq(int8 arg1, int8 arg2)
  128. {
  129. return arg1 == arg2;
  130. }
  131. int8
  132. text_char(text *arg1)
  133. {
  134. return ((int8) *(VARDATA(arg1)));
  135. }
  136. text *
  137. char_text(int8 arg1)
  138. {
  139. text    *result;
  140. result = palloc(VARHDRSZ + 1);
  141. VARSIZE(result) = VARHDRSZ + 1;
  142. *(VARDATA(result)) = arg1;
  143. return result;
  144. }