1996-07-09 08:22:35 +02:00
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
*
|
|
|
|
* oidint2.c--
|
1997-09-07 07:04:48 +02:00
|
|
|
* Functions for the built-in type "oidint2".
|
1996-07-09 08:22:35 +02:00
|
|
|
*
|
|
|
|
* Copyright (c) 1994, Regents of the University of California
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* IDENTIFICATION
|
1997-09-08 23:56:23 +02:00
|
|
|
* $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/oidint2.c,v 1.4 1997/09/08 21:48:34 momjian Exp $
|
1996-07-09 08:22:35 +02:00
|
|
|
*
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
#include "postgres.h"
|
|
|
|
#include "utils/palloc.h"
|
1997-09-07 07:04:48 +02:00
|
|
|
#include "utils/builtins.h" /* for pg_atoi() */
|
1996-07-09 08:22:35 +02:00
|
|
|
#include "utils/oidcompos.h" /* where function declarations go */
|
|
|
|
|
|
|
|
|
|
|
|
OidInt2
|
|
|
|
oidint2in(char *o)
|
|
|
|
{
|
1997-09-08 04:41:22 +02:00
|
|
|
OidInt2 oi;
|
|
|
|
char *p;
|
1997-09-07 07:04:48 +02:00
|
|
|
|
|
|
|
oi = (OidInt2) palloc(sizeof(OidInt2Data));
|
|
|
|
|
|
|
|
for (p = o; *p != '\0' && *p != '/'; p++)
|
|
|
|
continue;
|
|
|
|
|
|
|
|
oi->oi_oid = (Oid) pg_atoi(o, sizeof(Oid), '/');
|
|
|
|
if (*p == '\0')
|
|
|
|
{
|
|
|
|
oi->oi_int2 = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
oi->oi_int2 = (int16) pg_atoi(++p, sizeof(int2), '\0');
|
|
|
|
}
|
|
|
|
|
|
|
|
return (oi);
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
1997-09-08 04:41:22 +02:00
|
|
|
char *
|
1996-07-09 08:22:35 +02:00
|
|
|
oidint2out(OidInt2 o)
|
|
|
|
{
|
1997-09-08 04:41:22 +02:00
|
|
|
char *r;
|
1997-09-07 07:04:48 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* -2147483647/-32767 0 1 1234567890123456789
|
|
|
|
*/
|
|
|
|
r = (char *) palloc(19);
|
|
|
|
sprintf(r, "%d/%d", o->oi_oid, o->oi_int2);
|
|
|
|
|
|
|
|
return (r);
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
oidint2lt(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
return
|
1997-09-08 23:56:23 +02:00
|
|
|
((bool) (o1->oi_oid < o2->oi_oid ||
|
|
|
|
(o1->oi_oid == o2->oi_oid && o1->oi_int2 < o2->oi_int2)));
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
oidint2le(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
return ((bool) (o1->oi_oid < o2->oi_oid ||
|
|
|
|
(o1->oi_oid == o2->oi_oid && o1->oi_int2 <= o2->oi_int2)));
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
oidint2eq(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
return ((bool) (o1->oi_oid == o2->oi_oid && o1->oi_int2 == o2->oi_int2));
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
oidint2ge(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
return ((bool) (o1->oi_oid > o2->oi_oid ||
|
|
|
|
(o1->oi_oid == o2->oi_oid && o1->oi_int2 >= o2->oi_int2)));
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
oidint2gt(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
return ((bool) (o1->oi_oid > o2->oi_oid ||
|
|
|
|
(o1->oi_oid == o2->oi_oid && o1->oi_int2 > o2->oi_int2)));
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
|
|
oidint2ne(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
return ((bool) (o1->oi_oid != o2->oi_oid || o1->oi_int2 != o2->oi_int2));
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
int
|
|
|
|
oidint2cmp(OidInt2 o1, OidInt2 o2)
|
|
|
|
{
|
1997-09-07 07:04:48 +02:00
|
|
|
if (oidint2lt(o1, o2))
|
|
|
|
return (-1);
|
|
|
|
else if (oidint2eq(o1, o2))
|
|
|
|
return (0);
|
|
|
|
else
|
|
|
|
return (1);
|
1996-07-09 08:22:35 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
OidInt2
|
|
|
|
mkoidint2(Oid v_oid, uint16 v_int2)
|
|
|
|
{
|
1997-09-08 04:41:22 +02:00
|
|
|
OidInt2 o;
|
1996-07-09 08:22:35 +02:00
|
|
|
|
1997-09-07 07:04:48 +02:00
|
|
|
o = (OidInt2) palloc(sizeof(OidInt2Data));
|
|
|
|
o->oi_oid = v_oid;
|
|
|
|
o->oi_int2 = v_int2;
|
|
|
|
return (o);
|
|
|
|
}
|