/*
* 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 .
*/
// This is -*- C++ -*-
/*
* dbminterval.pc
*
* 17-May-99 hoefner First created.
* 27-May-99 webbasan Added prefix "RAS_" to tablenames.
*/
#include "inlineminterval.hh"
#include "raslib/rmdebug.hh"
InlineMinterval::InlineMinterval()
: r_Minterval((r_Dimension)0)
{
RMDBGONCE(10, RMDebug::module_catalogif, "InlineMinterval", "InlineMinterval()");
}
InlineMinterval::~InlineMinterval()
{
RMDBGONCE(10, RMDebug::module_catalogif, "InlineMinterval", "~InlineMinterval()");
}
InlineMinterval::InlineMinterval(r_Dimension dim)
: r_Minterval(dim)
{
RMDBGONCE(10, RMDebug::module_catalogif, "InlineMinterval", "InlineMinterval(" << dim << ")");
}
InlineMinterval::InlineMinterval(r_Dimension dim, r_Range* lowerbound, r_Range* upperbound, char* lowerfixed, char* upperfixed)
: r_Minterval(dim)
{
RMDBGENTER(10, RMDebug::module_catalogif, "InlineMinterval", "InlineMinterval(" << dim << ", lb, ub, lf, uf)");
char undefined = '*';
streamInitCnt = dim;
for (r_Dimension count = 0; count < dimensionality; count++)
{
if (!lowerfixed[count])
{
intervals[count].set_high(undefined);
intervals[count].set_low(lowerbound[count]);
}
else {
intervals[count].set_low(undefined);
}
if (!upperfixed[count])
{
intervals[count].set_high(upperbound[count]);
}
else {
intervals[count].set_high(undefined);
}
}
RMDBGEXIT(10, RMDebug::module_catalogif, "InlineMinterval", "InlineMinterval(" << dim << ", lb, ub, lf, uf)");
}
InlineMinterval::InlineMinterval(const InlineMinterval& old)
: r_Minterval(old)
{
RMDBGONCE(10, RMDebug::module_catalogif, "InlineMinterval", "InlineMinterval(InlineMinterval)");
}
InlineMinterval::InlineMinterval(const r_Minterval& old)
: r_Minterval(old)
{
RMDBGONCE(10, RMDebug::module_catalogif, "InlineMinterval", "InlineMinterval(r_Minterval)");
}
InlineMinterval&
InlineMinterval::operator=(const InlineMinterval& old)
{
RMDBGENTER(10, RMDebug::module_catalogif, "InlineMinterval", "operator=()");
if (this == &old)
return *this;
r_Minterval::operator=(old);
RMDBGEXIT(10, RMDebug::module_catalogif, "InlineMinterval", "operator=()");
return *this;
}
InlineMinterval&
InlineMinterval::operator=(const r_Minterval& old)
{
RMDBGENTER(10, RMDebug::module_catalogif, "InlineMinterval", "operator=()");
if (this == &old)
return *this;
r_Minterval::operator=(old);
RMDBGEXIT(10, RMDebug::module_catalogif, "InlineMinterval", "operator=()");
return *this;
}
void
InlineMinterval::insertInDb(r_Range* lowerbound, r_Range* upperbound, char* lowerfixed, char* upperfixed) const
{
RMDBGENTER(10, RMDebug::module_catalogif, "InlineMinterval", "insertInDb(lb, ub, lf, uf)");
char undefined = '*';
for (int count = 0; count < dimensionality; count++)
{
if (intervals[count].is_low_fixed())
{
lowerbound[count] = intervals[count].low();
lowerfixed[count] = 0;
}
else {
lowerfixed[count] = undefined;
}
if (intervals[count].is_high_fixed())
{
upperbound[count] = intervals[count].high();
upperfixed[count] = 0;
}
else {
upperfixed[count] = undefined;
}
}
RMDBGEXIT(10, RMDebug::module_catalogif, "InlineMinterval", "insertInDb(lb, ub, lf, uf)");
}