FirteX-高性能全文索引和检索平台

API Documentation


首页 | 名字空间列表 | 类继承关系 | 组合类型列表 | $(BL\录(B | 文件列表 | 名字空间成员 | 组合类型成员 | 文件成员

Metadata.h

浏览该文件的文档。
00001 //
00002 // Copyright(C) 2005--2006 Institute of Computing Tech, Chinese Academy of Sciences. 
00003 // All rights reserved.
00004 // This file is part of FirteX (www.firtex.org)
00005 //
00006 // Use of the FirteX is subject to the terms of the software license set forth in 
00007 // the LICENSE file included with this software, and also available at
00008 // http://www.firtex.org/license.html
00009 //
00010 // Author       : 郭瑞杰(GuoRuijie)
00011 // Email        : ruijieguo@software.ict.ac.cn
00012 // Created      : 2006/5/20
00013 //
00014 #ifndef _METADATA_H
00015 #define _METADATA_H
00016 
00017 #if _MSC_VER > 1000
00018 #pragma once
00019 #endif // _MSC_VER > 1000
00020 
00021 #include "../utility/typedefs.h"
00022 #include "../utility/Exception.h"
00023 #include "../utility/Number.h"
00024 #include "../utility/FXString.h"
00025 #include <string>
00026 using namespace firtex;
00027 using namespace firtex::utility;
00028 using namespace std;
00029 
00030 namespace firtex
00031 {
00032         namespace index
00033         {
00034                 enum METAENUM
00035                 {
00036                         MT_EMPTY                = 0,                    //Empty
00037                         MT_STR                  = 1,                    //ANSI
00038                         MT_WSTR                 = 2,                    //UNICODE
00039                         MT_NUMBER               = 3,                    //Number
00040                         MT_DATARECORD   = 4,                    //Binary data
00041                 };
00042 
00043                 typedef unsigned short meta_type;
00044                 typedef struct _tag_metadata_var
00045                 {
00046                         meta_type       mt;
00047                         union
00048                         {                       
00049                                 union
00050                                 {
00051                                         CFXString*      strval;         //ANSI
00052                                         CFXStringW*     wstrval;        //Unicode
00053                                 }text;
00054                                 numbervar       numval;                 //Number
00055                                 struct sdrval : public datarecord                       //Binary data
00056                                 {
00057                                         bool    owner;
00058                                 }drval;
00059                         }meta;
00060                 }metadata_var;
00061 
00062                 class CMetadataVar : public _tag_metadata_var
00063                 {
00064                 public:
00065                         CMetadataVar();
00066                         CMetadataVar(const metadata_var& mdvar);                                //will NOT copy string
00067                         CMetadataVar(const string& value);                                              //will copy string
00068                         CMetadataVar(const char* value);                                                //will copy string
00069                         CMetadataVar(const wchar_t* value);                                             //will copy string
00070                         CMetadataVar(char* value,size_t len,bool bNoCopy);              //will or will NOT copy string,depends on bNoCopy
00071                         CMetadataVar(wchar_t* value,size_t len,bool bNoCopy);   //will or will NOT copy string,depends on bNoCopy
00072                         CMetadataVar(const str_t& value,bool bNoCopy);                  //will or will NOT copy string,depends on bNoCopy                       
00073                         CMetadataVar(const wstr_t& value,bool bNoCopy);                 //will or will NOT copy string,depends on bNoCopy
00074                         CMetadataVar(const CNumber& number);
00075                         CMetadataVar(const numbervar& number);
00076                         CMetadataVar(const datarecord& datarec,bool bNoCopy);   //will or will NOT copy data,depends on bNoCopy
00077                         ~CMetadataVar();
00078                 public:
00079                         operator char*();
00080                         operator wchar_t*();
00081                         operator str_t();
00082                         operator wstr_t();
00083                         operator numbervar();
00084                         operator datarecord();
00085 
00086                         CMetadataVar& operator =(const char* value);                    //will copy string
00087                         CMetadataVar& operator =(const wchar_t* value);                 //will copy string
00088                         CMetadataVar& operator =(const str_t& value);                   //will copy string
00089                         CMetadataVar& operator =(const wstr_t& value);                  //will copy string
00090                         CMetadataVar& operator =(const CNumber& number);                
00091                         CMetadataVar& operator =(const numbervar& number);
00092                         CMetadataVar& operator =(const datarecord& datarec);    //will copy string
00093 
00094                         bool operator==(const metadata_var& mdvar);
00095                         bool operator==(const metadata_var* mdvar);
00096 
00097                         bool operator!=(const metadata_var& mdvar);
00098                         bool operator!=(const metadata_var* mdvar);
00099                 public:
00100                         void    clear();
00101                         void    assign(char* value,size_t len,bool bNoCopy);
00102                         void    assign(wchar_t* value,size_t len,bool bNoCopy);
00103                         void    assign(const char* value);
00104                         void    assign(const wchar_t* value);
00105                         void    assign(const datarecord& datarec,bool bNoCopy);
00106                         void    assign(const numbervar& num);
00107                 protected:
00108                         void    assign_str(const char* s);
00109                         void    assign_wstr(const wchar_t* s);
00110                         void    assign_str(char* s,size_t len);
00111                         void    assign_wstr(wchar_t* s,size_t len);
00112                         void    assign_str(const str_t& s);
00113                         void    assign_wstr(const wstr_t& s);
00114                 };
00115 
00117                 //CMetadata
00118 
00119                 class CMetadata : public CMetadataVar
00120                 {
00121                 public:
00122                         CMetadata(void);
00123                         CMetadata(schemaid_t id,const tchar* name,bool bAnalyze,bool bIndex,bool bCompress);
00124 
00125                         CMetadata(const tchar* name,const string& value,bool bAnalyze,bool bIndex);                                             //will NOT copy string
00126                         CMetadata(const tchar* name,const char* value,bool bAnalyze,bool bIndex);                                                       //will copy string
00127                         CMetadata(const tchar* name,const wchar_t* value,bool bAnalyze,bool bIndex);                                            //will copy string                                                                                                                                                                                      
00128                         CMetadata(const tchar* name,char* value,size_t len,bool bNoCopy,bool bAnalyze,bool bIndex);             //will or will NOT copy string,depends on bNoCopy
00129                         CMetadata(const tchar* name,wchar_t* value,size_t len,bool bNoCopy,bool bAnalyze,bool bIndex);          //will or will NOT copy string,depends on bNoCopy
00130                         CMetadata(const tchar* name,const str_t& value,bool bNoCopy,bool bAnalyze,bool bIndex);
00131                         CMetadata(const tchar* name,const wstr_t& value,bool bNoCopy,bool bAnalyze,bool bIndex);
00132                         CMetadata(const tchar* name,const CNumber& number,bool bIndex);
00133                         CMetadata(const tchar* name,const numbervar& number,bool bIndex);
00134                         CMetadata(const tchar* name,const datarecord& datarec,bool bNoCopy,bool bCompress);
00135                         ~CMetadata(void);
00136                 public:                 
00137                         CFXString               Name;
00138                         schemaid_t              Id;
00139                         struct sIndex
00140                         {
00141                                 bool            Analyze;
00142                                 bool            Index;
00143                                 bool            Compress;
00144                         }Index;
00145                 };
00146 
00148                 //CMetadataVar inline functions                 
00149 
00150                 inline CMetadataVar::CMetadataVar()
00151                 {
00152                         memset(this,0,sizeof(metadata_var));
00153                         mt = MT_EMPTY;                  
00154                 }
00155                 inline CMetadataVar::CMetadataVar(const metadata_var& mdvar)
00156                 {
00157                         memset(this,0,sizeof(metadata_var));
00158                         mt = mdvar.mt;
00159                         meta = mdvar.meta;
00160                 }
00161                 inline CMetadataVar::CMetadataVar(const string& value)
00162                 {
00163                         memset(this,0,sizeof(metadata_var));
00164                         mt = MT_STR;
00165                         meta.text.strval = new CFXString(value);
00166                 }
00167                 inline CMetadataVar::CMetadataVar(const char* value)
00168                 {
00169                         memset(this,0,sizeof(metadata_var));
00170                         mt = MT_STR;
00171                         meta.text.strval = new CFXString(value);
00172                 }
00173                 inline CMetadataVar::CMetadataVar(const wchar_t* value)
00174                 {
00175                         memset(this,0,sizeof(metadata_var));
00176                         mt = MT_WSTR;
00177                         meta.text.wstrval = new CFXStringW(value);
00178                 }
00179                 inline CMetadataVar::CMetadataVar(char* value,size_t len,bool bNoCopy)
00180                 {
00181                         memset(this,0,sizeof(metadata_var));
00182                         mt = MT_STR;
00183                         meta.text.strval = new CFXString(value,len,bNoCopy);
00184                 }
00185                 inline CMetadataVar::CMetadataVar(wchar_t* value,size_t len,bool bNoCopy)
00186                 {
00187                         memset(this,0,sizeof(metadata_var));
00188                         mt = MT_WSTR;
00189                         meta.text.wstrval = new CFXStringW(value,len,bNoCopy);
00190                 }
00191                 inline CMetadataVar::CMetadataVar(const str_t& value,bool bNoCopy)
00192                 {
00193                         memset(this,0,sizeof(metadata_var));
00194                         mt = MT_STR;
00195                         meta.text.strval = new CFXString(value,bNoCopy);
00196                 }
00197                 inline CMetadataVar::CMetadataVar(const wstr_t& value,bool bNoCopy)
00198                 {
00199                         memset(this,0,sizeof(metadata_var));
00200                         mt = MT_WSTR;
00201                         meta.text.wstrval = new CFXStringW(value,bNoCopy);
00202                 }
00203                 inline CMetadataVar::CMetadataVar(const CNumber& number)
00204                 {
00205                         memset(this,0,sizeof(metadata_var));
00206                         mt = MT_NUMBER;
00207                         meta.numval = number;
00208                 }
00209                 inline CMetadataVar::CMetadataVar(const numbervar& number)
00210                 {
00211                         memset(this,0,sizeof(metadata_var));
00212                         mt = MT_NUMBER;
00213                         meta.numval = number;
00214                 }
00215                 inline CMetadataVar::CMetadataVar(const datarecord& datarec,bool bNoCopy)
00216                 {
00217                         memset(this,0,sizeof(metadata_var));
00218                         mt = MT_DATARECORD;
00219                         meta.drval.length = datarec.length;
00220                         if(bNoCopy)
00221                         {
00222                                 meta.drval.data = datarec.data;                                 
00223                                 meta.drval.owner = false;
00224                         }
00225                         else 
00226                         {
00227                                 meta.drval.data = new byte[datarec.length];
00228                                 memcpy(meta.drval.data,datarec.data,datarec.length);
00229                                 meta.drval.owner = true;
00230                         }
00231                 }
00232                 inline CMetadataVar::~CMetadataVar()
00233                 {
00234                         clear();
00235                 }       
00236                 inline CMetadataVar::operator char*()
00237                 {                       
00238                         FIRTEX_ASSERT((mt == MT_STR),_T("CMetadataVar::operator char*()"));
00239                         return (*(meta.text.strval));
00240                 }
00241                 inline CMetadataVar::operator wchar_t*()
00242                 {                               
00243                         FIRTEX_ASSERT((mt == MT_WSTR),_T("CMetadataVar::operator wchar_t*()"));
00244                         return (*(meta.text.wstrval));
00245                 }
00246                 inline CMetadataVar::operator str_t()
00247                 {
00248             FIRTEX_ASSERT((mt == MT_STR),_T("CMetadataVar::operator str_t()"));
00249                         return (*(meta.text.strval));
00250                 }
00251                 inline CMetadataVar::operator wstr_t()
00252                 {
00253                         FIRTEX_ASSERT((mt == MT_WSTR),_T("CMetadataVar::operator wstr_t()"));
00254                         return (*(meta.text.wstrval));                  
00255                 }
00256                 inline CMetadataVar::operator numbervar()
00257                 {                       
00258                         FIRTEX_ASSERT((mt == MT_NUMBER),_T("CMetadataVar::operator numbervar()"));
00259                         return meta.numval;     
00260                 }
00261                 inline CMetadataVar::operator datarecord()
00262                 {                       
00263                         FIRTEX_ASSERT((mt == MT_DATARECORD),_T("CMetadataVar::operator datarecord()"));
00264                         return meta.drval;      
00265                 }
00266 
00267                 inline CMetadataVar& CMetadataVar::operator =(const char* value)
00268                 {                       
00269                         FIRTEX_ASSERT(( (mt == MT_STR) || (mt == MT_EMPTY) ),_T("CMetadataVar::operator =(const char* value)"));
00270 
00271                         mt = MT_STR;
00272                         if(meta.text.strval == NULL)
00273                                 meta.text.strval = new CFXString(value);
00274                         else (*(meta.text.strval)) = value;             
00275                         return *this;
00276                 }
00277                 inline CMetadataVar& CMetadataVar::operator =(const wchar_t* value)
00278                 {                       
00279                         FIRTEX_ASSERT(( (mt == MT_WSTR) || (mt == MT_EMPTY) ),_T("CMetadataVar::operator =(const wchar_t* value)"));
00280 
00281                         mt = MT_WSTR;
00282                         if(meta.text.wstrval == NULL)
00283                                 meta.text.wstrval = new CFXStringW(value);
00284                         else (*(meta.text.wstrval)) = value;            
00285                         return *this;
00286                 }
00287                 inline CMetadataVar& CMetadataVar::operator =(const str_t& value)
00288                 {                       
00289                         FIRTEX_ASSERT(( (mt == MT_STR) || (mt == MT_EMPTY) ),"CMetadataVar::operator =(const str_t* value)");
00290 
00291                         mt = MT_STR;
00292                         if(meta.text.strval == NULL)
00293                                 meta.text.strval = new CFXString(value);
00294                         else (*(meta.text.strval)) = value;             
00295                         return (*this);
00296                 }
00297                 inline CMetadataVar& CMetadataVar::operator =(const wstr_t& value)
00298                 {                       
00299                         FIRTEX_ASSERT(( (mt == MT_WSTR) || (mt == MT_EMPTY) ),_T("CMetadataVar::operator =(const wstr_t* value)"));
00300 
00301                         mt = MT_WSTR;
00302                         if(meta.text.wstrval == NULL)
00303                                 meta.text.wstrval = new CFXStringW(value);
00304                         else (*(meta.text.wstrval)) = value;    
00305                         return (*this);
00306                 }
00307                 inline CMetadataVar& CMetadataVar::operator =(const CNumber& number)
00308                 {                       
00309                         FIRTEX_ASSERT(( (mt == MT_NUMBER) || (mt == MT_EMPTY) ),_T("CMetadataVar::operator =(const CNumber& value)"));
00310 
00311                         mt = MT_NUMBER;
00312                         meta.numval = (numbervar)number;
00313                         return (*this);
00314                 }
00315                 inline CMetadataVar& CMetadataVar::operator =(const numbervar& number)
00316                 {                       
00317                         FIRTEX_ASSERT(( (mt == MT_NUMBER) || (mt == MT_EMPTY) ),_T("CMetadataVar::operator =(const numbervar& value)"));
00318 
00319                         mt = MT_NUMBER;
00320                         meta.numval = number;
00321                         return (*this);
00322                 }
00323                 inline CMetadataVar& CMetadataVar::operator =(const datarecord& datarec)
00324                 {                       
00325                         FIRTEX_ASSERT(( (mt == MT_DATARECORD) || (mt == MT_EMPTY) ),_T("CMetadataVar::operator =(const datarecord& value)"));
00326 
00327                         mt = MT_DATARECORD;
00328                         if(meta.drval.owner && meta.drval.data)
00329                                 delete[] meta.drval.data;
00330                         meta.drval.length = datarec.length;
00331                         meta.drval.data = new byte[datarec.length];
00332                         memcpy(meta.drval.data,datarec.data,datarec.length);
00333                         meta.drval.owner = true;
00334                         return (*this);
00335                 }
00336 
00337                 inline void CMetadataVar::assign(char* value,size_t len,bool bNoCopy)
00338                 {                       
00339                         FIRTEX_ASSERT(( (mt == MT_STR) || (mt == MT_EMPTY) ),_T("CMetadataVar::assign(char* value,size_t len,bool bNoCopy)"));
00340                         mt = MT_STR;
00341                         if(meta.text.strval == NULL)
00342                                 meta.text.strval = new CFXString(value,len,bNoCopy);
00343                         else meta.text.strval->assign(value,len,bNoCopy);
00344                 }
00345                 inline void CMetadataVar::assign(wchar_t* value,size_t len,bool bNoCopy)
00346                 {                       
00347                         FIRTEX_ASSERT(( (mt == MT_WSTR) || (mt == MT_EMPTY) ),_T("CMetadataVar::assign(char* value,size_t len,bool bNoCopy)"));
00348                         mt = MT_WSTR;
00349                         if(meta.text.wstrval == NULL)
00350                                 meta.text.wstrval = new CFXStringW(value,len,bNoCopy);
00351                         else meta.text.wstrval->assign(value,len,bNoCopy);
00352                 }
00353                 inline void CMetadataVar::assign(const char* value)
00354                 {
00355                         FIRTEX_ASSERT(( (mt == MT_STR) || (mt == MT_EMPTY) ),_T("CMetadataVar::assign(const char* value)"));
00356                         mt = MT_STR;
00357                         if(meta.text.strval == NULL)
00358                                 meta.text.strval = new CFXString(value);
00359                         else meta.text.strval->assign(value);
00360                 }
00361                 inline void CMetadataVar::assign(const wchar_t* value)
00362                 {                       
00363                         FIRTEX_ASSERT(( (mt == MT_WSTR) || (mt == MT_EMPTY) ),_T("CMetadataVar::assign(char* value,size_t len,bool bNoCopy)"));
00364                         mt = MT_WSTR;
00365                         if(meta.text.wstrval == NULL)
00366                                 meta.text.wstrval = new CFXStringW(value);
00367                         else meta.text.wstrval->assign(value);
00368                 }
00369 
00370                 inline void CMetadataVar::assign(const datarecord& datarec,bool bNoCopy)
00371                 {
00372                         
00373                         FIRTEX_ASSERT(( (mt == MT_DATARECORD) || (mt == MT_EMPTY) ),_T("CMetadataVar::assign(const datarecord& datarec,bool bNoCopy)"));
00374                         mt = MT_DATARECORD;                     
00375                         meta.drval.length = datarec.length;
00376                         if(bNoCopy)
00377                         {
00378                                 meta.drval.data = datarec.data;                                 
00379                                 meta.drval.owner = false;
00380                         }
00381                         else 
00382                         {
00383                                 meta.drval.data = new byte[datarec.length];
00384                                 memcpy(meta.drval.data,datarec.data,datarec.length);
00385                                 meta.drval.owner = true;
00386                         }
00387                 }
00388                 inline void CMetadataVar::assign(const numbervar& num)
00389                 {
00390                         FIRTEX_ASSERT(( (mt == MT_NUMBER) || (mt == MT_EMPTY) ),_T("CMetadataVar::assign(const numbervar& num)"));
00391                         mt = MT_NUMBER;                 
00392                         meta.numval = num;
00393                 }
00394 
00395                 inline bool CMetadataVar::operator==(const metadata_var& mdvar)
00396                 {
00397                         return (this == &mdvar);
00398                 }
00399                 inline bool CMetadataVar::operator==(const metadata_var* mdvar)
00400                 {
00401                         if(mdvar == NULL)
00402                                 return false;
00403                         if(mt != mdvar->mt)
00404                                 return false;
00405                         switch(mt)
00406                         {
00407                         case MT_EMPTY:
00408                                 return true;                                                    
00409                         case MT_STR:
00410                                 if(meta.text.strval == mdvar->meta.text.strval)
00411                                         return true;
00412                                 if(meta.text.strval== NULL || mdvar->meta.text.strval==NULL)
00413                                         return false;
00414                                 return (*(meta.text.strval)) == (*(mdvar->meta.text.strval));
00415                         case MT_WSTR:
00416                                 if(meta.text.wstrval == mdvar->meta.text.wstrval)
00417                                         return true;
00418                                 if(meta.text.wstrval== NULL || mdvar->meta.text.wstrval==NULL)
00419                                         return false;
00420                                 return (*(meta.text.wstrval)) == (*(mdvar->meta.text.wstrval));
00421                         case MT_NUMBER:
00422                                 return ( ((CNumber)meta.numval) == mdvar->meta.numval);
00423                         default:
00424                                 return false;
00425                         }
00426                 }
00427 
00428                 inline bool CMetadataVar::operator!=(const metadata_var& mdvar)
00429                 {
00430                         return !(this == &mdvar);
00431                 }
00432                 inline bool CMetadataVar::operator!=(const metadata_var* mdvar)
00433                 {
00434                         return !(this == mdvar);
00435                 }
00436 
00437                 inline void CMetadataVar::clear()
00438                 {                       
00439                         if(mt == MT_EMPTY)
00440                                 return ;
00441                         switch(mt)
00442                         {                                               
00443                         case MT_STR:
00444                                 {                                       
00445                                         delete meta.text.strval;
00446                                         break;
00447                                 }                               
00448                         case MT_WSTR:
00449                                 {
00450                                         delete meta.text.wstrval;                                       
00451                                         break;
00452                                 }
00453                         case MT_NUMBER:
00454                                 {                                       
00455                                         break;
00456                                 }
00457                         case MT_DATARECORD:
00458                                 {                       
00459                                         if(meta.drval.owner)
00460                                                 delete[] meta.drval.data;
00461                                         meta.drval.owner = false;
00462                                         meta.drval.data = NULL;
00463                                         meta.drval.length = 0;
00464                                         break;
00465                                 }
00466                         default:
00467                                 break;
00468                         }
00469                         mt = MT_EMPTY;
00470                 }
00471         
00473                 // CMetadata inline functions
00474                 inline CMetadata::CMetadata(void):CMetadataVar()
00475                 {
00476                         Id = -1;
00477                 }
00478                 inline CMetadata::CMetadata(schemaid_t id,const tchar* name,bool bAnalyze,bool bIndex,bool bCompress)
00479                         :Id(id)
00480                         ,Name(name)
00481                 {
00482                         Index.Index = bIndex;
00483                         Index.Analyze = bAnalyze;
00484                         Index.Compress = bCompress;
00485                 }
00486                 inline CMetadata::CMetadata(const tchar* name,const string& value,bool bAnalyze,bool bIndex)
00487                         :CMetadataVar(value)
00488                         ,Name(name)
00489                 {                       
00490                         Id = -1;
00491                         Index.Index = bIndex;
00492                         Index.Analyze = bAnalyze;
00493                         Index.Compress = false;
00494                 }
00495                 inline CMetadata::CMetadata(const tchar* name,const char* value,bool bAnalyze,bool bIndex)
00496                         :CMetadataVar(value)
00497                         ,Name(name)
00498                 {
00499                         Id = -1;
00500                         Index.Index = bIndex;
00501                         Index.Analyze = bAnalyze;
00502                         Index.Compress = false;
00503                 }
00504                 inline CMetadata::CMetadata(const tchar* name,const wchar_t* value,bool bAnalyze,bool bIndex)
00505                         :CMetadataVar(value)
00506                         ,Name(name)
00507                 {
00508                         Id = -1;
00509                         Index.Index = bIndex;
00510                         Index.Analyze = bAnalyze;
00511                         Index.Compress = false;
00512                 }
00513                 inline CMetadata::CMetadata(const tchar* name,char* value,size_t len,bool bNoCopy,bool bAnalyze,bool bIndex)
00514                         :CMetadataVar(value,len,bNoCopy)
00515                         ,Name(name)
00516                 {
00517                         Id = -1;
00518                         Index.Index = bIndex;
00519                         Index.Analyze = bAnalyze;
00520                         Index.Compress = false;
00521                 }
00522                 inline CMetadata::CMetadata(const tchar* name,wchar_t* value,size_t len,bool bNoCopy,bool bAnalyze,bool bIndex)
00523                         :CMetadataVar(value,len,bNoCopy)
00524                         ,Name(name)
00525                 {
00526                         Id = -1;
00527                         Index.Index = bIndex;
00528                         Index.Analyze = bAnalyze;
00529                         Index.Compress = false;
00530                 }
00531                 inline CMetadata::CMetadata(const tchar* name,const str_t& value,bool bNoCopy,bool bAnalyze,bool bIndex)
00532                         :CMetadataVar(value,bNoCopy)
00533                         ,Name(name)
00534                 {
00535                         Id = -1;
00536                         Index.Index = bIndex;
00537                         Index.Analyze = bAnalyze;
00538                         Index.Compress = false;
00539                 }
00540                 inline CMetadata::CMetadata(const tchar* name,const wstr_t& value,bool bNoCopy,bool bAnalyze,bool bIndex)
00541                         :CMetadataVar(value,bNoCopy)
00542                         ,Name(name)
00543                 {
00544                         Id = -1;
00545                         Index.Index = bIndex;
00546                         Index.Analyze = bAnalyze;
00547                         Index.Compress = false;
00548                 }
00549                 inline CMetadata::CMetadata(const tchar* name,const CNumber& number,bool bIndex)
00550                         :CMetadataVar(number)
00551                         ,Name(name)
00552                 {
00553                         Id = -1;
00554                         Index.Index = bIndex;
00555                         Index.Analyze = false;
00556                         Index.Compress = false;
00557                 }
00558                 inline CMetadata::CMetadata(const tchar* name,const numbervar& number,bool bIndex)
00559                         :CMetadataVar(number)
00560                         ,Name(name)
00561                 {
00562                         Id = -1;
00563                         Index.Index = bIndex;
00564                         Index.Analyze = false;
00565                         Index.Compress = false;
00566                 }
00567                 inline CMetadata::CMetadata(const tchar* name,const datarecord& datarec,bool bNoCopy,bool bCompress)
00568                         :CMetadataVar(datarec,bNoCopy)
00569                         ,Name(name)
00570                 {
00571                         Id = -1;
00572                         Index.Index = false;
00573                         Index.Analyze = false;
00574                         Index.Compress = bCompress;
00575                 }
00576                 inline CMetadata::~CMetadata(void)
00577                 {
00578                 }
00579         }
00580 }
00581 
00582 #endif

http://www.firtex.org http://www.sourceforge.net/projects/firtex