From 42144bb31ca42a389e3cfa120ee3d8cf5c854b19 Mon Sep 17 00:00:00 2001 From: Tomasz Sowa Date: Tue, 22 Mar 2016 14:53:43 +0000 Subject: [PATCH] some refactoring in miscspace(.h|.cpp) space() renamed to space_value() and takes a third parameter: escape (bool) space_noescape() removed space_tab() renamed to space_list_tab() space_tab_value() renamed to space_list_tab_value() space_tab_has_next() renamed to space_list_tab_has_next() git-svn-id: svn://ttmath.org/publicrep/winix/trunk@1035 e52654a7-88a9-db11-a3e9-0013d4bc506e --- winixd/plugins/gallery/templates.cpp | 8 +-- winixd/plugins/menu/templates.cpp | 8 +-- winixd/plugins/ticket/templates.cpp | 12 ++-- winixd/templates/dir.cpp | 16 ++--- winixd/templates/env.cpp | 16 ++--- winixd/templates/item.cpp | 24 +++---- winixd/templates/miscspace.cpp | 93 ++++++++++++++++++---------- winixd/templates/miscspace.h | 46 +++++++++++--- 8 files changed, 138 insertions(+), 85 deletions(-) diff --git a/winixd/plugins/gallery/templates.cpp b/winixd/plugins/gallery/templates.cpp index 61fb877..631b782 100644 --- a/winixd/plugins/gallery/templates.cpp +++ b/winixd/plugins/gallery/templates.cpp @@ -131,7 +131,7 @@ void gallery_tab_meta(Info & i) if( gallery_index < gallery_info.item_sort_tab.size() ) { Item & item = *gallery_info.item_sort_tab[gallery_index]; - space(i, item.meta); + space_value(i, item.meta); } } @@ -141,7 +141,7 @@ void gallery_tab_meta_tab(Info & i) if( gallery_index < gallery_info.item_sort_tab.size() ) { Item & item = *gallery_info.item_sort_tab[gallery_index]; - spaces_tab(i, item.meta); + space_list_tab(i, item.meta); } } @@ -151,7 +151,7 @@ void gallery_tab_meta_tab_value(Info & i) if( gallery_index < gallery_info.item_sort_tab.size() ) { Item & item = *gallery_info.item_sort_tab[gallery_index]; - spaces_tab_value(i, item.meta); + space_list_tab_value(i, item.meta); } } @@ -161,7 +161,7 @@ void gallery_tab_meta_tab_has_next(Info & i) if( gallery_index < gallery_info.item_sort_tab.size() ) { Item & item = *gallery_info.item_sort_tab[gallery_index]; - spaces_tab_has_next(i, item.meta); + space_list_tab_has_next(i, item.meta); } } diff --git a/winixd/plugins/menu/templates.cpp b/winixd/plugins/menu/templates.cpp index a6c6e6d..84ebf58 100644 --- a/winixd/plugins/menu/templates.cpp +++ b/winixd/plugins/menu/templates.cpp @@ -382,7 +382,7 @@ void menu_dir_tab_meta(Info & i) StackItem * sitem = reinterpret_cast(stack->fun_data); if( stack->iter < sitem->citem->menu_items.size() ) - space(i, sitem->citem->menu_items[stack->iter].meta); + space_value(i, sitem->citem->menu_items[stack->iter].meta); } } @@ -393,7 +393,7 @@ void menu_dir_tab_meta_tab(Info & i) StackItem * sitem = reinterpret_cast(stack->fun_data); if( stack->iter < sitem->citem->menu_items.size() ) - spaces_tab(i, sitem->citem->menu_items[stack->iter].meta); + space_list_tab(i, sitem->citem->menu_items[stack->iter].meta); } } @@ -405,7 +405,7 @@ void menu_dir_tab_meta_tab_value(Info & i) StackItem * sitem = reinterpret_cast(stack->fun_data); if( stack->iter < sitem->citem->menu_items.size() ) - spaces_tab_value(i, sitem->citem->menu_items[stack->iter].meta); + space_list_tab_value(i, sitem->citem->menu_items[stack->iter].meta); } } @@ -417,7 +417,7 @@ void menu_dir_tab_meta_tab_has_next(Info & i) StackItem * sitem = reinterpret_cast(stack->fun_data); if( stack->iter < sitem->citem->menu_items.size() ) - spaces_tab_has_next(i, sitem->citem->menu_items[stack->iter].meta); + space_list_tab_has_next(i, sitem->citem->menu_items[stack->iter].meta); } } diff --git a/winixd/plugins/ticket/templates.cpp b/winixd/plugins/ticket/templates.cpp index 09e79af..07115c1 100644 --- a/winixd/plugins/ticket/templates.cpp +++ b/winixd/plugins/ticket/templates.cpp @@ -307,7 +307,7 @@ void ticket_is_creating_new(Info & i) void ticket_meta_value(Info & i) { if( ticket_info.item ) - space(i, ticket_info.item->meta); + space_value(i, ticket_info.item->meta); } void ticket_is_closed(Info & i) @@ -587,7 +587,7 @@ void tickets_tab_meta_value(Info & i) tickets_tab_check_reqid(); if( tickets_value.is_item ) - space(i, tickets_value.item->meta); + space_value(i, tickets_value.item->meta); } @@ -870,7 +870,7 @@ void tickets_tab_conf_tab_file_tab_meta(Info & i) PT::Space & mt = *value.value_meta; if( tickets_file_index < mt.spaces.size() ) - space(i, *mt.spaces[tickets_file_index]); + space_value(i, *mt.spaces[tickets_file_index]); } } @@ -997,7 +997,7 @@ void ticket_tab_value_meta(Info & i) ticket_tab_check_reqid(); if( value.is_value && !value.is_in_ticket_par ) - space(i, *value.value_meta); + space_value(i, *value.value_meta); } @@ -1089,7 +1089,7 @@ void ticket_tab_select_tab_meta(Info & i) PT::Space & sp = *value.config_par; if( select_index < sp.spaces.size() ) - space(i, *sp.spaces[select_index]); + space_value(i, *sp.spaces[select_index]); } } @@ -1168,7 +1168,7 @@ void ticket_tab_file_tab_meta(Info & i) PT::Space & mt = *value.value_meta; if( ticket_file_index < mt.spaces.size() ) - space(i, *mt.spaces[ticket_file_index]); + space_value(i, *mt.spaces[ticket_file_index]); } } diff --git a/winixd/templates/dir.cpp b/winixd/templates/dir.cpp index 2d23777..63f917f 100644 --- a/winixd/templates/dir.cpp +++ b/winixd/templates/dir.cpp @@ -470,26 +470,26 @@ void dir_last_meta_str(Info & i) void dir_last_meta(Info & i) { - space(i, cur->request->dir_tab.back()->meta); + space_value(i, cur->request->dir_tab.back()->meta); } void dir_last_meta_tab(Info & i) { - spaces_tab(i, cur->request->dir_tab.back()->meta); + space_list_tab(i, cur->request->dir_tab.back()->meta); } void dir_last_meta_tab_value(Info & i) { - spaces_tab_value(i, cur->request->dir_tab.back()->meta); + space_list_tab_value(i, cur->request->dir_tab.back()->meta); } void dir_last_meta_tab_has_next(Info & i) { - spaces_tab_has_next(i, cur->request->dir_tab.back()->meta); + space_list_tab_has_next(i, cur->request->dir_tab.back()->meta); } @@ -503,25 +503,25 @@ void dir_last_admin_meta_str(Info & i) void dir_last_admin_meta(Info & i) { - space(i, cur->request->dir_tab.back()->ameta); + space_value(i, cur->request->dir_tab.back()->ameta); } void dir_last_admin_meta_tab(Info & i) { - spaces_tab(i, cur->request->dir_tab.back()->ameta); + space_list_tab(i, cur->request->dir_tab.back()->ameta); } void dir_last_admin_meta_tab_value(Info & i) { - spaces_tab_value(i, cur->request->dir_tab.back()->ameta); + space_list_tab_value(i, cur->request->dir_tab.back()->ameta); } void dir_last_admin_meta_tab_has_next(Info & i) { - spaces_tab_has_next(i, cur->request->dir_tab.back()->ameta); + space_list_tab_has_next(i, cur->request->dir_tab.back()->ameta); } diff --git a/winixd/templates/env.cpp b/winixd/templates/env.cpp index 1e135f8..b924999 100644 --- a/winixd/templates/env.cpp +++ b/winixd/templates/env.cpp @@ -61,7 +61,7 @@ void env(Info & i) User * puser = cur->session->puser; if( puser ) - space(i, puser->env); + space_value(i, puser->env); } @@ -70,7 +70,7 @@ void env_tab(Info & i) User * puser = cur->session->puser; if( puser ) - spaces_tab(i, puser->env); + space_list_tab(i, puser->env); } @@ -79,7 +79,7 @@ void env_tab_value(Info & i) User * puser = cur->session->puser; if( puser ) - spaces_tab_value(i, puser->env); + space_list_tab_value(i, puser->env); } @@ -89,7 +89,7 @@ void env_tab_has_next(Info & i) User * puser = cur->session->puser; if( puser ) - spaces_tab_has_next(i, puser->env); + space_list_tab_has_next(i, puser->env); } @@ -114,7 +114,7 @@ void env_admin(Info & i) User * puser = cur->session->puser; if( puser ) - space(i, puser->aenv); + space_value(i, puser->aenv); } @@ -123,7 +123,7 @@ void env_admin_tab(Info & i) User * puser = cur->session->puser; if( puser ) - spaces_tab(i, puser->aenv); + space_list_tab(i, puser->aenv); } @@ -132,7 +132,7 @@ void env_admin_tab_value(Info & i) User * puser = cur->session->puser; if( puser ) - spaces_tab_value(i, puser->aenv); + space_list_tab_value(i, puser->aenv); } @@ -142,7 +142,7 @@ void env_admin_tab_has_next(Info & i) User * puser = cur->session->puser; if( puser ) - spaces_tab_has_next(i, puser->aenv); + space_list_tab_has_next(i, puser->aenv); } diff --git a/winixd/templates/item.cpp b/winixd/templates/item.cpp index 73c9575..67aab42 100644 --- a/winixd/templates/item.cpp +++ b/winixd/templates/item.cpp @@ -422,7 +422,7 @@ void item_meta_str(Info & i) void item_meta(Info & i) { - space(i, cur->request->last_item->meta); // !! a new interface (last_item instead of item) + space_value(i, cur->request->last_item->meta); // !! a new interface (last_item instead of item) } @@ -430,20 +430,20 @@ void item_meta(Info & i) void item_meta_tab(Info & i) { - spaces_tab(i, cur->request->last_item->meta); + space_list_tab(i, cur->request->last_item->meta); } void item_meta_tab_value(Info & i) { - spaces_tab_value(i, cur->request->last_item->meta); + space_list_tab_value(i, cur->request->last_item->meta); } void item_meta_tab_has_next(Info & i) { - spaces_tab_has_next(i, cur->request->last_item->meta); + space_list_tab_has_next(i, cur->request->last_item->meta); } @@ -457,25 +457,25 @@ void item_admin_meta_str(Info & i) void item_admin_meta(Info & i) { - space(i, cur->request->last_item->ameta); + space_value(i, cur->request->last_item->ameta); } void item_admin_meta_tab(Info & i) { - spaces_tab(i, cur->request->last_item->ameta); + space_list_tab(i, cur->request->last_item->ameta); } void item_admin_meta_tab_value(Info & i) { - spaces_tab_value(i, cur->request->last_item->ameta); + space_list_tab_value(i, cur->request->last_item->ameta); } void item_admin_meta_tab_has_next(Info & i) { - spaces_tab_has_next(i, cur->request->last_item->ameta); + space_list_tab_has_next(i, cur->request->last_item->ameta); } @@ -847,21 +847,21 @@ void item_tab_meta_str(Info & i) void item_tab_meta(Info & i) { if( item_index < cur->request->item_tab.size() ) - space(i, cur->request->item_tab[item_index].meta); + space_value(i, cur->request->item_tab[item_index].meta); } void item_tab_meta_tab(Info & i) { if( item_index < cur->request->item_tab.size() ) - spaces_tab(i, cur->request->item_tab[item_index].meta); + space_list_tab(i, cur->request->item_tab[item_index].meta); } void item_tab_meta_tab_value(Info & i) { if( item_index < cur->request->item_tab.size() ) - spaces_tab_value(i, cur->request->item_tab[item_index].meta); + space_list_tab_value(i, cur->request->item_tab[item_index].meta); } @@ -869,7 +869,7 @@ void item_tab_meta_tab_value(Info & i) void item_tab_meta_tab_has_next(Info & i) { if( item_index < cur->request->item_tab.size() ) - spaces_tab_has_next(i, cur->request->item_tab[item_index].meta); + space_list_tab_has_next(i, cur->request->item_tab[item_index].meta); } diff --git a/winixd/templates/miscspace.cpp b/winixd/templates/miscspace.cpp index 50e1225..f169e24 100644 --- a/winixd/templates/miscspace.cpp +++ b/winixd/templates/miscspace.cpp @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2012-2014, Tomasz Sowa + * Copyright (c) 2012-2016, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -37,11 +37,12 @@ namespace Winix { - namespace TemplatesFunctions { + + bool are_spaces_the_same(const std::vector & params, const std::vector & spaces) { // last value from params is the parameter name (not a space) @@ -95,7 +96,12 @@ PT::Space * find_space(const std::vector & params, PT::Space & space, - +/* + * + * IMPROVE ME + * add a private namespace? + * + */ struct SpaceInfo { bool inited; @@ -114,6 +120,46 @@ static size_t space_reqid = 0; +/* + +struct SpaceKey +{ + PT::Space * global_space; + std::vector spaces_names; + + + bool operator<(const SpaceKey & k) + { + if( global_space != k.global_space ) + return global_space < k.global_space; + + if( spaces_names.size() != k.spaces_names.size() ) + return spaces_names.size() < k.spaces_names.size(); + + for(size_t i=0 ; i space_map; + + + + + void space_init(const std::vector & params, PT::Space & space, SpaceInfo & space_info) { if( !space_info.inited || !are_spaces_the_same(params, space_info.spaces) ) @@ -122,11 +168,6 @@ void space_init(const std::vector & params, PT::Space & space, SpaceIn copy_space(params, space_info.spaces); space_info.last_space = find_space(params, space); } - else - { - // !! temp - //log << log1 << "taking space from the cache" << logend; - } } @@ -140,7 +181,7 @@ void space_check_reqid() } -void space(Info & i, PT::Space & space) +void space_value(Info & i, PT::Space & space, bool escape) { space_check_reqid(); @@ -155,34 +196,18 @@ void space(Info & i, PT::Space & space) const std::wstring * value = space_info.last_space->GetValue(param); if( value ) - i.out << *value; -// else -// log << log1 << "nie ma takiej wartosci" << logend; // only for testing -// !! IMPROVE ME + { + if( escape ) + i.out << *value; + else + i.out << R(*value); + } } } } -void space_value_noescape(Info & i, PT::Space & space) -{ - space_check_reqid(); - if( !i.params.empty() ) - { - SpaceInfo & space_info = spaces_map[&space]; - space_init(i.params, space, space_info); - - if( space_info.last_space ) - { - const std::wstring & param = i.params.back().str; - const std::wstring * value = space_info.last_space->GetValue(param); - - if( value ) - i.out << R(*value); - } - } -} @@ -299,7 +324,7 @@ void spaces_tab_init(std::vector & params, PT::Space & space, SpacesTa -void spaces_tab(Info & i, PT::Space & space) +void space_list_tab(Info & i, PT::Space & space) { spaces_tab_check_reqid(); @@ -340,7 +365,7 @@ void spaces_tab_value_print(HtmlTextStream & out, SpacesTabInfo & spaces_tab_inf } -void spaces_tab_value(Info & i, PT::Space & space) +void space_list_tab_value(Info & i, PT::Space & space) { spaces_tab_check_reqid(); SpacesTabInfo & spaces_tab_info = spaces_tab_info_map[&space]; @@ -374,7 +399,7 @@ return false; } -void spaces_tab_has_next(Info & i, PT::Space & space) +void space_list_tab_has_next(Info & i, PT::Space & space) { spaces_tab_check_reqid(); SpacesTabInfo & spaces_tab_info = spaces_tab_info_map[&space]; diff --git a/winixd/templates/miscspace.h b/winixd/templates/miscspace.h index 22bda4c..0c57094 100644 --- a/winixd/templates/miscspace.h +++ b/winixd/templates/miscspace.h @@ -5,7 +5,7 @@ */ /* - * Copyright (c) 2012-2014, Tomasz Sowa + * Copyright (c) 2012-2016, Tomasz Sowa * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -37,24 +37,52 @@ namespace Winix { - namespace TemplatesFunctions { -// !! rename to 'space_value' -void space(Info & i, PT::Space & space); -void space_value_noescape(Info & i, PT::Space & space); -// !! rename to 'space_value_tab' etc. -void spaces_tab(Info & i, PT::Space & space); -void spaces_tab_value(Info & i, PT::Space & space); -void spaces_tab_has_next(Info & i, PT::Space & space); +/* + * return a value from a space + * you can define you own ezc function e.g. my_space_value(Info &i) in such a way: + * + * void my_space_value(Info & i) + * { + * space_value(i, the_space_object_i_am_interested_in); + * } + * + * and now you can call it from ezc template: + * [my_space_value "foo"] -> looking for parameter "foo" in the global space of the_space_object_i_am_interest_in + * [my_space_value "foo" "bar"] -> first looking for a space with "foo" name then looking for "bar" parameter + * + * + * there is some built-in optimization made: + * if you are looking for parameters from the same space e.g. + * [my_space_value "foo" "foo2" "param1"] + * [my_space_value "foo" "foo2" "param2"] + * [my_space_value "foo" "foo2" "param3"] + * after looking for param1 the address of foo2 space is cached in a local map (first we're looking for foo and then for foo2) + * and when looking for param2 and param3 the address of foo2 is taken from the map + * + * + */ +void space_value(Info & i, PT::Space & space, bool escape = true); +// !! IMPROVE ME +// add +// void space_list_tab_size(Info & i, PT::Space & space); + +void space_list_tab(Info & i, PT::Space & space); +void space_list_tab_value(Info & i, PT::Space & space); +void space_list_tab_has_next(Info & i, PT::Space & space); + + +// !! IMPROVE ME // !! add space_tab (iteration through spaces) + } // namespace TemplatesFunctions } // namespace Winix