/*
* 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: oid.hh
*
* MODULE: raslib
* CLASS: r_OId
*
* COMMENTS:
* The class represents an object identifier (OId).
*
*/
#ifndef _D_OID_
#define _D_OID_
#include
//@ManMemo: Module: {\bf raslib}
/*@Doc:
Class \Ref{r_OId} represents an object identifier.
*/
class r_OId
{
public:
/// default constructor
r_OId();
/// constructs an OId from the string representation
r_OId( const char* );
/// constructor getting oid parts
r_OId( const char* initSystemName, const char* initBaseName, double initLocalOId );
/// copy constructor
r_OId( const r_OId& );
/// destructor
virtual ~r_OId();
/// it is called when an object leaves transient memory
virtual void r_deactivate();
/// debug output
void print_status(std::ostream& s) const;
/// operator for assigning an oid
const r_OId& operator= ( const r_OId& );
//@Man: Comparison operators:
//@{
///
/// operator for equality
bool operator==( const r_OId& ) const;
/// operator for not equal
bool operator!=( const r_OId& ) const;
/// operator for greater than
bool operator> ( const r_OId& ) const;
/// operator for less than
bool operator< ( const r_OId& ) const;
/// operator for greater or equal than
bool operator>=( const r_OId& ) const;
/// operator for less than or equal
bool operator<=( const r_OId& ) const;
///
//@}
/// gets the oid's string representation
inline const char* get_string_representation() const;
/// get system name
inline const char* get_system_name() const;
/// get base name
inline const char* get_base_name() const;
/// get local oid
inline double get_local_oid() const;
/// determines if oid is valid
inline bool is_valid() const;
private:
/// string representation
char* oidString;
/// system name
char* systemName;
/// base name
char* baseName;
/// local oid
double localOId;
};
//@ManMemo: Module: {\bf raslib}
/**
Output stream operator for objects of type {\tt const} \Ref{r_Oid}.
*/
extern std::ostream& operator<<( std::ostream& s, const r_OId& oid );
#include "raslib/oid.icc"
#endif