/* * This file is part of rasdaman community. * * Rasdaman community is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Rasdaman community is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with rasdaman community. If not, see . * * Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009 Peter Baumann / rasdaman GmbH. * * For more information please see * or contact Peter Baumann via . */ #include "mymalloc/mymalloc.h" #include #include #include #include "raslib/minterval.hh" #include "raslib/rmdebug.hh" #include "reladminif/sqlerror.hh" #include "mddtype.hh" #include "reladminif/externs.h" r_Bytes MDDType::getMemorySize() const { return sizeof(MDDType::MDDTypeEnum) + DBNamedObject::getMemorySize(); } MDDType::MDDType(const OId& id) throw (r_Error) : Type(id) { if (objecttype == OId::MDDTYPEOID) { readFromDb(); mySubclass = MDDONLYTYPE; } myType = MDDTYPE; } MDDType::MDDType() : Type("unnamed mddtype") { myType = MDDTYPE; mySubclass = MDDONLYTYPE; objecttype = OId::MDDTYPEOID; } MDDType::MDDType(const char* newTypeName) : Type(newTypeName) { myType = MDDTYPE; mySubclass = MDDONLYTYPE; objecttype = OId::MDDTYPEOID; } MDDType::MDDType(const MDDType& old) : Type(old) { myType = old.myType; mySubclass = old.mySubclass; } MDDType& MDDType::operator=(const MDDType& old) { // Gracefully handle self assignment if (this == &old) return *this; Type::operator=(old); myType = old.myType; mySubclass = old.mySubclass; return *this; } MDDType::~MDDType() { RMDBGENTER(6, RMDebug::module_catalogif, "MDDType", "~MDDType() " << myOId); validate(); RMDBGEXIT(6, RMDebug::module_catalogif, "MDDType", "~MDDType() " << myOId); } char* MDDType::getTypeStructure() const { char* result = (char*)mymalloc(10); strcpy(result, "marray <>"); return result; } void MDDType::print_status( ostream& s ) const { s << "\tr_Marray" << "<" << ">"; } int MDDType::compatibleWith(const Type* aType) const { RMDBGONCE(11, RMDebug::module_catalogif, "MDDType", "compatibleWith(" << aType->getName() << ") " << (aType->getType() != MDDTYPE)); if(aType->getType() != MDDTYPE) return 0; else return 1; } int MDDType::compatibleWithDomain(const r_Minterval* aDomain ) const { RMDBGONCE(11, RMDebug::module_catalogif, "MDDType", "compatibleWithDomain(" << *aDomain << ") " << 1); return 1; } MDDType::MDDTypeEnum MDDType::getSubtype() const { return mySubclass; }