fixed: as we have insert_page ezc function now

we cannot delete ezc patterns when PatternCacher::GetPattern() method is called
       because we can delete a pattern which is in use
       now deleting is performed at the end of a request


git-svn-id: svn://ttmath.org/publicrep/winix/trunk@751 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2011-07-15 02:09:02 +00:00
parent 1812a2e9ad
commit c37c1ff812
9 changed files with 108 additions and 54 deletions

View File

@@ -2,7 +2,7 @@
* This file is a part of Winix
* and is not publicly distributed
*
* Copyright (c) 2008-2010, Tomasz Sowa
* Copyright (c) 2008-2011, Tomasz Sowa
* All rights reserved.
*
*/
@@ -23,6 +23,38 @@
class PatternCacher
{
public:
PatternCacher();
// setting when we should delete patterns
// we are deleting when we have more (or equal) patterns than 'when_delete'
// and then we are deleting 'how_many_del' patterns
void SetWhenDelete(size_t when_delete, size_t how_many_del);
void SetEzcFunctions(TemplatesFunctions::EzcFun * fun);
// returning a pattern corresponding to the 'item'
Ezc::Pattern * GetPattern(const Item & item);
// updating the pattern for the item
// if there is no such a pattern the method does nothing
void UpdatePattern(const Item & item);
// deleting the pattern for the item
// if there is no such a pattern the method does nothing
void DeletePattern(const Item & item);
// deleting some rarely used patters
// call it at the end of a request (or at the beginning)
void DeleteOldPatterns();
// size of the current cache in use
size_t Size();
private:
struct PatternUsed
{
Ezc::Pattern pattern;
@@ -51,7 +83,6 @@ class PatternCacher
void CreatePattern(const Item & item, Ezc::Pattern & pattern);
void AddIndexes(const Item & item, size_t pattern_index);
Ezc::Pattern * AddPattern(const Item & item);
void CheckTableSize();
// the size of pattern_tab when we are deleting some items
@@ -63,22 +94,6 @@ class PatternCacher
// can be null (not set directly)
TemplatesFunctions::EzcFun * ezc_fun;
public:
PatternCacher();
void SetEzcFunctions(TemplatesFunctions::EzcFun * fun);
// returning a pattern corresponding to the 'item'
Ezc::Pattern * GetPattern(const Item & item);
// updating the pattern for the item
// if there is no such a pattern the method does nothing
void UpdatePattern(const Item & item);
// deleting the pattern for the item
// if there is no such a pattern the method does nothing
void DeletePattern(const Item & item);
};
#endif