/* * 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 . */ /************************************************************* * * SOURCE: test_sinterval.cc * * MODULE: raslib * * PURPOSE: * * COMMENTS: * ************************************************************/ #include #include #include "raslib/sinterval.hh" #include "raslib/rminit.hh" RMINITGLOBALS('C') int main() { r_Sinterval interval1, interval2; char Buffer[256]; cout << "lower bound ? "; cin >> Buffer; cout << endl; if( Buffer[0] == '*' ) interval1.set_low('*'); else interval1.set_low( atol( Buffer ) ); cout << "upper bound ? "; cin >> Buffer; cout << endl; if( Buffer[0] == '*' ) interval1.set_high('*'); else interval1.set_high( atol( Buffer ) ); cout << "interval1 = ["; interval1.print_status( cout ); cout << "]" << endl << endl; cout << "lower bound ? "; cin >> Buffer; cout << endl; if( Buffer[0] == '*' ) interval2.set_low('*'); else interval2.set_low( atol( Buffer ) ); cout << "upper bound ? "; cin >> Buffer; cout << endl; if( Buffer[0] == '*' ) interval2.set_high('*'); else interval2.set_high( atol( Buffer ) ); cout << "interval1 = ["; interval2.print_status( cout ); cout << "]" << endl << endl; r_Sinterval result; try{ result.union_of( interval1, interval2 ); cout << "union = ["; result.print_status( cout ); cout << "]" << endl; } catch( r_Eno_interval error ) { cerr << "union " << error.what() << endl; } try{ result.difference_of( interval1, interval2 ); cout << "difference = ["; result.print_status( cout ); cout << "]" << endl; } catch( r_Eno_interval error ) { cerr << "difference " << error.what() << endl; } try{ result.intersection_of( interval1, interval2 ); cout << "intersection = ["; result.print_status( cout ); cout << "]" << endl; } catch( r_Eno_interval error ) { cerr << "intersection " << error.what() << endl; } try{ result.closure_of( interval1, interval2 ); cout << "closure = ["; result.print_status( cout ); cout << "]" << endl; } catch( r_Eno_interval error ) { cerr << "closure " << error.what() << endl; } if( interval1.intersects_with( interval2 ) ) cerr << "The intervals intersect." << endl; else cerr << "The intervals do not intersect." << endl; cerr << endl; r_Sinterval b( 4l, 10l ); char* stringRep = b.get_string_representation(); cout << endl << "String representation of interval " << b << ": " << stringRep << endl; cout << "Result of string constructor: " << r_Sinterval( stringRep ) << endl; free( stringRep ); cout << "Result of r_Sinterval(\" 10 : 100\"): " << r_Sinterval(" 10 : 100") << endl; cout << "Result of r_Sinterval(\" * : 100\"): " << r_Sinterval(" * : 100") << endl; cout << "Result of r_Sinterval(\" 10 : * \"): " << r_Sinterval(" 10 : * ") << endl; cout << "Result of r_Sinterval(\" * : * \"): " << r_Sinterval(" * : * ") << endl; return 0; }