bool PgSQLType::isRegistered(const QString &type, void *pmodel) { if(getBaseTypeIndex(type)!=BaseType::null) return(true); else return(getUserTypeIndex(type, nullptr, pmodel)!=BaseType::null); }
void PgSQLType::setUserType(void *ptype) { int idx; idx=getUserTypeIndex(QString(),ptype); if(idx <= 0) throw Exception(ERR_ASG_INV_TYPE_OBJECT,__PRETTY_FUNCTION__,__FILE__,__LINE__); else type_idx=idx; }
void PgSQLType::setDimension(unsigned dim) { if(dim > 0 && this->isUserType()) { int idx=getUserTypeIndex(~(*this), nullptr); if(user_types[idx].type_conf==UserTypeConfig::DOMAIN_TYPE || user_types[idx].type_conf==UserTypeConfig::SEQUENCE_TYPE) throw Exception(ERR_ASG_INV_DOMAIN_ARRAY,__PRETTY_FUNCTION__,__FILE__,__LINE__); } dimension=dim; }
void PgSQLType::addUserType(const QString &type_name, void *ptype, void *pmodel, unsigned type_conf) { if(type_name!="" && ptype && pmodel && (type_conf==UserTypeConfig::DOMAIN_TYPE || type_conf==UserTypeConfig::SEQUENCE_TYPE || type_conf==UserTypeConfig::TABLE_TYPE || type_conf==UserTypeConfig::BASE_TYPE) && getUserTypeIndex(type_name,ptype,pmodel)==0) { UserTypeConfig cfg; cfg.name=type_name; cfg.ptype=ptype; cfg.pmodel=pmodel; cfg.type_conf=type_conf; PgSQLType::user_types.push_back(cfg); } }
unsigned PgSQLType::operator = (const QString &type_name) { unsigned type_idx, usr_type_idx; type_idx=getBaseTypeIndex(type_name); usr_type_idx=getUserTypeIndex(type_name, nullptr); if(type_idx==0 && usr_type_idx==0) throw Exception(ERR_ASG_INV_TYPE_OBJECT,__PRETTY_FUNCTION__,__FILE__,__LINE__); else if(type_idx!=0) { BaseType::setType(type_idx,offset,types_count); return(type_idx); } else { setUserType(usr_type_idx); return(usr_type_idx); } }
bool PgSQLType::operator == (void *ptype) { int idx; idx=getUserTypeIndex(QString(),ptype); return(static_cast<int>(type_idx) == idx); }