1 Commits

Author SHA1 Message Date
tomasz.sowa b7952104c0 bump version to 0.9.6 2026-06-21 01:49:58 +02:00
16 changed files with 721 additions and 799 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
Copyright (c) 2007-2022, Tomasz Sowa
Copyright (c) 2007-2026, Tomasz Sowa
All rights reserved.
Redistribution and use in source and binary forms, with or without
+4 -12
View File
@@ -3,34 +3,26 @@
./blocks.o: ../../pikotools/src/utf8/utf8.h
./blocks.o: blocks.h
./blocks.o: cache.h
./blocks.o: env.h
./blocks.o: functions.h
./blocks.o: funinfo.h
./blocks.o: item.h
./blocks.o: objects.h
./cache.o: ../../pikotools/src/textstream/stream.h
./cache.o: ../../pikotools/src/utf8/utf8.h
./cache.o: blocks.h
./cache.o: cache.h
./cache.o: env.h
./cache.o: functions.h
./cache.o: funinfo.h
./cache.o: item.h
./cache.o: objects.h
./functions.o: ../../pikotools/src/textstream/stream.h
./functions.o: ../../pikotools/src/utf8/utf8.h
./functions.o: env.h
./functions.o: functions.h
./functions.o: item.h
./item.o: item.h
./models.o: models.h
./objects.o: ../../pikotools/src/textstream/stream.h
./objects.o: ../../pikotools/src/utf8/utf8.h
./objects.o: objects.h
./pattern.o: ../../pikotools/src/textstream/stream.h
./pattern.o: ../../pikotools/src/utf8/utf8.h
./pattern.o: blocks.h
./pattern.o: cache.h
./pattern.o: env.h
./pattern.o: functions.h
./pattern.o: funinfo.h
./pattern.o: item.h
./pattern.o: objects.h
./pattern.o: pattern.h
@@ -53,8 +45,8 @@
./patternparser.o: ../../pikotools/src/utf8/utf8.h
./patternparser.o: blocks.h
./patternparser.o: cache.h
./patternparser.o: env.h
./patternparser.o: functions.h
./patternparser.o: funinfo.h
./patternparser.o: item.h
./patternparser.o: objects.h
./patternparser.o: pattern.h
-19
View File
@@ -85,24 +85,6 @@ void Blocks::ClearCache()
void Blocks::CacheObjects(Objects & obj)
{
BlocksTable::iterator i = blocks_tab.begin();
for( ; i != blocks_tab.end() ; ++i)
Cache(obj, i->second);
}
void Blocks::CacheFunctions(Functions & fun)
{
BlocksTable::iterator i = blocks_tab.begin();
for( ; i != blocks_tab.end() ; ++i)
Cache(fun, i->second);
}
void Blocks::CacheBlocks(Blocks & blocks)
{
BlocksTable::iterator i = blocks_tab.begin();
@@ -113,5 +95,4 @@ void Blocks::CacheBlocks(Blocks & blocks)
} // namespace
+23 -3
View File
@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2014-2024, Tomasz Sowa
* Copyright (c) 2014-2015, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,8 +62,8 @@ public:
size_t Size() const;
void Clear();
void CacheObjects(Objects & obj);
void CacheFunctions(Functions & fun);
template<class StreamType> void CacheObjects(Objects<StreamType> & obj);
template<class StreamType> void CacheFunctions(Functions<StreamType> & fun);
void CacheBlocks(Blocks & blocks);
void ClearCache();
@@ -75,6 +75,26 @@ private:
};
template<class StreamType>
void Blocks::CacheObjects(Objects<StreamType> & obj)
{
BlocksTable::iterator i = blocks_tab.begin();
for( ; i != blocks_tab.end() ; ++i)
Cache(obj, i->second);
}
template<class StreamType>
void Blocks::CacheFunctions(Functions<StreamType> & fun)
{
BlocksTable::iterator i = blocks_tab.begin();
for( ; i != blocks_tab.end() ; ++i)
Cache(fun, i->second);
}
} // namespace
-51
View File
@@ -58,32 +58,6 @@ void Cache(Blocks & blocks, Item::Function & function)
}
void Cache(Functions & fun, Item::Function & function)
{
function.fun_cache = 0;
if( !function.name.empty() && function.arg < 0 )
{
typename Functions::Iterator i = fun.Find(function.name);
if( i != fun.End() )
function.fun_cache = &i->second;
}
for(size_t i=0 ; i < function.parameters.size() ; ++i)
Cache(fun, *function.parameters[i]);
}
void Cache(Functions & fun, Item & item)
{
Cache(fun, item.function);
for(size_t i=0; i < item.item_tab.size() ; ++i)
Cache(fun, *item.item_tab[i]);
}
void Cache(Blocks & blocks, Item & item)
{
@@ -94,31 +68,6 @@ void Cache(Blocks & blocks, Item & item)
}
void Cache(Objects & objects, Item::Function & function)
{
function.base_obj = 0;
function.method_index = -1;
if( !function.name.empty() && function.arg < 0 )
{
typename Objects::Iterator i = objects.Find(function.name, function.method_index);
if( i != objects.End() )
function.base_obj = *i;
}
for(size_t i=0 ; i < function.parameters.size() ; ++i)
Cache(objects, *function.parameters[i]);
}
void Cache(Objects & objects, Item & item)
{
Cache(objects, item.function);
for(size_t i=0; i < item.item_tab.size() ; ++i)
Cache(objects, *item.item_tab[i]);
}
+65 -6
View File
@@ -4,8 +4,8 @@
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2014-2024, Tomasz Sowa
/*
* Copyright (c) 2014-2015, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -48,11 +48,70 @@ namespace Ezc
class Blocks;
void Cache(Functions & fun, Item::Function & function);
void Cache(Functions & fun, Item & item);
template<class StreamType>
void Cache(Functions<StreamType> & fun, Item::Function & function)
{
function.fun_cache = 0;
if( !function.name.empty() && function.arg < 0 )
{
typename Functions<StreamType>::Iterator i = fun.Find(function.name);
if( i != fun.End() )
function.fun_cache = &i->second;
}
for(size_t i=0 ; i < function.parameters.size() ; ++i)
Cache(fun, *function.parameters[i]);
}
template<class StreamType>
void Cache(Functions<StreamType> & fun, Item & item)
{
Cache(fun, item.function);
for(size_t i=0; i < item.item_tab.size() ; ++i)
Cache(fun, *item.item_tab[i]);
}
void Cache(Blocks & blocks, Item & item);
void Cache(Objects & objects, Item::Function & function);
void Cache(Objects & objects, Item & item);
template<class StreamType>
void Cache(Objects<StreamType> & objects, Item::Function & function)
{
function.base_obj = 0;
function.method_index = -1;
if( !function.name.empty() && function.arg < 0 )
{
typename Objects<StreamType>::Iterator i = objects.Find(function.name, function.method_index);
if( i != objects.End() )
function.base_obj = *i;
}
for(size_t i=0 ; i < function.parameters.size() ; ++i)
Cache(objects, *function.parameters[i]);
}
template<class StreamType>
void Cache(Objects<StreamType> & objects, Item & item)
{
Cache(objects, item.function);
for(size_t i=0; i < item.item_tab.size() ; ++i)
Cache(objects, *item.item_tab[i]);
}
} // namespace Ezc
-109
View File
@@ -1,109 +0,0 @@
/*
* This file is a part of EZC -- Easy templating in C++ library
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2024, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "functions.h"
namespace Ezc
{
void Functions::Insert(const char * key, UserFunction ufunction)
{
pt::utf8_to_wide(key, temp_key);
functions_tab[temp_key] = ufunction;
temp_key.clear();
}
void Functions::Insert(const std::string & key, UserFunction ufunction)
{
Insert(key.c_str(), ufunction);
}
void Functions::Insert(const wchar_t * key, UserFunction ufunction)
{
temp_key = key;
functions_tab[temp_key] = ufunction;
temp_key.clear();
}
void Functions::Insert(const std::wstring & key, UserFunction ufunction)
{
functions_tab[key] = ufunction;
}
typename Functions::Iterator Functions::Find(const std::wstring & key)
{
return functions_tab.find(key);
}
void Functions::Clear()
{
functions_tab.clear();
}
typename Functions::Iterator Functions::Begin()
{
return functions_tab.begin();
}
typename Functions::Iterator Functions::End()
{
return functions_tab.end();
}
size_t Functions::Size() const
{
return functions_tab.size();
}
} // namespace Ezc
+83 -4
View File
@@ -4,8 +4,8 @@
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2007-2024, Tomasz Sowa
/*
* Copyright (c) 2007-2015, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -37,7 +37,7 @@
#include <map>
#include "utf8/utf8.h"
#include "env.h"
#include "funinfo.h"
@@ -48,11 +48,12 @@ namespace Ezc
// functions or variables
template<class StreamType>
class Functions
{
public:
typedef void (*UserFunction)(Env &);
typedef void (*UserFunction)(FunInfo<StreamType> &);
typedef std::map<std::wstring, UserFunction> FunctionsTable;
typedef typename FunctionsTable::iterator Iterator;
@@ -78,6 +79,84 @@ private:
template<class StreamType>
void Functions<StreamType>::Insert(const char * key, UserFunction ufunction)
{
pt::utf8_to_wide(key, temp_key);
functions_tab[temp_key] = ufunction;
temp_key.clear();
}
template<class StreamType>
void Functions<StreamType>::Insert(const std::string & key, UserFunction ufunction)
{
Insert(key.c_str(), ufunction);
}
template<class StreamType>
void Functions<StreamType>::Insert(const wchar_t * key, UserFunction ufunction)
{
temp_key = key;
functions_tab[temp_key] = ufunction;
temp_key.clear();
}
template<class StreamType>
void Functions<StreamType>::Insert(const std::wstring & key, UserFunction ufunction)
{
functions_tab[key] = ufunction;
}
template<class StreamType>
typename Functions<StreamType>::Iterator Functions<StreamType>::Find(const std::wstring & key)
{
return functions_tab.find(key);
}
template<class StreamType>
void Functions<StreamType>::Clear()
{
functions_tab.clear();
}
template<class StreamType>
typename Functions<StreamType>::Iterator Functions<StreamType>::Begin()
{
return functions_tab.begin();
}
template<class StreamType>
typename Functions<StreamType>::Iterator Functions<StreamType>::End()
{
return functions_tab.end();
}
template<class StreamType>
size_t Functions<StreamType>::Size() const
{
return functions_tab.size();
}
} // namespace Ezc
+10 -10
View File
@@ -4,8 +4,8 @@
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2007-2024, Tomasz Sowa
/*
* Copyright (c) 2007-2023, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -33,13 +33,12 @@
*/
#ifndef headerfile_ezc_env
#define headerfile_ezc_env
#ifndef headerfile_ezc_funinfo
#define headerfile_ezc_funinfo
#include <vector>
#include <map>
#include "item.h"
#include "textstream/stream.h"
@@ -144,11 +143,12 @@ struct Stack
// !! IMPROVE ME
// the name is bad
// may it should be called Env (environment) or FunEnv
struct Env
template<class StreamType>
struct FunInfo
{
// a result consists of a string and a boolean value
// output stream
pt::Stream & out;
StreamType & out;
// return value from a user's function (default false if not set directly by the function)
bool res;
@@ -163,7 +163,7 @@ struct Env
// an input stream used in [filter] statement
// if there is other statement than [filter] then this is an empty stream
const pt::Stream & in;
const StreamType & in;
// indicates that this function is from [for ...] statement
bool is_for;
@@ -207,10 +207,10 @@ struct Env
// arguments: output_stream, table_of_parameters, the_first_parameter
Env(pt::Stream & o,
FunInfo(StreamType & o,
std::vector<Var> & pars,
const std::wstring & first_par,
const pt::Stream & input_stream,
const StreamType & input_stream,
Stack & s,
const Item & item_) : out(o), params(pars), par(first_par), in(input_stream), stack(s), item(item_)
{
+417 -438
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2021-2024, Tomasz Sowa
* Copyright (c) 2021, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,7 +38,7 @@
#ifdef EZC_HAS_MORM_LIBRARY
#include "wrapper.h"
#include "env.h"
#include "funinfo.h"
#include "space/space.h"
-104
View File
@@ -1,104 +0,0 @@
/*
* This file is a part of EZC -- Easy templating in C++ library
* and is distributed under the 2-Clause BSD licence.
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2024, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "objects.h"
namespace Ezc
{
typename Objects::Iterator Objects::Find(const std::wstring & key, int & method_index)
{
Iterator i = obj_tab.begin();
method_index = -1;
for( ; i != obj_tab.end() ; ++i)
{
int index = (*i)->FindFun(key);
if( index != -1 )
{
method_index = index;
return i;
}
}
return obj_tab.end();
}
void Objects::Insert(BaseObj * base_fun)
{
obj_tab.push_back(base_fun);
}
void Objects::Insert(BaseObj & base_fun)
{
obj_tab.push_back(&base_fun);
}
typename Objects::Iterator Objects::Begin()
{
return obj_tab.begin();
}
typename Objects::Iterator Objects::End()
{
return obj_tab.end();
}
size_t Objects::Size() const
{
return obj_tab.size();
}
void Objects::Clear()
{
obj_tab.clear();
}
} // namespace Ezc
+74 -6
View File
@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2015-2024, Tomasz Sowa
* Copyright (c) 2015, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,7 +38,6 @@
#include <vector>
#include <string>
#include "utf8/utf8.h"
#include "env.h"
@@ -47,6 +46,7 @@ namespace Ezc
{
template<class StreamType>
class BaseObj
{
public:
@@ -69,7 +69,7 @@ public:
/*
*
*/
virtual void CallFun(int fun_index, Env &) = 0;
virtual void CallFun(int fun_index, FunInfo<StreamType> &) = 0;
/*
@@ -203,15 +203,16 @@ private:
template<class StreamType>
class Objects
{
public:
typedef std::vector<BaseObj*> ObjectsTable;
typedef std::vector<BaseObj<StreamType> * > ObjectsTable;
typedef typename ObjectsTable::iterator Iterator;
void Insert(BaseObj * base_fun);
void Insert(BaseObj & base_fun);
void Insert(BaseObj<StreamType> * base_fun);
void Insert(BaseObj<StreamType> & base_fun);
Iterator Begin();
Iterator End();
@@ -228,6 +229,73 @@ private:
template<class StreamType>
typename Objects<StreamType>::Iterator Objects<StreamType>::Find(const std::wstring & key, int & method_index)
{
Iterator i = obj_tab.begin();
method_index = -1;
for( ; i != obj_tab.end() ; ++i)
{
int index = (*i)->FindFun(key);
if( index != -1 )
{
method_index = index;
return i;
}
}
return obj_tab.end();
}
template<class StreamType>
void Objects<StreamType>::Insert(BaseObj<StreamType> * base_fun)
{
obj_tab.push_back(base_fun);
}
template<class StreamType>
void Objects<StreamType>::Insert(BaseObj<StreamType> & base_fun)
{
obj_tab.push_back(&base_fun);
}
template<class StreamType>
typename Objects<StreamType>::Iterator Objects<StreamType>::Begin()
{
return obj_tab.begin();
}
template<class StreamType>
typename Objects<StreamType>::Iterator Objects<StreamType>::End()
{
return obj_tab.end();
}
template<class StreamType>
size_t Objects<StreamType>::Size() const
{
return obj_tab.size();
}
template<class StreamType>
void Objects<StreamType>::Clear()
{
obj_tab.clear();
}
} // namespace Ezc
+31 -25
View File
@@ -5,7 +5,7 @@
*/
/*
* Copyright (c) 2015-2024, Tomasz Sowa
* Copyright (c) 2015-2021, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -35,7 +35,6 @@
#ifndef headerfile_ezc_outstreams
#define headerfile_ezc_outstreams
#include "textstream/stream.h"
#include <string>
#include <vector>
#include <map>
@@ -45,17 +44,18 @@ namespace Ezc
{
template<class StreamType, bool is_pikotools_stream = false>
class OutStreams
{
public:
typedef std::map<std::wstring, pt::Stream*> StreamsMap;
typedef std::vector<pt::Stream*> StreamsTab;
typedef std::map<std::wstring, StreamType*> StreamsMap;
typedef std::vector<StreamType*> StreamsTab;
StreamsMap streams_map;
StreamsTab streams_tab;
void ResizeTab(pt::Stream & stream_type, size_t len);
void ResizeTab(size_t len);
void ClearMap();
void ClearTab();
@@ -68,35 +68,40 @@ public:
};
OutStreams::~OutStreams()
template<class StreamType, bool is_pikotools_stream>
OutStreams<StreamType, is_pikotools_stream>::~OutStreams()
{
ClearTab();
}
OutStreams::OutStreams()
template<class StreamType, bool is_pikotools_stream>
OutStreams<StreamType, is_pikotools_stream>::OutStreams()
{
}
OutStreams::OutStreams(const OutStreams & o)
template<class StreamType, bool is_pikotools_stream>
OutStreams<StreamType, is_pikotools_stream>::OutStreams(const OutStreams<StreamType, is_pikotools_stream> & o)
{
// we do not copy streams but creating new ones
//ResizeTab(o.streams_tab.size());
ResizeTab(o.streams_tab.size());
}
OutStreams & OutStreams::operator=(const OutStreams & o)
template<class StreamType, bool is_pikotools_stream>
OutStreams<StreamType, is_pikotools_stream> & OutStreams<StreamType, is_pikotools_stream>::operator=(const OutStreams<StreamType, is_pikotools_stream> & o)
{
// we do not copy streams but creating new ones
streams_map.clear();
//ResizeTab(o.streams_tab.size());
ResizeTab(o.streams_tab.size());
return *this;
}
void OutStreams::ClearTab()
template<class StreamType, bool is_pikotools_stream>
void OutStreams<StreamType, is_pikotools_stream>::ClearTab()
{
for(size_t i=0 ; i<streams_tab.size() ; ++i)
delete streams_tab[i];
@@ -106,7 +111,8 @@ void OutStreams::ClearTab()
}
void OutStreams::ResizeTab(pt::Stream & stream_type, size_t len)
template<class StreamType, bool is_pikotools_stream>
void OutStreams<StreamType, is_pikotools_stream>::ResizeTab(size_t len)
{
if( streams_tab.size() != len )
{
@@ -116,7 +122,7 @@ void OutStreams::ResizeTab(pt::Stream & stream_type, size_t len)
streams_tab.resize(len);
for( ; i<streams_tab.size() ; ++i)
streams_tab[i] = stream_type.new_empty();
streams_tab[i] = new StreamType();
}
else
{
@@ -131,23 +137,23 @@ void OutStreams::ResizeTab(pt::Stream & stream_type, size_t len)
}
void OutStreams::ClearMap()
template<class StreamType, bool is_pikotools_stream>
void OutStreams<StreamType, is_pikotools_stream>::ClearMap()
{
typename StreamsMap::iterator i;
for(i=streams_map.begin() ; i != streams_map.end() ; ++i)
{
pt::Stream & str = *(i->second);
str.clear();
StreamType & str = *(i->second);
// if constexpr(is_pikotools_stream)
// {
// str.clear();
// }
// else
// {
// str.str(L"");
// }
if constexpr(is_pikotools_stream)
{
str.clear();
}
else
{
str.str(L"");
}
}
streams_map.clear();
+8 -6
View File
@@ -4,8 +4,8 @@
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2007-2024, Tomasz Sowa
/*
* Copyright (c) 2007-2015, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -56,9 +56,9 @@ public:
void Clear();
void CacheFunctions(Functions & fun);
template<class StreamType> void CacheFunctions(Functions<StreamType> & fun);
void CacheBlocks(Blocks & blocks);
void CacheObjects(Objects & obj);
template<class StreamType> void CacheObjects(Objects<StreamType> & obj);
void ClearCache();
@@ -69,13 +69,15 @@ public:
void Pattern::CacheFunctions(Functions & fun)
template<class StreamType>
void Pattern::CacheFunctions(Functions<StreamType> & fun)
{
Cache(fun, item_root);
}
void Pattern::CacheObjects(Objects & obj)
template<class StreamType>
void Pattern::CacheObjects(Objects<StreamType> & obj)
{
Cache(obj, item_root);
}
+3 -3
View File
@@ -4,8 +4,8 @@
* Author: Tomasz Sowa <t.sowa@ttmath.org>
*/
/*
* Copyright (c) 2022, Tomasz Sowa
/*
* Copyright (c) 2022-2026, Tomasz Sowa
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -38,7 +38,7 @@
#define EZC_VERSION_MAJOR 0
#define EZC_VERSION_MINOR 9
#define EZC_VERSION_PATCH 5
#define EZC_VERSION_PATCH 6
#endif