WIP: add a Val struct as an input/output when calling a function

This commit is contained in:
2025-01-23 07:12:57 +01:00
parent 8819adbb3f
commit 37f78ad8e0
13 changed files with 161 additions and 156 deletions

View File

@@ -94,13 +94,13 @@ void Blocks::CacheObjects(Objects & obj)
}
void Blocks::CacheFunctions(Functions & fun)
{
BlocksTable::iterator i = blocks_tab.begin();
// void Blocks::CacheFunctions(Functions & fun)
// {
// BlocksTable::iterator i = blocks_tab.begin();
for( ; i != blocks_tab.end() ; ++i)
Cache(fun, i->second);
}
// for( ; i != blocks_tab.end() ; ++i)
// Cache(fun, i->second);
// }
void Blocks::CacheBlocks(Blocks & blocks)

View File

@@ -63,7 +63,7 @@ public:
void Clear();
void CacheObjects(Objects & obj);
void CacheFunctions(Functions & fun);
//void CacheFunctions(Functions & fun);
void CacheBlocks(Blocks & blocks);
void ClearCache();

View File

@@ -58,30 +58,30 @@ void Cache(Blocks & blocks, Item::Function & function)
}
void Cache(Functions & fun, Item::Function & function)
{
function.fun_cache = 0;
// 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( !function.name.empty() && function.arg < 0 )
// {
// typename Functions::Iterator i = fun.Find(function.name);
if( i != fun.End() )
function.fun_cache = &i->second;
}
// if( i != fun.End() )
// function.fun_cache = &i->second;
// }
for(size_t i=0 ; i < function.parameters.size() ; ++i)
Cache(fun, *function.parameters[i]);
}
// 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);
// 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]);
}
// for(size_t i=0; i < item.item_tab.size() ; ++i)
// Cache(fun, *item.item_tab[i]);
// }

View File

@@ -48,8 +48,8 @@ namespace Ezc
class Blocks;
void Cache(Functions & fun, Item::Function & function);
void Cache(Functions & fun, Item & item);
// void Cache(Functions & fun, Item::Function & function);
// void Cache(Functions & fun, Item & item);
void Cache(Blocks & blocks, Item & item);
void Cache(Objects & objects, Item::Function & function);
void Cache(Objects & objects, Item & item);

View File

@@ -38,7 +38,7 @@
namespace Ezc
{
/*
void Functions::Insert(const char * key, UserFunction ufunction)
{
pt::utf8_to_wide(key, temp_key);
@@ -102,7 +102,7 @@ size_t Functions::Size() const
{
return functions_tab.size();
}
*/
} // namespace Ezc

View File

@@ -48,6 +48,7 @@ namespace Ezc
// functions or variables
/*
class Functions
{
public:
@@ -75,7 +76,7 @@ private:
std::wstring temp_key;
};
*/
} // namespace Ezc

View File

@@ -65,7 +65,7 @@ public:
void SetPattern(Pattern & pattern);
void SetBlocks(Blocks & blocks);
void SetFunctions(Functions & functions);
//void SetFunctions(Functions & functions);
void SetObjects(Objects & objects);
void SetVariables(Vals & variables); // [def] and [let]
@@ -142,14 +142,15 @@ private:
Item::Function & item_fun,
const std::wstring & fun_name,
std::vector<std::wstring> & fields,
Val & baseval,
std::vector<Val> & parameters,
Val & result,
pt::Stream & out_stream,
const pt::Stream & in_stream) :
item_fun(item_fun), fun_name(fun_name), fields(fields), baseval(&baseval), currentval(&baseval),
item_fun(item_fun), fun_name(fun_name), fields(fields),
parameters(parameters), result(result), out_stream(out_stream), in_stream(in_stream)
{
currentval = nullptr;
#ifdef EZC_HAS_MORM_LIBRARY
field_index = 0;
#endif
@@ -158,21 +159,21 @@ private:
FindHelper(const FindHelper &) = delete;
// RENAMEME
void set_base_val(Val * val)
void set_current_val(Val * val)
{
baseval = val;
//baseval = val;
currentval = val;
}
void set_base_val(Val & val)
void set_current_val(Val & val)
{
set_base_val(&val);
set_current_val(&val);
}
Item::Function & item_fun;
const std::wstring & fun_name;
std::vector<std::wstring> & fields;
Val * baseval;
//Val * baseval;
Val * currentval;
std::vector<Val> & parameters;
Val & result;
@@ -248,7 +249,7 @@ private:
Pattern * ppattern;
Blocks * pblocks;
Functions * pfunctions;
//Functions * pfunctions;
Objects * pobjects;
#ifdef EZC_HAS_MORM_LIBRARY
Models * pmodels;
@@ -366,8 +367,8 @@ private:
void PrepareEnvStruct(Env & env);
void CallFunction(Functions::UserFunction & function, Env & env);
void CallFunction(FindHelper & find_helper);
void CallFunction(Val::UserFunction & function, Env & env);
//void CallFunction(FindHelper & find_helper);
void CallMethod(morm::Model * model, Val::ModelMethod1 method, Env & env);
void CallMethod(morm::Model * model, Val::ModelMethod2 method, Val & res);
@@ -399,11 +400,14 @@ private:
#ifdef EZC_HAS_MORM_LIBRARY
//bool CallModelField(FindHelper & find_helper, morm::Model & model);
bool CallModel(FindHelper & find_helper, morm::Model & model);
bool FindLastModelWrapper(FindHelper & find_helper, bool is_for_alias);
bool CallModel(FindHelper & find_helper);
bool CallModelContainerWrapper(FindHelper & find_helper);
#endif
bool XXXRenameMe(FindHelper & find_helper, bool is_for_alias);
bool FindLastModelWrapper(FindHelper & find_helper, bool is_for_alias);
bool FindLastSpace(FindHelper & find_helper);
bool EvaluateFunctionOrMethod(pt::Stream & out_stream, Val & val, Val & result);
void CallObject(BaseObj & base_obj,
@@ -469,11 +473,12 @@ private:
pt::Stream * GetNewStreamForFrame();
void DecrementFramesStackIndex();
bool EvaluateResultToBool(Val & result, bool is_empty_stream);
void MakeTextIf_go(Item & item, bool result);
void MakeTextIf(Item & item);
void MakeTextIfDef(Item & item);
void MakeTextIfNotDef(Item & item);
bool MakeTextForEvaluate(Item & item, Val & result);
bool MakeTextForEvaluate(Item & item, Val & result, bool is_empty_stream);
void MakeTextFor(Item & item);
void MakeItemText(Item & item);
void MakeTextContainer(Item & item);
@@ -507,7 +512,7 @@ Generator::Generator() : empty_stream()
{
ppattern = nullptr;
pblocks = nullptr;
pfunctions = nullptr;
//pfunctions = nullptr;
pobjects = nullptr;
pvals = nullptr;
plog = nullptr;
@@ -550,7 +555,7 @@ Generator::operator=(const Generator & n)
{
ppattern = n.ppattern;
pblocks = n.pblocks;
pfunctions = n.pfunctions;
//pfunctions = n.pfunctions;
pobjects = n.pobjects;
pvals = n.pvals;
plog = n.plog;
@@ -624,10 +629,10 @@ void Generator::SetBlocks(Blocks & blocks)
void Generator::SetFunctions(Functions & functions)
{
pfunctions = &functions;
}
// void Generator::SetFunctions(Functions & functions)
// {
// pfunctions = &functions;
// }
@@ -1102,7 +1107,7 @@ bool Generator::CheckBlockArgument(FindHelper & find_helper)
if( size_t(find_helper.item_fun.arg) < block_stack.args.size() )
{
find_helper.set_base_val(block_stack.args[find_helper.item_fun.arg]);
find_helper.set_current_val(block_stack.args[find_helper.item_fun.arg]);
return true;
}
}
@@ -1157,7 +1162,7 @@ bool Generator::FindInModels(FindHelper & find_helper)
if( val )
{
find_helper.set_base_val(val);
find_helper.set_current_val(val);
found = true;
}
}
@@ -1168,19 +1173,20 @@ bool Generator::FindInModels(FindHelper & find_helper)
#endif
// IMPROVEME split me into two functions
bool Generator::FindInFunctions(FindHelper & find_helper)
{
/*
if( pfunctions )
{
typename Functions::Iterator i = pfunctions->Find(find_helper.fun_name);
if( i != pfunctions->End() )
{
find_helper.baseval->set(i->second);
find_helper.currentval->set_pointer_to(i->second);
return true;
}
}
*/
return false;
}
@@ -1194,7 +1200,7 @@ bool Generator::FindInBlocks(FindHelper & find_helper)
if( i != pblocks->End() )
{
find_helper.baseval->set_pointer_to(&i->second);
find_helper.currentval->set_pointer_to(&i->second);
return true;
}
}
@@ -1211,7 +1217,7 @@ bool Generator::FindInVariables(FindHelper & find_helper)
if( i != pvals->end() )
{
find_helper.set_base_val(i->second);
find_helper.set_current_val(i->second);
return true;
}
}
@@ -1284,27 +1290,27 @@ void Generator::PrepareEnvStruct(Env & env)
void Generator::CallFunction(Functions::UserFunction & function, Env & env)
void Generator::CallFunction(Val::UserFunction & function, Env & env)
{
PrepareEnvStruct(env);
(function)(env);
}
void Generator::CallFunction(FindHelper & find_helper)
{
if( !IsTestingFunctionExistence() )
{
if( find_helper.baseval->type == Val::TYPE_FUNCTION && find_helper.baseval->pointer )
{
using UserFunction = void (*)(Env &);
UserFunction user_function = reinterpret_cast<UserFunction>(find_helper.baseval->pointer);
// void Generator::CallFunction(FindHelper & find_helper)
// {
// if( !IsTestingFunctionExistence() )
// {
// if( find_helper.baseval->type == Val::TYPE_FUNCTION && find_helper.baseval->pointer )
// {
// using UserFunction = void (*)(Env &);
// UserFunction user_function = reinterpret_cast<UserFunction>(find_helper.baseval->pointer);
Env env(find_helper.out_stream, find_helper.parameters, find_helper.result, find_helper.in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
CallFunction(user_function, env);
}
}
}
// Env env(find_helper.out_stream, find_helper.parameters, find_helper.result, find_helper.in_stream, stack_tab[stack_index-1], *stack_tab[stack_index-1].item);
// CallFunction(user_function, env);
// }
// }
// }
void Generator::CallMethod(morm::Model * model, Val::ModelMethod1 method, Env & env)
@@ -1570,6 +1576,9 @@ pt::Space * Generator::CallSpaceObject(FindHelper & find_helper, pt::Space * spa
if( find_helper.is_last_field() )
{
// IsTestingFunctionExistence() can be moved up (to Call() method or level up)
if( IsTestingFunctionExistence() )
{
find_helper.result.set(true);
@@ -2009,11 +2018,31 @@ bool Generator::EvaluateFunctionOrMethod(pt::Stream & out_stream, Val & val, Val
}
bool Generator::XXXRenameMe(FindHelper & find_helper, bool is_for_alias)
{
if( find_helper.currentval->has_function() || find_helper.currentval->has_method() )
{
//Val res(&find_helper.out_stream);
if( EvaluateFunctionOrMethod(find_helper.out_stream, *find_helper.currentval, find_helper.result) )
{
find_helper.currentval = &find_helper.result;
//child_val = find_helper.currentval->add_child(field, find_helper.result);
}
else
{
// put some error?
return false;
}
}
}
// RENAMEME
bool Generator::FindLastModelWrapper(FindHelper & find_helper, bool is_for_alias)
{
find_helper.field_index = 0;
Val res(&find_helper.out_stream);
//Val res(&find_helper.out_stream);
while( find_helper.field_index < find_helper.fields.size() && find_helper.currentval->has_model_object() )
{
@@ -2042,9 +2071,9 @@ bool Generator::FindLastModelWrapper(FindHelper & find_helper, bool is_for_alias
{
if( (find_helper.field_index + 1 < find_helper.fields.size()) || !is_for_alias )
{
if( EvaluateFunctionOrMethod(find_helper.out_stream, *find_helper.currentval, res) )
if( EvaluateFunctionOrMethod(find_helper.out_stream, *find_helper.currentval, find_helper.result) )
{
child_val = find_helper.currentval->add_child(field, res);
child_val = find_helper.currentval->add_child(field, find_helper.result);
}
else
{
@@ -2069,9 +2098,9 @@ bool Generator::FindLastModelWrapper(FindHelper & find_helper, bool is_for_alias
{
if( (find_helper.field_index + 1 < find_helper.fields.size()) || !is_for_alias )
{
if( EvaluateFunctionOrMethod(find_helper.out_stream, val, res) )
if( EvaluateFunctionOrMethod(find_helper.out_stream, val, find_helper.result) )
{
child_val = find_helper.currentval->add_child(field, res);
child_val = find_helper.currentval->add_child(field, find_helper.result);
}
else
{
@@ -2106,6 +2135,18 @@ bool Generator::FindLastModelWrapper(FindHelper & find_helper, bool is_for_alias
}
bool Generator::FindLastSpace(FindHelper & find_helper)
{
if( find_helper.currentval->type == Val::TYPE_SPACE )
{
return CallSpace(find_helper);
}
return true;
}
bool Generator::CallModel(FindHelper & find_helper)
{
morm::Model * model = reinterpret_cast<morm::Model*>(find_helper.currentval->pointer);
@@ -2369,14 +2410,13 @@ bool Generator::Call(Item::Function & item_fun,
pt::Stream & out_stream,
const pt::Stream & in_stream)
{
Val current(&out_stream);
//Val current(&out_stream);
std::vector<Val> parameters;
if( !fun_name )
fun_name = &item_fun.name;
FindHelper find_helper(item_fun, *fun_name, item_fun.fields, current, parameters, result, out_stream, in_stream);
FindHelper find_helper(item_fun, *fun_name, item_fun.fields, parameters, result, out_stream, in_stream);
// if( clear_out_stream )
// ClearStream(out_stream);
@@ -2389,6 +2429,9 @@ bool Generator::Call(Item::Function & item_fun,
if( !FindLastModelWrapper(find_helper, false) )
return false;
if( !FindLastSpace(find_helper) )
return false;
EvaluateParameters(find_helper);
bool status = false;
@@ -2872,6 +2915,13 @@ void Generator::MakeTextFunction(Item & item)
}
bool Generator::EvaluateResultToBool(Val & result, bool is_empty_stream)
{
if( result.type != Val::TYPE_VOID )
return result.to_bool();
return !is_empty_stream;
}
void Generator::MakeTextIf_go(Item & item, bool result)
@@ -2896,6 +2946,8 @@ void Generator::MakeTextIf(Item & item)
{
Val result(stream_temp1);
is_generating_if = true;
bool is_empty_stream = true;
stream_temp1->clear();
if( program_mode )
{
@@ -2905,13 +2957,15 @@ void Generator::MakeTextIf(Item & item)
else
{
bool status = Call(item.function, nullptr, result, *stream_temp1, *empty_stream);
ClearStream(*stream_temp1);
is_empty_stream = stream_temp1->empty();
stream_temp1->clear();
if( !status )
return;
}
MakeTextIf_go(item, result.to_bool());
MakeTextIf_go(item, EvaluateResultToBool(result, is_empty_stream));
stream_temp1->clear();
}
@@ -2955,7 +3009,7 @@ void Generator::MakeTextIfNotDef(Item & item)
}
bool Generator::MakeTextForEvaluate(Item & item, Val & result)
bool Generator::MakeTextForEvaluate(Item & item, Val & result, bool is_empty_stream)
{
bool status = false;
@@ -2998,7 +3052,7 @@ bool Generator::MakeTextForEvaluate(Item & item, Val & result)
}
else
{
status = result.to_bool();
status = EvaluateResultToBool(result, is_empty_stream);
}
return status;
@@ -3023,6 +3077,12 @@ void Generator::MakeTextFor(Item & item)
// so we should set it in each iterations
is_generating_for = true;
result.clear();
stream_temp1->clear();
bool is_empty_stream = true;
// CHECKME
// stream_temp1 is cleared correctly in each loop?
if( program_mode )
{
@@ -3034,12 +3094,14 @@ void Generator::MakeTextFor(Item & item)
return;
}
if( !MakeTextForEvaluate(item, result) )
if( !MakeTextForEvaluate(item, result, is_empty_stream) )
break;
if( !item.item_tab.empty() )
MakeText( *item.item_tab[0] ); // should be only one item
}
stream_temp1->clear();
}

View File

@@ -117,6 +117,14 @@ void Models::Add(const std::wstring & name, const std::wstring & value)
}
void Models::Add(const std::wstring & name, Val::UserFunction ufunction)
{
Val val;
val.set_pointer_to(ufunction);
models_map[name] = val;
}
Val * Models::Find(const std::wstring & name)
{
auto iterator = models_map.find(name);
@@ -135,8 +143,6 @@ Models::ModelsMap & Models::GetMap()
return models_map;
}
}

View File

@@ -65,6 +65,8 @@ public:
void Add(const std::wstring & name, const std::wstring & value);
void Add(const std::wstring & name, Val::UserFunction ufunction);
template<typename VectorType>
void Add(const std::wstring & name, std::vector<VectorType> & container)
{

View File

@@ -63,10 +63,10 @@ void Pattern::ClearCache()
}
void Pattern::CacheFunctions(Functions & fun)
{
Cache(fun, item_root);
}
// void Pattern::CacheFunctions(Functions & fun)
// {
// Cache(fun, item_root);
// }
void Pattern::CacheObjects(Objects & obj)

View File

@@ -55,7 +55,7 @@ public:
void Clear();
void CacheFunctions(Functions & fun);
//void CacheFunctions(Functions & fun);
void CacheBlocks(Blocks & blocks);
void CacheObjects(Objects & obj);
void ClearCache();

View File

@@ -46,7 +46,6 @@ namespace Ezc
Val::Val()
{
output_stream = nullptr;
output_stream_original_size = 0;
initialize_empty();
}
@@ -54,7 +53,6 @@ Val::Val()
Val::Val(pt::Stream * output_stream)
{
this->output_stream = output_stream;
this->output_stream_original_size = output_stream->size();
initialize_empty();
}
@@ -108,7 +106,6 @@ void Val::copy(const Val & val)
// space = val.space;
output_stream = val.output_stream;
output_stream_original_size = val.output_stream_original_size;
increment_model_container_wrapper_ref();
increment_space_wrapper_ref();
@@ -146,7 +143,6 @@ Val::~Val()
void Val::set_output_stream(pt::Stream * output_stream)
{
this->output_stream = output_stream;
this->output_stream_original_size = (output_stream) ? output_stream->size() : 0;
}
@@ -310,9 +306,6 @@ bool Val::to_bool() const
case TYPE_MODEL_CONTAINER_WRAPPER:
return to_bool_model_container_wrapper();
case TYPE_OUTPUT_STREAM:
return output_stream->size() != output_stream_original_size;
}
return false;
@@ -910,11 +903,6 @@ bool Val::is_equal_string(const wchar_t * str) const
pt::Stream * stream = reinterpret_cast<pt::Stream*>(pointer);
found = is_stream_equal_string(*stream, str);
}
else
if( type == Type::TYPE_OUTPUT_STREAM && output_stream )
{
found = is_stream_equal_string(*output_stream, str);
}
return found;
}
@@ -1012,7 +1000,6 @@ void Val::serialize_to(pt::Stream & str)
#ifdef EZC_HAS_MORM_LIBRARY
case TYPE_MODEL_METHOD:
#endif
case TYPE_OUTPUT_STREAM:
case TYPE_ITEM_BLOCK:
break;
@@ -1093,20 +1080,8 @@ void Val::serialize_space_to(pt::Stream & str)
}
void Val::assert_type_output_stream()
{
if( type != Val::TYPE_OUTPUT_STREAM )
{
clear();
type = TYPE_OUTPUT_STREAM;
}
}
Val & Val::operator<<(const char * str)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << str;
@@ -1118,8 +1093,6 @@ Val & Val::operator<<(const char * str)
Val & Val::operator<<(const wchar_t * str)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << str;
@@ -1131,8 +1104,6 @@ Val & Val::operator<<(const wchar_t * str)
Val & Val::operator<<(const std::string & str)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << str;
@@ -1144,8 +1115,6 @@ Val & Val::operator<<(const std::string & str)
Val & Val::operator<<(const std::wstring & str)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << str;
@@ -1157,8 +1126,6 @@ Val & Val::operator<<(const std::wstring & str)
Val & Val::operator<<(char val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1170,8 +1137,6 @@ Val & Val::operator<<(char val)
Val & Val::operator<<(unsigned char val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1183,8 +1148,6 @@ Val & Val::operator<<(unsigned char val)
Val & Val::operator<<(wchar_t val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1196,8 +1159,6 @@ Val & Val::operator<<(wchar_t val)
Val & Val::operator<<(bool val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1209,8 +1170,6 @@ Val & Val::operator<<(bool val)
Val & Val::operator<<(short val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1222,8 +1181,6 @@ Val & Val::operator<<(short val)
Val & Val::operator<<(int val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1235,8 +1192,6 @@ Val & Val::operator<<(int val)
Val & Val::operator<<(long val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1248,8 +1203,6 @@ Val & Val::operator<<(long val)
Val & Val::operator<<(long long val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1261,8 +1214,6 @@ Val & Val::operator<<(long long val)
Val & Val::operator<<(unsigned short val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1274,8 +1225,6 @@ Val & Val::operator<<(unsigned short val)
Val & Val::operator<<(unsigned int val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1287,8 +1236,6 @@ Val & Val::operator<<(unsigned int val)
Val & Val::operator<<(unsigned long val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1300,8 +1247,6 @@ Val & Val::operator<<(unsigned long val)
Val & Val::operator<<(unsigned long long val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1313,8 +1258,6 @@ Val & Val::operator<<(unsigned long long val)
Val & Val::operator<<(float val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1326,8 +1269,6 @@ Val & Val::operator<<(float val)
Val & Val::operator<<(double val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1339,8 +1280,6 @@ Val & Val::operator<<(double val)
Val & Val::operator<<(long double val)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << val;
@@ -1352,8 +1291,6 @@ Val & Val::operator<<(long double val)
Val & Val::operator<<(const pt::Stream & str)
{
assert_type_output_stream();
if( output_stream )
{
*output_stream << str;

View File

@@ -87,7 +87,6 @@ public:
TYPE_MODEL_METHOD,
#endif
TYPE_SPACE,
TYPE_OUTPUT_STREAM,
TYPE_ITEM_BLOCK,
TYPE_CHAR,
TYPE_WCHAR, //
@@ -276,7 +275,6 @@ public:
// output stream
pt::Stream * output_stream;
size_t output_stream_original_size;
bool is_equal_string(const wchar_t * str) const;
@@ -304,8 +302,6 @@ private:
bool is_space_equal_string(const pt::Space & space, const wchar_t * str) const;
bool is_stream_equal_string(const pt::Stream & stream, const wchar_t * str) const;
void assert_type_output_stream();
bool to_bool_stream() const;
bool to_bool_space() const;
bool to_bool_model_container_wrapper() const;
@@ -383,6 +379,7 @@ typedef std::map<std::wstring, Val> Vals;
} // namespace Ezc
#endif