1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
//////////////////////////////////////////////////////////////////////////
//
// pgAdmin III - PostgreSQL Tools
//
// Copyright (C) 2002 - 2014, The pgAdmin Development Team
// This software is released under the PostgreSQL Licence
//
// pgDatatype.h - PostgreSQL Datatypes
//
//////////////////////////////////////////////////////////////////////////
#ifndef __DATATYPE_INC
#define __DATATYPE_INC
#include <wx/wx.h>
// App headers
#include "db/pgSet.h"
#include "db/pgConn.h"
class pgDatabase;
class pgDatatype
{
public:
pgDatatype(const wxString &nsp, const wxString &typname, bool isduplicate, long numdims = 0, long typmod = -1);
wxString Name() const
{
return name;
};
wxString LengthString() const
{
return length;
}
wxString Array() const
{
return array;
}
wxString FullName() const;
wxString QuotedFullName() const;
wxString GetSchemaPrefix(pgDatabase *db) const;
wxString GetQuotedSchemaPrefix(pgDatabase *db) const;
long Length() const
{
return len;
}
long Precision() const
{
return prec;
}
static long GetTypmod(const wxString &name, const wxString &len, const wxString &prec);
bool HasStats()
{
return false;
}
bool HasDepends()
{
return true;
}
bool HasReferences()
{
return true;
}
private:
wxString schema;
wxString name;
wxString length;
wxString array;
long len, prec;
bool needSchema;
};
class DatatypeReader
{
public:
DatatypeReader(pgDatabase *db, bool withDomains = true, bool addSerials = false);
DatatypeReader(pgDatabase *db, const wxString &condition, bool addSerials = false);
~DatatypeReader()
{
if (set) delete set;
}
bool HasMore() const
{
return set && !set->Eof();
}
void MoveNext()
{
if (set) set->MoveNext();
}
bool IsDomain() const;
bool IsVarlen() const;
bool MaySpecifyLength() const;
bool MaySpecifyPrecision() const;
pgDatatype GetDatatype() const;
wxString GetTypename() const;
wxString GetSchema() const;
wxString GetSchemaPrefix() const;
wxString GetQuotedSchemaPrefix() const;
wxString GetOidStr() const;
OID GetOid() const;
private:
pgSet *set;
pgDatabase *database;
void init(pgDatabase *db, const wxString &condition, bool addSerials = false);
};
#endif
|