/* * 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: attribute.hh * * MODULE: raslib * CLASS: r_Attribute * * COMMENTS: * None */ #ifndef _D_ATTRIBUTE_ #define _D_ATTRIBUTE_ #include "raslib/property.hh" #include "raslib/odmgtypes.hh" #include "raslib/mddtypes.hh" class r_Base_Type; class r_Type_Id; class r_Error; //@ManMemo: Module: {\bf raslib} /*@Doc: This class represents attributes of structs in the ODMG conformant representation of the RasDaMan type system. */ class r_Attribute : public r_Property { public: /// default constructor. /// initialise important attributes to NULL r_Attribute(); /// constructor getting name and type of attribute. r_Attribute(const char* newTypeName, const r_Base_Type& newType); /// copy constructor. r_Attribute(const r_Attribute& oldObj); /// assignment operator. const r_Attribute& operator=(const r_Attribute& oldObj); /// destructor. virtual ~r_Attribute(); /// retrieve (local) offset r_Bytes offset() const; /// set (local) offset void set_offset(r_Bytes newOffset); /// retrieve global offset r_Bytes global_offset() const; /// set global offset void set_global_offset(r_Bytes newOffset); /// writes state of object to specified stream virtual void print_status(std::ostream& s = std::cout) const; /// subscript operator to access attributes of a structured attribute /// throws error when type is not a struct type r_Attribute operator[](unsigned int number) const throw(r_Error); //@Man: Type-safe value access methods. In case of type mismatch, an exception is raised. //@{ /// r_Boolean get_boolean(const char* cell) const throw(r_Error); /// r_Char get_char(const char* cell) const throw(r_Error); /// r_Octet get_octet(const char* cell) const throw(r_Error); /// r_Short get_short(const char* cell) const throw(r_Error); /// r_UShort get_ushort(const char* cell) const throw(r_Error); /// r_Long get_long(const char* cell) const throw(r_Error); /// r_ULong get_ulong(const char* cell) const throw(r_Error); /// r_Float get_float(const char* cell) const throw(r_Error); /// r_Double get_double(const char* cell) const throw(r_Error); /// //@} protected: /// local offset r_Bytes localOffset; /// global offset r_Bytes globalOffset; }; //@Doc: write the status of a attribute to a stream extern std::ostream &operator<<( std::ostream &str, const r_Attribute &type ); #endif