postgresql/src/backend/utils/adt/char.c

174 lines
2.8 KiB
C
Raw Normal View History

/*-------------------------------------------------------------------------
*
* char.c--
* Functions for the built-in type "char".
* Functions for the built-in type "cid".
*
* Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/utils/adt/char.c,v 1.20 1998/12/13 23:35:48 thomas Exp $
*
*-------------------------------------------------------------------------
*/
#include <stdio.h> /* for sprintf() */
#include <string.h>
#include "postgres.h"
#include "utils/palloc.h"
#include "utils/builtins.h" /* where the declarations go */
/*****************************************************************************
* USER I/O ROUTINES *
*****************************************************************************/
/*
* charin - converts "x" to 'x'
*/
int32
charin(char *ch)
{
if (ch == NULL)
return (int32) '\0';
1998-09-01 05:29:17 +02:00
return (int32) *ch;
}
/*
* charout - converts 'x' to "x"
*/
char *
charout(int32 ch)
{
char *result = (char *) palloc(2);
result[0] = (char) ch;
result[1] = '\0';
1998-09-01 05:29:17 +02:00
return result;
}
/*
* cidin - converts "..." to internal representation.
*
* NOTE: we must not use 'charin' because cid might be a non
* printable character...
*/
int32
cidin(char *s)
{
CommandId c;
if (s == NULL)
c = 0;
else
c = atoi(s);
1998-09-01 05:29:17 +02:00
return (int32) c;
}
/*
* cidout - converts a cid to "..."
*
* NOTE: we must no use 'charout' because cid might be a non
* printable character...
*/
char *
cidout(int32 c)
{
char *result;
CommandId c2;
1997-11-02 16:27:14 +01:00
result = palloc(12);
c2 = (CommandId) c;
sprintf(result, "%u", (unsigned) (c2));
1998-09-01 05:29:17 +02:00
return result;
}
/*****************************************************************************
* PUBLIC ROUTINES *
*****************************************************************************/
bool
chareq(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 == arg2;
}
1997-09-08 22:59:27 +02:00
bool
charne(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 != arg2;
}
1997-09-08 22:59:27 +02:00
bool
charlt(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return (uint8) arg1 < (uint8) arg2;
}
1997-09-08 22:59:27 +02:00
bool
charle(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return (uint8) arg1 <= (uint8) arg2;
}
1997-09-08 22:59:27 +02:00
bool
chargt(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return (uint8) arg1 > (uint8) arg2;
}
1997-09-08 22:59:27 +02:00
bool
charge(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return (uint8) arg1 >= (uint8) arg2;
}
1997-09-08 22:59:27 +02:00
int8
charpl(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 + arg2;
}
1997-09-08 22:59:27 +02:00
int8
charmi(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 - arg2;
}
1997-09-08 22:59:27 +02:00
int8
charmul(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 * arg2;
}
1997-09-08 22:59:27 +02:00
int8
chardiv(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 / arg2;
}
bool
cideq(int8 arg1, int8 arg2)
{
1998-09-01 05:29:17 +02:00
return arg1 == arg2;
}
int8
text_char(text *arg1)
{
return ((int8) *(VARDATA(arg1)));
}
text *
char_text(int8 arg1)
{
text *result;
result = palloc(VARHDRSZ+1);
VARSIZE(result) = VARHDRSZ+1;
*(VARDATA(result)) = arg1;
return result;
}