/*********************************************************************
Copyright (C) 2001 by
Alexander Berthold, alexander-berthold@web.de.
Hoegestr. 54
79108 Freiburg i. Breisgau
Germany
-- This file is part of cxTokenizer --
"cxTokenizer" is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or any later version.
"cxTokenizer" 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with "cxTokenizer"; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307 USA
---------------------------------------------------------------
If you find any bugs or if you make other corrections/
enhancements, i'd appreciate if you'd let me know about
that. My email is
alexander-berthold@web.de
If you share this code, do not remove this text.
---------------------------------------------------------------
Class: cxTokenizerMapData
Author: Alexander Berthold
Copyright: Alexander Berthold
Date: 2001/06/12
Version: 0.1.16
Purpose: Contains the data of one node in the tree of tokens.
See cxTokenizerMap for more details.
Version history:
- 2001/05/19
Renamed class from 'cpLexxerMapData' to 'cxTokenizerMapData'.
- 2001/06/12
Current source labeled version 0.1.16
*********************************************************************/
// cxTokenizerMapData.h: interface for the cxTokenizerMapData class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_CXTOKENIZERMAPDATA_H__91BAE3D7_529C_42AB_B513_8396B264530D__INCLUDED_)
#define AFX_CXTOKENIZERMAPDATA_H__91BAE3D7_529C_42AB_B513_8396B264530D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class cxTokenizerTokenRule;
class cxTokenizerContext;
class cxTokenizerMapData :
public std::multimap<TCHAR,cxTokenizerMapData*>,
public ctkCheckValid
{
// Construction/Destruction
public:
cxTokenizerMapData();
virtual ~cxTokenizerMapData();
// Attributes
protected:
bool m_fComputed;
cxTokenizerTokenRule* m_pRule; // m_pRule: The rule (if any)
// Operations
public:
#ifdef _DEBUG
virtual bool fCheckValid() const;
static bool fRunDiagnostics();
#else
virtual bool fCheckValid() const { return true; };
#endif
bool fIsLeaf() { return (m_pRule!=NULL); };
cxTokenizerTokenRule* pttrGetRule() const { return m_pRule; };
const cxTokenizerTokenRule* pttrGetRuleConst() const{ return m_pRule; };
cxTokenizerMapData *ptmdInsert(TCHAR tcChar, cxTokenizerTokenRule* pRule);
cxTokenizerMapData *ptmdDoesApply(const cxTokenizerContext* ptcContextInfo, TCHAR tcChar, bool *pfComplete,
int nStartPos, int nCurPos);
void vApplied(cxTokenizerContext* ptcContextInfo, TCHAR tcChar, bool fComplete,
int nStartPos, int nCurPos);
friend class cxTokenizerMap;
};
#endif // !defined(AFX_CXTOKENIZERMAPDATA_H__91BAE3D7_529C_42AB_B513_8396B264530D__INCLUDED_)