]> granicus.if.org Git - postgresql/blob - src/backend/utils/adt/char.c
Move some system includes into c.h, and remove duplicates.
[postgresql] / src / backend / utils / adt / char.c
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: /cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.26 1999/07/17 20:17:54 momjian Exp $
12  *
13  *-------------------------------------------------------------------------
14  */
15 #include "postgres.h"
16 #include "utils/builtins.h"
17
18 /*****************************************************************************
19  *       USER I/O ROUTINES                                                                                                               *
20  *****************************************************************************/
21
22 /*
23  *              charin                  - converts "x" to 'x'
24  */
25 int32
26 charin(char *ch)
27 {
28         if (ch == NULL)
29                 return (int32) '\0';
30         return (int32) *ch;
31 }
32
33 /*
34  *              charout                 - converts 'x' to "x"
35  */
36 char *
37 charout(int32 ch)
38 {
39         char       *result = (char *) palloc(2);
40
41         result[0] = (char) ch;
42         result[1] = '\0';
43         return result;
44 }
45
46 /*
47  *              cidin   - converts "..." to internal representation.
48  *
49  *              NOTE: we must not use 'charin' because cid might be a non
50  *              printable character...
51  */
52 int32
53 cidin(char *s)
54 {
55         CommandId       c;
56
57         if (s == NULL)
58                 c = 0;
59         else
60                 c = atoi(s);
61
62         return (int32) c;
63 }
64
65 /*
66  *              cidout  - converts a cid to "..."
67  *
68  *              NOTE: we must no use 'charout' because cid might be a non
69  *              printable character...
70  */
71 char *
72 cidout(int32 c)
73 {
74         char       *result;
75         CommandId       c2;
76
77         result = palloc(12);
78         c2 = (CommandId) c;
79         sprintf(result, "%u", (unsigned) (c2));
80         return result;
81 }
82
83
84 /*****************************************************************************
85  *       PUBLIC ROUTINES                                                                                                                 *
86  *****************************************************************************/
87
88 bool
89 chareq(int8 arg1, int8 arg2)
90 {
91         return arg1 == arg2;
92 }
93
94 bool
95 charne(int8 arg1, int8 arg2)
96 {
97         return arg1 != arg2;
98 }
99
100 bool
101 charlt(int8 arg1, int8 arg2)
102 {
103         return (uint8) arg1 < (uint8) arg2;
104 }
105
106 bool
107 charle(int8 arg1, int8 arg2)
108 {
109         return (uint8) arg1 <= (uint8) arg2;
110 }
111
112 bool
113 chargt(int8 arg1, int8 arg2)
114 {
115         return (uint8) arg1 > (uint8) arg2;
116 }
117
118 bool
119 charge(int8 arg1, int8 arg2)
120 {
121         return (uint8) arg1 >= (uint8) arg2;
122 }
123
124 int8
125 charpl(int8 arg1, int8 arg2)
126 {
127         return arg1 + arg2;
128 }
129
130 int8
131 charmi(int8 arg1, int8 arg2)
132 {
133         return arg1 - arg2;
134 }
135
136 int8
137 charmul(int8 arg1, int8 arg2)
138 {
139         return arg1 * arg2;
140 }
141
142 int8
143 chardiv(int8 arg1, int8 arg2)
144 {
145         return arg1 / arg2;
146 }
147
148 bool
149 cideq(int8 arg1, int8 arg2)
150 {
151         return arg1 == arg2;
152 }
153
154 int8
155 text_char(text *arg1)
156 {
157         return ((int8) *(VARDATA(arg1)));
158 }
159
160 text *
161 char_text(int8 arg1)
162 {
163         text       *result;
164
165         result = palloc(VARHDRSZ + 1);
166         VARSIZE(result) = VARHDRSZ + 1;
167         *(VARDATA(result)) = arg1;
168
169         return result;
170 }