template FunInfo<> renamed to Env<>
This commit is contained in:
parent
e826ba34ae
commit
09beafeab7
|
@ -3,7 +3,7 @@
|
||||||
blocks.o: blocks.h item.h cache.h functions.h ../../pikotools/src/utf8/utf8.h
|
blocks.o: blocks.h item.h cache.h functions.h ../../pikotools/src/utf8/utf8.h
|
||||||
blocks.o: ../../pikotools/src/textstream/stream.h
|
blocks.o: ../../pikotools/src/textstream/stream.h
|
||||||
blocks.o: ../../pikotools/src/utf8/utf8_templates.h
|
blocks.o: ../../pikotools/src/utf8/utf8_templates.h
|
||||||
blocks.o: ../../pikotools/src/utf8/utf8_private.h funinfo.h var.h
|
blocks.o: ../../pikotools/src/utf8/utf8_private.h env.h var.h
|
||||||
blocks.o: ../../pikotools/src/date/date.h
|
blocks.o: ../../pikotools/src/date/date.h
|
||||||
blocks.o: ../../pikotools/src/convert/inttostr.h
|
blocks.o: ../../pikotools/src/convert/inttostr.h
|
||||||
blocks.o: ../../pikotools/src/textstream/textstream.h
|
blocks.o: ../../pikotools/src/textstream/textstream.h
|
||||||
|
@ -15,7 +15,7 @@ blocks.o: ../../pikotools/src/textstream/types.h objects.h
|
||||||
cache.o: cache.h item.h functions.h ../../pikotools/src/utf8/utf8.h
|
cache.o: cache.h item.h functions.h ../../pikotools/src/utf8/utf8.h
|
||||||
cache.o: ../../pikotools/src/textstream/stream.h
|
cache.o: ../../pikotools/src/textstream/stream.h
|
||||||
cache.o: ../../pikotools/src/utf8/utf8_templates.h
|
cache.o: ../../pikotools/src/utf8/utf8_templates.h
|
||||||
cache.o: ../../pikotools/src/utf8/utf8_private.h funinfo.h var.h
|
cache.o: ../../pikotools/src/utf8/utf8_private.h env.h var.h
|
||||||
cache.o: ../../pikotools/src/date/date.h
|
cache.o: ../../pikotools/src/date/date.h
|
||||||
cache.o: ../../pikotools/src/convert/inttostr.h
|
cache.o: ../../pikotools/src/convert/inttostr.h
|
||||||
cache.o: ../../pikotools/src/textstream/textstream.h
|
cache.o: ../../pikotools/src/textstream/textstream.h
|
||||||
|
@ -30,7 +30,7 @@ pattern.o: pattern.h item.h cache.h functions.h
|
||||||
pattern.o: ../../pikotools/src/utf8/utf8.h
|
pattern.o: ../../pikotools/src/utf8/utf8.h
|
||||||
pattern.o: ../../pikotools/src/textstream/stream.h
|
pattern.o: ../../pikotools/src/textstream/stream.h
|
||||||
pattern.o: ../../pikotools/src/utf8/utf8_templates.h
|
pattern.o: ../../pikotools/src/utf8/utf8_templates.h
|
||||||
pattern.o: ../../pikotools/src/utf8/utf8_private.h funinfo.h var.h
|
pattern.o: ../../pikotools/src/utf8/utf8_private.h env.h var.h
|
||||||
pattern.o: ../../pikotools/src/date/date.h
|
pattern.o: ../../pikotools/src/date/date.h
|
||||||
pattern.o: ../../pikotools/src/convert/inttostr.h
|
pattern.o: ../../pikotools/src/convert/inttostr.h
|
||||||
pattern.o: ../../pikotools/src/textstream/textstream.h
|
pattern.o: ../../pikotools/src/textstream/textstream.h
|
||||||
|
@ -43,7 +43,7 @@ patternparser.o: patternparser.h blocks.h item.h cache.h functions.h
|
||||||
patternparser.o: ../../pikotools/src/utf8/utf8.h
|
patternparser.o: ../../pikotools/src/utf8/utf8.h
|
||||||
patternparser.o: ../../pikotools/src/textstream/stream.h
|
patternparser.o: ../../pikotools/src/textstream/stream.h
|
||||||
patternparser.o: ../../pikotools/src/utf8/utf8_templates.h
|
patternparser.o: ../../pikotools/src/utf8/utf8_templates.h
|
||||||
patternparser.o: ../../pikotools/src/utf8/utf8_private.h funinfo.h var.h
|
patternparser.o: ../../pikotools/src/utf8/utf8_private.h env.h var.h
|
||||||
patternparser.o: ../../pikotools/src/date/date.h
|
patternparser.o: ../../pikotools/src/date/date.h
|
||||||
patternparser.o: ../../pikotools/src/convert/inttostr.h
|
patternparser.o: ../../pikotools/src/convert/inttostr.h
|
||||||
patternparser.o: ../../pikotools/src/textstream/textstream.h
|
patternparser.o: ../../pikotools/src/textstream/textstream.h
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007-2016, Tomasz Sowa
|
* Copyright (c) 2007-2021, Tomasz Sowa
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -36,8 +36,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef headerfile_ezc_funinfo
|
#ifndef headerfile_ezc_env
|
||||||
#define headerfile_ezc_funinfo
|
#define headerfile_ezc_env
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
|
@ -128,7 +128,7 @@ struct Stack
|
||||||
// the name is bad
|
// the name is bad
|
||||||
// may it should be called Env (environment) or FunEnv
|
// may it should be called Env (environment) or FunEnv
|
||||||
template<class StreamType>
|
template<class StreamType>
|
||||||
struct FunInfo
|
struct Env
|
||||||
{
|
{
|
||||||
// a result consists of a string and a boolean value
|
// a result consists of a string and a boolean value
|
||||||
// output stream
|
// output stream
|
||||||
|
@ -191,17 +191,17 @@ struct FunInfo
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
FunInfo(Var & result,
|
Env(Var & result,
|
||||||
std::vector<Var> & pars,
|
std::vector<Var> & pars,
|
||||||
const StreamType & input_stream,
|
const StreamType & input_stream,
|
||||||
Stack & s,
|
Stack & s,
|
||||||
const Item & item_) : out(result.stream), res(result), params(pars), in(input_stream), stack(s), item(item_)
|
const Item & item_) : out(result.stream), res(result), params(pars), in(input_stream), stack(s), item(item_)
|
||||||
{
|
{
|
||||||
Clear();
|
clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Clear()
|
void clear()
|
||||||
{
|
{
|
||||||
is_for = false;
|
is_for = false;
|
||||||
is_if = false;
|
is_if = false;
|
||||||
|
@ -214,70 +214,6 @@ struct FunInfo
|
||||||
stack_index = 0;
|
stack_index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* CHECK ME can it be done only for [for] statements?
|
|
||||||
*
|
|
||||||
* can return a null pointer if there is no such an item on the stack
|
|
||||||
*
|
|
||||||
* add a function with const wchar_t *
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
Stack * FindLastFor(const std::wstring & name)
|
|
||||||
{
|
|
||||||
for(size_t i = stack_index ; i > 0 ; --i)
|
|
||||||
{
|
|
||||||
if( stack_tab[i-1].is_for && stack_tab[i-1].item->has_function )
|
|
||||||
{
|
|
||||||
if( stack_tab[i-1].item->function.name == name )
|
|
||||||
{
|
|
||||||
return &stack_tab[i-1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
Stack * FindLastFor(const std::wstring & name, const std::wstring & postfix)
|
|
||||||
{
|
|
||||||
for(size_t i = stack_index ; i > 0 ; --i)
|
|
||||||
{
|
|
||||||
if( stack_tab[i-1].is_for && stack_tab[i-1].item->has_function )
|
|
||||||
{
|
|
||||||
if( stack_tab[i-1].item->function.name == name && stack_tab[i-1].item->function.postfix == postfix )
|
|
||||||
{
|
|
||||||
return &stack_tab[i-1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
template<class FunUserObject>
|
|
||||||
FunUserObject * FindUserObject(const std::wstring & function_name, Stack ** ezc_stack = 0)
|
|
||||||
{
|
|
||||||
Stack * stack;
|
|
||||||
|
|
||||||
if( item.has_function && item.function.is_function )
|
|
||||||
stack = FindLastFor(function_name, item.function.postfix);
|
|
||||||
else
|
|
||||||
stack = FindLastFor(function_name);
|
|
||||||
|
|
||||||
if( ezc_stack )
|
|
||||||
*ezc_stack = stack;
|
|
||||||
|
|
||||||
if( stack && stack->fun_data )
|
|
||||||
return dynamic_cast<FunUserObject*>(stack->fun_data);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2007-2015, Tomasz Sowa
|
* Copyright (c) 2007-2021, Tomasz Sowa
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "utf8/utf8.h"
|
#include "utf8/utf8.h"
|
||||||
#include "funinfo.h"
|
#include "env.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class Functions
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef void (*UserFunction)(FunInfo<StreamType> &);
|
typedef void (*UserFunction)(Env<StreamType> &);
|
||||||
typedef std::map<std::wstring, UserFunction> FunctionsTable;
|
typedef std::map<std::wstring, UserFunction> FunctionsTable;
|
||||||
typedef typename FunctionsTable::iterator Iterator;
|
typedef typename FunctionsTable::iterator Iterator;
|
||||||
|
|
||||||
|
|
|
@ -301,9 +301,9 @@ private:
|
||||||
bool FindInVariables(const std::wstring & name, FindHelper & find_helper);
|
bool FindInVariables(const std::wstring & name, FindHelper & find_helper);
|
||||||
bool Find(Item::Function & item_fun, FindHelper & find_helper);
|
bool Find(Item::Function & item_fun, FindHelper & find_helper);
|
||||||
|
|
||||||
void PrepareEnvStruct(FunInfo<StreamType> & info);
|
void PrepareEnvStruct(Env<StreamType> & info);
|
||||||
|
|
||||||
void CallFunction(typename Functions<StreamType>::UserFunction & function, FunInfo<StreamType> & info);
|
void CallFunction(typename Functions<StreamType>::UserFunction & function, Env<StreamType> & info);
|
||||||
|
|
||||||
void CallFunction(typename Functions<StreamType>::UserFunction & function,
|
void CallFunction(typename Functions<StreamType>::UserFunction & function,
|
||||||
Var & result,
|
Var & result,
|
||||||
|
@ -314,7 +314,7 @@ private:
|
||||||
Var & result,
|
Var & result,
|
||||||
std::vector<Var> & parameters);
|
std::vector<Var> & parameters);
|
||||||
|
|
||||||
void CallObject(BaseObj<StreamType> & base_obj, int method_index, FunInfo<StreamType> & info);
|
void CallObject(BaseObj<StreamType> & base_obj, int method_index, Env<StreamType> & info);
|
||||||
|
|
||||||
void PrintDate(pt::Date * date, Var & result, std::vector<Var> & parameters);
|
void PrintDate(pt::Date * date, Var & result, std::vector<Var> & parameters);
|
||||||
bool PrintDatePart(pt::Date * date, const std::wstring & field, Var & result, std::vector<Var> & parameters);
|
bool PrintDatePart(pt::Date * date, const std::wstring & field, Var & result, std::vector<Var> & parameters);
|
||||||
|
@ -1142,9 +1142,9 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::Find(Item
|
||||||
|
|
||||||
|
|
||||||
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
||||||
void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::PrepareEnvStruct(FunInfo<StreamType> & info)
|
void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::PrepareEnvStruct(Env<StreamType> & info)
|
||||||
{
|
{
|
||||||
info.Clear();
|
info.clear();
|
||||||
|
|
||||||
info.is_for = is_generating_for;
|
info.is_for = is_generating_for;
|
||||||
info.is_if = is_generating_if;
|
info.is_if = is_generating_if;
|
||||||
|
@ -1160,7 +1160,7 @@ void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::PrepareEn
|
||||||
|
|
||||||
|
|
||||||
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
||||||
void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallFunction(typename Functions<StreamType>::UserFunction & function, FunInfo<StreamType> & info)
|
void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallFunction(typename Functions<StreamType>::UserFunction & function, Env<StreamType> & info)
|
||||||
{
|
{
|
||||||
PrepareEnvStruct(info);
|
PrepareEnvStruct(info);
|
||||||
(function)(info);
|
(function)(info);
|
||||||
|
@ -1179,12 +1179,12 @@ void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallFunct
|
||||||
{
|
{
|
||||||
if( parameters.empty() )
|
if( parameters.empty() )
|
||||||
{
|
{
|
||||||
FunInfo<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
Env<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
||||||
CallFunction(function, info);
|
CallFunction(function, info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FunInfo<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
Env<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
||||||
CallFunction(function, info);
|
CallFunction(function, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1194,7 +1194,7 @@ void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallFunct
|
||||||
|
|
||||||
|
|
||||||
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
template<class StreamType, bool is_pikotools_stream, bool is_autoescape_stream>
|
||||||
void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallObject(BaseObj<StreamType> & base_obj, int method_index, FunInfo<StreamType> & info)
|
void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallObject(BaseObj<StreamType> & base_obj, int method_index, Env<StreamType> & info)
|
||||||
{
|
{
|
||||||
PrepareEnvStruct(info);
|
PrepareEnvStruct(info);
|
||||||
base_obj.CallFun(method_index, info);
|
base_obj.CallFun(method_index, info);
|
||||||
|
@ -1666,7 +1666,7 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallModel
|
||||||
/*
|
/*
|
||||||
* if 'field' is a POD type then 'str' will be used in get_raw_value()
|
* if 'field' is a POD type then 'str' will be used in get_raw_value()
|
||||||
* if 'field' is a getter method with pt::Stream then 'str' will be used too
|
* if 'field' is a getter method with pt::Stream then 'str' will be used too
|
||||||
* if 'field' is a getter method which takes FunInfo<> then out_stream will be used and 'str' will be empty
|
* if 'field' is a getter method which takes Env<> then out_stream will be used and 'str' will be empty
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
pt::WTextStream str;
|
pt::WTextStream str;
|
||||||
|
@ -1674,13 +1674,13 @@ bool Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallModel
|
||||||
|
|
||||||
if( parameters.empty() )
|
if( parameters.empty() )
|
||||||
{
|
{
|
||||||
FunInfo<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
Env<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
||||||
found = model.get_raw_value(nullptr, field.c_str(), nullptr, info, str, false);
|
found = model.get_raw_value(nullptr, field.c_str(), nullptr, info, str, false);
|
||||||
//last_res = info.res;
|
//last_res = info.res;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FunInfo<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
Env<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
||||||
found = model.get_raw_value(nullptr, field.c_str(), nullptr, info, str, false);
|
found = model.get_raw_value(nullptr, field.c_str(), nullptr, info, str, false);
|
||||||
//last_res = info.res;
|
//last_res = info.res;
|
||||||
}
|
}
|
||||||
|
@ -1865,12 +1865,12 @@ void Generator<StreamType, is_pikotools_stream, is_autoescape_stream>::CallObjec
|
||||||
{
|
{
|
||||||
if( parameters.empty() )
|
if( parameters.empty() )
|
||||||
{
|
{
|
||||||
FunInfo<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
Env<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
||||||
CallObject(base_obj, method_index, info);
|
CallObject(base_obj, method_index, info);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FunInfo<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
Env<StreamType> info(result, parameters, in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
|
||||||
CallObject(base_obj, method_index, info);
|
CallObject(base_obj, method_index, info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,6 @@
|
||||||
#ifdef EZC_HAS_MORM_LIBRARY
|
#ifdef EZC_HAS_MORM_LIBRARY
|
||||||
|
|
||||||
#include "wrapper.h"
|
#include "wrapper.h"
|
||||||
#include "funinfo.h"
|
|
||||||
#include "space/space.h"
|
#include "space/space.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, Tomasz Sowa
|
* Copyright (c) 2015-2021, Tomasz Sowa
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
@ -72,7 +72,7 @@ public:
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
virtual void CallFun(int fun_index, FunInfo<StreamType> &) = 0;
|
virtual void CallFun(int fun_index, Env<StreamType> &) = 0;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue