diff options
Diffstat (limited to 'src/backend/utils/adt/oidint4.c')
-rw-r--r-- | src/backend/utils/adt/oidint4.c | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/src/backend/utils/adt/oidint4.c b/src/backend/utils/adt/oidint4.c new file mode 100644 index 00000000000..d0844411a73 --- /dev/null +++ b/src/backend/utils/adt/oidint4.c @@ -0,0 +1,111 @@ +/*------------------------------------------------------------------------- + * + * oidint4.c-- + * Functions for the built-in type "oidint4". + * + * Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * $Header: /cvsroot/pgsql/src/backend/utils/adt/Attic/oidint4.c,v 1.1.1.1 1996/07/09 06:22:05 scrappy Exp $ + * + *------------------------------------------------------------------------- + */ +#include <stdio.h> /* for sprintf() */ +#include "postgres.h" +#include "utils/palloc.h" +#include "utils/builtins.h" +#include "utils/oidcompos.h" /* where function declarations go */ + +OidInt4 oidint4in(char *o) +{ + OidInt4 oi; + char *p; + + oi = (OidInt4) palloc(sizeof(OidInt4Data)); + + for (p = o; *p != '\0' && *p != '/'; p++) + continue; + + oi->oi_oid = (Oid) pg_atoi(o, sizeof(Oid), '/'); + if (*p == '\0') { + oi->oi_int4 = 0; + } else { + oi->oi_int4 = pg_atoi(++p, sizeof(int4), '\0'); + } + + return (oi); +} + +char *oidint4out(OidInt4 o) +{ + char *r; + + /* + * -2147483647/-2147483647 + * 0 1 2 + * 123456789012345678901234 + */ + r = (char *) palloc(24); + sprintf(r, "%d/%d", o->oi_oid, o->oi_int4); + + return (r); +} + +bool oidint4lt(OidInt4 o1, OidInt4 o2) +{ + return + ((bool) (o1->oi_oid < o2->oi_oid || + (o1->oi_oid == o2->oi_oid && o1->oi_int4 < o2->oi_int4))); +} + +bool oidint4le(OidInt4 o1, OidInt4 o2) +{ + return ((bool) (o1->oi_oid < o2->oi_oid || + (o1->oi_oid == o2->oi_oid && o1->oi_int4 <= o2->oi_int4))); +} + +bool oidint4eq(OidInt4 o1, OidInt4 o2) +{ + return ((bool) (o1->oi_oid == o2->oi_oid && o1->oi_int4 == o2->oi_int4)); +} + +bool oidint4ge(OidInt4 o1, OidInt4 o2) +{ + return ((bool) (o1->oi_oid > o2->oi_oid || + (o1->oi_oid == o2->oi_oid && o1->oi_int4 >= o2->oi_int4))); +} + +bool oidint4gt(OidInt4 o1, OidInt4 o2) +{ + return ((bool) (o1->oi_oid > o2->oi_oid || + (o1->oi_oid == o2->oi_oid && o1->oi_int4 > o2->oi_int4))); +} + +bool oidint4ne(OidInt4 o1, OidInt4 o2) +{ + return ((bool) (o1->oi_oid != o2->oi_oid || o1->oi_int4 != o2->oi_int4)); +} + +int oidint4cmp(OidInt4 o1, OidInt4 o2) +{ + if (oidint4lt(o1, o2)) + return (-1); + else if (oidint4eq(o1, o2)) + return (0); + else + return (1); +} + +OidInt4 mkoidint4(Oid v_oid, uint32 v_int4) +{ + OidInt4 o; + + o = (OidInt4) palloc(sizeof(OidInt4Data)); + o->oi_oid = v_oid; + o->oi_int4 = v_int4; + return (o); +} + + + |