diff options
Diffstat (limited to 'src/interfaces/libpq++/libpq++.H')
| -rw-r--r-- | src/interfaces/libpq++/libpq++.H | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/src/interfaces/libpq++/libpq++.H b/src/interfaces/libpq++/libpq++.H new file mode 100644 index 0000000000..9b3e173900 --- /dev/null +++ b/src/interfaces/libpq++/libpq++.H @@ -0,0 +1,173 @@ +/*------------------------------------------------------------------------- + * + * libpq++.H + * + * + * DESCRIPTION + * C++ client interface to Postgres + * used for building front-end applications + * + * NOTES + * Currently under construction. + * + * Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * + * $Id: libpq++.H,v 1.1.1.1 1996/07/09 06:22:18 scrappy Exp $ + * + *------------------------------------------------------------------------- + */ + +#ifndef LIBPQXX_H +#define LIBPQXX_H + +#include <stdio.h> +#include <strings.h> + +extern "C" { +#include "libpq-fe.h" +#include "fe-auth.h" +} + +// **************************************************************** +// +// PGenv - the environment for setting up a connection to postgres +// +// **************************************************************** +class PGenv { + friend class PGconnection; + char* pgauth; + char* pghost; + char* pgport; + char* pgoption; + char* pgtty; +public: + PGenv(); // default ctor will use reasonable defaults + // will use environment variables PGHOST, PGPORT, + // PGOPTION, PGTTY + PGenv(char* auth, char* host, char* port, char* option, char* tty); + void setValues(char* auth, char* host, char* port, char* option, char* tty); + ~PGenv(); +}; + +// **************************************************************** +// +// PGconnection - a connection made to a postgres backend +// +// **************************************************************** +class PGconnection { + friend class PGdatabase; + friend class PGlobj; + PGenv* env; + PGconn* conn; + PGresult* result; + + char errorMessage[ERROR_MSG_LENGTH]; +public: + PGconnection(); // use reasonable defaults + PGconnection(PGenv* env, char* dbName); // connect to the database with + // given environment and database name + ConnStatusType status(); + char* errormessage() {return errorMessage;}; + + // returns the database name of the connection + char* dbName() {return PQdb(conn);}; + + ExecStatusType exec(char* query); // send a query to the backend + PGnotify* notifies() {exec(" "); return PQnotifies(conn);}; + ~PGconnection(); // close connection and clean up +protected: + ConnStatusType connect(PGenv* env, char* dbName); +}; + +// **************************************************************** +// +// PGdatabase - a class for accessing databases +// +// **************************************************************** +class PGdatabase : public PGconnection { +public: + PGdatabase() : PGconnection() {}; // use reasonable defaults + // connect to the database with + PGdatabase(PGenv* env, char* dbName) : PGconnection(env, dbName) {}; + // query result access + int ntuples() + {return PQntuples(result);}; + int nfields() + {return PQnfields(result);}; + char* fieldname(int field_num) + {return PQfname(result, field_num);}; + int fieldnum(char* field_name) + {return PQfnumber(result, field_name);}; + Oid fieldtype(int field_num) + {return PQftype(result, field_num);}; + Oid fieldtype(char* field_name) + {return PQftype(result, fieldnum(field_name));}; + int2 fieldsize(int field_num) + {return PQfsize(result, field_num);}; + int2 fieldsize(char* field_name) + {return PQfsize(result, fieldnum(field_name));}; + char* getvalue(int tup_num, int field_num) + {return PQgetvalue(result, tup_num, field_num);}; + char* getvalue(int tup_num, char* field_name) + {return PQgetvalue(result, tup_num, fieldnum(field_name));}; + int getlength(int tup_num, int field_num) + {return PQgetlength(result, tup_num, field_num);}; + int getlength(int tup_num, char* field_name) + {return PQgetlength(result, tup_num, fieldnum(field_name));}; + void printtuples(FILE *out, int fillAlign, char *fieldSep, + int printHeader, int quiet) + {PQdisplayTuples(result, out, fillAlign, fieldSep, printHeader, quiet);}; + // copy command related access + int getline(char* string, int length) + {return PQgetline(conn, string, length);}; + void putline(char* string) + {PQputline(conn, string);}; + int endcopy() + {return PQendcopy(conn);}; + ~PGdatabase() {}; // close connection and clean up +}; + +// **************************************************************** +// +// PGlobj - a class for accessing Large Object in a database +// +// **************************************************************** +class PGlobj : public PGconnection { + int fd; + Oid object; +public: + PGlobj(); // use reasonable defaults and create large object + PGlobj(Oid lobjId); // use reasonable defaults and open large object + PGlobj(PGenv* env, char* dbName); // create large object + PGlobj(PGenv* env, char* dbName, Oid lobjId); // open large object + int read(char* buf, int len) + {return lo_read(conn, fd, buf, len);}; + int write(char* buf, int len) + {return lo_write(conn, fd, buf, len);}; + int lseek(int offset, int whence) + {return lo_lseek(conn, fd, offset, whence);}; + int tell() + {return lo_tell(conn, fd);}; + int unlink(); + int import(char* filename); + int export(char* filename); + ~PGlobj(); // close connection and clean up +}; + +// +// these are the environment variables used for getting defaults +// + +#define ENV_DEFAULT_AUTH "PGAUTH" +#define ENV_DEFAULT_DBASE "PGDATABASE" +#define ENV_DEFAULT_HOST "PGHOST" +#define ENV_DEFAULT_OPTION "PGOPTION" +#define ENV_DEFAULT_PORT "PGPORT" +#define ENV_DEFAULT_TTY "PGTTY" + +// buffer size +#define BUFSIZE 1024 + +#endif /* LIBPQXX_H */ |
