pgLab/pglab/PgType.h

72 lines
1.8 KiB
C
Raw Normal View History

#ifndef PGTYPE_H
#define PGTYPE_H
#include <QString>
#include <libpq-fe.h>
#include "Pgsql_Value.h"
enum class TypCategory {
Array,
Boolean,
Composite,
DateTime,
Enum,
Geometric,
NetworkAddress,
Numeric,
Pseudo,
Range,
String,
Timespan,
UserDefined,
BitString,
Unknown
};
void operator<<(TypCategory &s, const Pgsql::Value &v);
class PgType {
public:
PgType();
Oid oid = InvalidOid;
QString name;//"name";"NO"
Oid typnamespace = InvalidOid;//"oid";"NO"
Oid owner = InvalidOid;//"oid";"NO"
short len = -1;//"smallint";"NO"
bool byval = false;//"boolean";"NO"
QString type;//""char"";"NO"
TypCategory category;//""char"";"NO"
bool typispreferred = false;//"boolean";"NO"
bool typisdefined = false;//"boolean";"NO"
QString typdelim;//""char"";"NO"
Oid typrelid = InvalidOid;//"oid";"NO"
Oid typelem = InvalidOid;//"oid";"NO"
Oid typarray = InvalidOid;//"oid";"NO"
QString typinput;//regproc";"NO"
QString typoutput;//"regproc";"NO"
QString typreceive;//"regproc";"NO"
QString typsend;//"regproc";"NO"
QString typmodin;//"regproc";"NO"
QString typmodout;//"regproc";"NO"
QString typanalyze;//"regproc";"NO"
QString typalign;//""char"";"NO"
QString typstorage;//""char"";"NO"
bool typnotnull = false;//"boolean";"NO"
Oid typbasetype = InvalidOid;//"oid";"NO"
int typtypmod = -1;//"integer";"NO"
int typndims = 0;//"integer";"NO"
Oid typcollation = InvalidOid;//"oid";"NO"
QString typdefaultbin;//"pg_node_tree";"YES"
QString typdefault;//"text";"YES"
QString typacl;//"ARRAY";"YES"
bool operator==(Oid _oid) const { return oid == _oid; }
bool operator==(const QString &n) const { return name == n; }
bool operator<(Oid _oid) const { return oid < _oid; }
bool operator<(const PgType &rhs) const { return oid < rhs.oid; }
};
#endif // PGTYPE_H