97 lines
4.9 KiB
C++
97 lines
4.9 KiB
C++
#ifndef _CINFOTYPE
|
|
#define _CINFOTYPE
|
|
|
|
#include "sitemap.h"
|
|
// system.h is included so generally that it is not explicitly included even though it is required.
|
|
class CHmData;
|
|
class CSubSets;
|
|
|
|
class CInfoType {
|
|
private:
|
|
// used by the copy consturctors
|
|
void CopyCat(const INFOTYPE_TABLES * Src_itTables);
|
|
void CopyTable( const INFOTYPE_TABLES *Src_itTables);
|
|
|
|
public:
|
|
CInfoType(void);
|
|
~CInfoType();
|
|
|
|
// Copy Constructor
|
|
// *********************
|
|
const CInfoType& operator=(const CInfoType& ITSrc); // copy constructor
|
|
const CInfoType& operator=(const CSiteMap& ITSrc);
|
|
#ifdef HHCTRL
|
|
void CopyTo( CHmData * const phmData);
|
|
#endif
|
|
#if 0 // enable for subset filtering
|
|
BOOL IsEntryInCurTypeList(SITEMAP_ENTRY* pSiteMapEntry, CSubSets *pSSs) const;
|
|
SITE_ENTRY_URL* AreTheseInfoTypesDefined(SITEMAP_ENTRY* pSiteMapEntry, CSubSets *pSSs) const;
|
|
#else
|
|
BOOL IsEntryInCurTypeList(SITEMAP_ENTRY* pSiteMapEntry) const;
|
|
SITE_ENTRY_URL* AreTheseInfoTypesDefined(SITEMAP_ENTRY* pSiteMapEntry, UINT types, int offset) const;
|
|
#endif
|
|
SITE_ENTRY_URL* NextUrlEntry(SITE_ENTRY_URL* pUrl) const { return (SITE_ENTRY_URL*) ((PBYTE) pUrl + m_cUrlEntry); }
|
|
|
|
void ReSizeIT(int Size=0);
|
|
|
|
int GetInfoType(PCSTR pszTypeName) const ;//{ return GetITIndex(pszTypeName); }
|
|
PCSTR GetInfoTypeDescription(int pos) const { return m_itTables.m_ptblInfoTypeDescriptions->GetPointer(pos); }
|
|
PCSTR GetInfoTypeName(int pos) const { return m_itTables.m_ptblInfoTypes->GetPointer(pos); }
|
|
int GetITIndex(PCSTR pszString) const { return m_itTables.m_ptblInfoTypes->IsStringInTable( pszString ); }
|
|
int HowManyInfoTypes(void) const { return m_itTables.m_ptblInfoTypes ? m_itTables.m_ptblInfoTypes->CountStrings() : 0; }
|
|
int InfoTypeSize(void) const { return m_itTables.m_cITSize * sizeof(INFOTYPE); }
|
|
BOOL IsDeleted( const int pos) const {return ( *(GetInfoTypeName(pos))==' ' )?TRUE:FALSE;}
|
|
BOOL AnyInfoTypes(const INFOTYPE *pIT) const;
|
|
BOOL IsInACategory( int type ) const;
|
|
|
|
// Exclusive Information Type methods
|
|
int GetFirstExclusive(int=-1, INFOTYPE=1) const;
|
|
int GetNextExclusive(void) const;
|
|
int GetLastExclusive(void) const;
|
|
void AddExclusiveIT(int const type) {AddIT(type, m_itTables.m_pExclusive); }
|
|
void DeleteExclusiveIT(int const type ) {DeleteIT(type, m_itTables.m_pExclusive); }
|
|
BOOL IsExclusive(int const type) const {return m_itTables.m_pExclusive?*(m_itTables.m_pExclusive+(type/32)) & (1<<(type%32)):0;}
|
|
|
|
// Hidden Information Type methods
|
|
int GetFirstHidden(int=-1, INFOTYPE=1) const;
|
|
int GetNextHidden(void) const;
|
|
int GetLastHidden(void) const;
|
|
void AddHiddenIT( int const type ) {AddIT(type, m_itTables.m_pHidden); }
|
|
void DeleteHiddenIT( int const type ) {DeleteIT(type, m_itTables.m_pHidden); }
|
|
BOOL IsHidden(int const type) const {return m_itTables.m_pHidden?*(m_itTables.m_pHidden+(type/32)) & (1<<(type%32)):0;}
|
|
|
|
// Category Methods
|
|
int GetFirstCategoryType(int pos) const ;
|
|
int GetNextITinCategory( void ) const ;
|
|
int GetLastCategoryType(int pos) const ;
|
|
void AddITtoCategory(int pos, int type);
|
|
void DeleteITfromCat(int pos, int type);
|
|
int GetCatPosition(PCSTR psz) const {return m_itTables.m_ptblCategories->IsStringInTable(psz); }
|
|
int HowManyCategories(void) const {return m_itTables.m_ptblCategories ? m_itTables.m_ptblCategories->CountStrings() : 0; }
|
|
PCSTR GetCategoryString(int pos) const { return m_itTables.m_ptblCategories->GetPointer(pos); }
|
|
PCSTR GetCategoryDescription(int pos) const {return m_itTables.m_ptblCatDescription?m_itTables.m_ptblCatDescription->GetPointer(pos):0; }
|
|
BOOL IsITinCategory( int pos, int type) const {return m_itTables.m_aCategories[pos].pInfoType?*(m_itTables.m_aCategories[pos].pInfoType+(type/32)) & (1<<(type%32)):0;}
|
|
BOOL IsCatDeleted( const int pos ) const {return ( *(GetCategoryString(pos))==' ' )?TRUE:FALSE;}
|
|
|
|
// CInfotype members
|
|
// ***********************
|
|
BOOL m_fTypeCopy; // TRUE if following tables are pointers that must not be freed
|
|
INFOTYPE_TABLES m_itTables;
|
|
|
|
INFOTYPE* m_pInfoTypes; // user-specified Information Types
|
|
INFOTYPE* m_pTypicalInfoTypes; // "typical" information types
|
|
|
|
int m_cUrlEntry; // sizeof(SITE_ENTRY_URL) + sizeof(URL) for each additional 32 Information Types
|
|
int m_cInfoTypeOffsets; // number of additional offsets to check
|
|
|
|
|
|
|
|
private:
|
|
BOOL m_fInitialized; // TRUE if IT and categorys read from disk.
|
|
|
|
|
|
};
|
|
|
|
|
|
#endif // _CINFOTYPE
|