/*
* 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: mddtypes.cc
*
* MODULE: raslib
* CLASS:
*
* COMMENTS:
*
*/
static const char rcsid[] = "@(#)raslib, mddtypes: $Header: /home/rasdev/CVS-repository/rasdaman/raslib/mddtypes.cc,v 1.26 2005/09/03 20:33:10 rasdev Exp $";
#ifdef AIX
#include
#else
#include
#endif
#include "raslib/mddtypes.hh"
#include "raslib/rminit.hh"
/*
* The names of all data formats
*/
const char *format_name_array = "Array";
const char *format_name_tiff = "TIFF";
const char *format_name_jpeg = "JPEG";
const char *format_name_hdf = "HDF";
const char *format_name_cvs = "CVS";
const char *format_name_png = "PNG";
const char *format_name_zlib = "ZLib";
const char *format_name_auto_compression = "AutoCompression";
const char *format_name_bmp = "BMP";
const char *format_name_ppm = "PPM";
const char *format_name_rle = "RLE";
const char *format_name_wavelet_haar = "HaarWavelet";
const char *format_name_wavelet_daubechies = "DaubechiesWavelet";
const char *format_name_sep_zlib = "SepZLib";
const char *format_name_sep_rle = "SepRLE";
const char *format_name_wavelet_daub6 = "Daubechies6Wavelet";
const char *format_name_wavelet_daub8 = "Daubechies8Wavelet";
const char *format_name_wavelet_daub10 = "Daubechies10Wavelet";
const char *format_name_wavelet_daub12 = "Daubechies12Wavelet";
const char *format_name_wavelet_daub14 = "Daubechies14Wavelet";
const char *format_name_wavelet_daub16 = "Daubechies16Wavelet";
const char *format_name_wavelet_daub18 = "Daubechies18Wavelet";
const char *format_name_wavelet_daub20 = "Daubechies20Wavelet";
const char *format_name_wavelet_least8 = "LeastAsym8Wavelet";
const char *format_name_wavelet_least10 = "LeastAsym10Wavelet";
const char *format_name_wavelet_least12 = "LeastAsym12Wavelet";
const char *format_name_wavelet_least14 = "LeastAsym14Wavelet";
const char *format_name_wavelet_least16 = "LeastAsym16Wavelet";
const char *format_name_wavelet_least18 = "LeastAsym18Wavelet";
const char *format_name_wavelet_least20 = "LeastAsym20Wavelet";
const char *format_name_wavelet_coiflet6 = "Coiflet6Wavelet";
const char *format_name_wavelet_coiflet12 = "Coiflet12Wavelet";
const char *format_name_wavelet_coiflet18 = "Coiflet18Wavelet";
const char *format_name_wavelet_coiflet24 = "Coiflet24Wavelet";
const char *format_name_wavelet_coiflet30 = "Coiflet30Wavelet";
const char *format_name_vff = "VFF";
const char *format_name_wavelet_qhaar = "QHaarWavelet";
const char *format_name_tor = "TOR";
const char *format_name_dem = "DEM";
const char *format_name_pack_bits = "PACKBITS";
const char *format_name_ecw = "ECW";
const char *format_name_tmc = "TMC";
const char *format_name_ntf = "NTF";
const char *all_data_format_names[r_Data_Format_NUMBER] = {
format_name_array,
format_name_tiff,
format_name_jpeg,
format_name_cvs,
format_name_hdf,
format_name_png,
format_name_zlib,
format_name_auto_compression,
format_name_bmp,
format_name_rle,
format_name_wavelet_haar,
format_name_wavelet_daubechies,
format_name_sep_zlib,
format_name_sep_rle,
format_name_wavelet_daub6,
format_name_wavelet_daub8,
format_name_wavelet_daub10,
format_name_wavelet_daub12,
format_name_wavelet_daub14,
format_name_wavelet_daub16,
format_name_wavelet_daub18,
format_name_wavelet_daub20,
format_name_wavelet_least8,
format_name_wavelet_least10,
format_name_wavelet_least12,
format_name_wavelet_least14,
format_name_wavelet_least16,
format_name_wavelet_least18,
format_name_wavelet_least20,
format_name_wavelet_coiflet6,
format_name_wavelet_coiflet12,
format_name_wavelet_coiflet18,
format_name_wavelet_coiflet24,
format_name_wavelet_coiflet30,
format_name_vff,
format_name_wavelet_qhaar,
format_name_ppm,
format_name_tor,
format_name_dem,
format_name_pack_bits,
format_name_ecw,
format_name_tmc,
format_name_ntf
};
const char *get_name_from_data_format( r_Data_Format fmt )
{
unsigned int idx = (unsigned int)fmt;
if (idx >= (unsigned int)r_Data_Format_NUMBER)
return "???";
return all_data_format_names[idx];
}
r_Data_Format get_data_format_from_name( const char *name )
{
if(!name) {
RMInit::logOut << "get_data_format_from_name(" << (name?name: "NULL") << ")" << endl;
return r_Data_Format_NUMBER;
}
unsigned int i=r_Data_Format_NUMBER;
for (i=0; i<(unsigned int)r_Data_Format_NUMBER; i++)
{
if (strcasecmp(name, all_data_format_names[i]) == 0)
break;
}
return (r_Data_Format)i;
}
std::ostream& operator<<( std::ostream& s, r_Data_Format& d )
{
s << (const r_Data_Format)d;
return s;
}
std::ostream& operator<<( std::ostream& s, const r_Data_Format& d )
{
s << get_name_from_data_format(d);
return s;
}
const char* scale_function_name_subsampling = "subsampling";
const char* scale_function_name_bitaggregation = "bitaggregation";
const char* all_scale_function_names[r_Scale_Function_NUMBER] = {
scale_function_name_subsampling,
scale_function_name_bitaggregation
};
const char *get_name_from_scale_function(r_Scale_Function fmt)
{
unsigned int idx = (unsigned int)fmt;
if (idx >= (unsigned int)r_Scale_Function_NUMBER)
return "???";
return all_scale_function_names[idx];
}
r_Scale_Function get_scale_function_from_name(const char *name)
{
if(!name) {
RMInit::logOut << "get_scale_function_from_name(" << (name?name: "NULL") << ")" << endl;
return r_Scale_Function_NUMBER;
}
unsigned int i=r_Scale_Function_NUMBER;
for (i=0; i<(unsigned int)r_Scale_Function_NUMBER; i++)
{
if (strcasecmp(name, all_scale_function_names[i]) == 0)
break;
}
return (r_Scale_Function)i;
}
std::ostream& operator<<( std::ostream& s, const r_Scale_Function& d )
{
s << get_name_from_scale_function(d);
return s;
}
/*
* The names of all index type
*/
const char *index_name_auto="auto";
const char *index_name_directory="dir";
const char *index_name_regdirectory="rdir";
const char *index_name_rplustree="nrp";
const char *index_name_regrplustree="rnrp";
const char *index_name_tilecontainer="tc";
const char *index_name_regcomputed="rc";
const char *all_index_type_names[r_Index_Type_NUMBER] = {
index_name_auto,
index_name_directory,
index_name_regdirectory,
index_name_rplustree,
index_name_regrplustree,
index_name_tilecontainer,
index_name_regcomputed
};
const char *get_name_from_index_type( r_Index_Type it )
{
unsigned int idx = (unsigned int)it;
if (idx >= (unsigned int)r_Index_Type_NUMBER)
return "UNKNOWN r_Index_Type";
if (idx == (unsigned int)r_Invalid_Index)
return "r_Invalid_Index";
return all_index_type_names[idx];
}
r_Index_Type get_index_type_from_name( const char *name )
{
if(!name) {
RMInit::logOut << "get_index_type_from_name(" << (name?name: "NULL") << ")" << endl;
return r_Index_Type_NUMBER;
}
unsigned int i=r_Index_Type_NUMBER;
for (i=0; i<(unsigned int)r_Index_Type_NUMBER; i++)
{
if (strcasecmp(name, all_index_type_names[i]) == 0)
break;
}
return (r_Index_Type)i;
}
std::ostream& operator<<( std::ostream& s, r_Index_Type d )
{
switch( d )
{
case r_Invalid_Index:
s << "r_Invalid_Index";
break;
case r_Auto_Index:
s << "r_Auto_Index";
break;
case r_Directory_Index:
s << "r_Directory_Index";
break;
case r_Reg_Directory_Index:
s << "r_Reg_Directory_Index";
break;
case r_RPlus_Tree_Index:
s << "r_RPlus_Tree_Index";
break;
case r_Reg_RPlus_Tree_Index:
s << "r_Reg_RPlus_Tree_Index";
break;
case r_Tile_Container_Index:
s << "r_Tile_Container_Index";
break;
case r_Reg_Computed_Index:
s << "r_Reg_Computed_Index";
break;
default:
s << "UNKNOWN r_Index_Type " << d;
break;
}
return s;
}
/*
* The names of all tiling schemes
*/
const char *tiling_name_notiling = "NoTiling";
const char *tiling_name_regulartiling = "RegularTiling";
const char *tiling_name_statisticaltiling = "StatisticalTiling";
const char *tiling_name_interesttiling = "InterestTiling";
const char *tiling_name_alignedtiling = "AlignedTiling";
const char *tiling_name_directionaltiling = "DirectionalTiling";
const char *tiling_name_sizetiling = "SizeTiling";
const char *all_tiling_scheme_names[r_Tiling_Scheme_NUMBER] = {
tiling_name_notiling,
tiling_name_regulartiling,
tiling_name_statisticaltiling,
tiling_name_interesttiling,
tiling_name_alignedtiling,
tiling_name_directionaltiling,
tiling_name_sizetiling
};
const char *get_name_from_tiling_scheme( r_Tiling_Scheme ts )
{
unsigned int idx = (unsigned int)ts;
if (idx >= (unsigned int)r_Tiling_Scheme_NUMBER)
return "UNKNOWN r_Tiling_Scheme";
return all_tiling_scheme_names[idx];
}
r_Tiling_Scheme get_tiling_scheme_from_name( const char *name )
{
if(!name) {
RMInit::logOut << "get_tiling_scheme_from_name(" << (name?name: "NULL") << ")" << endl;
return r_Tiling_Scheme_NUMBER;
}
unsigned int i=r_Tiling_Scheme_NUMBER;
for (i=0; i<(unsigned int)r_Tiling_Scheme_NUMBER; i++)
{
if (strcasecmp(name, all_tiling_scheme_names[i]) == 0)
break;
}
return (r_Tiling_Scheme)i;
}
std::ostream& operator<<(std::ostream& s, r_Tiling_Scheme d)
{
s << get_name_from_tiling_scheme(d);
return s;
}
std::ostream& operator<<( std::ostream& s, const r_Clustering_Scheme d )
{
switch( d )
{
case r_Insertion_Order_Clustering:
s << "r_Insertion_Order_Clustering";
break;
case r_Coords_Order_Clustering:
s << "r_Coords_Order_Clustering";
break;
case r_Index_Cluster_Clustering:
s << "r_Index_Cluster_Clustering";
break;
case r_Based_Cluster_Stat_Clustering:
s << "r_Based_Cluster_Stat_Clustering";
break;
default:
s << "UNKNOWN r_Clustering_Scheme " << d;
break;
}
return s;
}
#ifdef __VISUALC__
#include
int strcasecmp(const char *s1, const char *s2)
{
const char *b, *d;
b = s1; d = s2;
while ((*b != '\0') && (*d != '\0'))
{
if (tolower((unsigned int)*b) != tolower((unsigned int)*d))
break;
b++; d++;
}
if ((*b == '\0') && (*d == '\0'))
return 0;
if (tolower((unsigned int)*b) < tolower((unsigned int)*d))
return -1;
return 1;
}
#endif