From 30d9bae5f4c35c23f85b4468cc89f9cd0dafc497 Mon Sep 17 00:00:00 2001 From: deva Date: Wed, 19 Mar 2008 10:52:11 +0000 Subject: Merge with local code. --- server/src/macro.h | 6 +++++- server/src/macro_parser.cc | 26 ++++++++++++++------------ server/src/server.cc | 16 +++++++++++----- 3 files changed, 30 insertions(+), 18 deletions(-) (limited to 'server/src') diff --git a/server/src/macro.h b/server/src/macro.h index 2252d90..9d4692f 100644 --- a/server/src/macro.h +++ b/server/src/macro.h @@ -29,13 +29,17 @@ #include #include +#include +/* class WidgetProperty { public: std::string name; std::string value; }; -typedef std::vector< WidgetProperty > WidgetPropertyList; +*/ +//typedef std::vector< WidgetProperty > WidgetPropertyList; +typedef std::map< std::string, std::string > WidgetPropertyList; class Widget; typedef std::vector< Widget > WidgetList; diff --git a/server/src/macro_parser.cc b/server/src/macro_parser.cc index 62c74ca..9161613 100644 --- a/server/src/macro_parser.cc +++ b/server/src/macro_parser.cc @@ -70,13 +70,6 @@ static void start_hndl(void *p, const char *el, const char **attr) // Do something reasonable with them... - if(name == "macro") { - // printf("Macro %s %s\n", attributes["name"].c_str(), attributes["resume"].c_str()); - parser->macro->name = attributes["name"]; - parser->macro->format = attributes["resume"]; - // return; - } - if(name == "include") { Macro inc; @@ -91,6 +84,15 @@ static void start_hndl(void *p, const char *el, const char **attr) return; // Don't do further parsing of this tag. } + if(name == "macro") { + + parser->macro->name = attributes["name"]; + parser->macro->version = attributes["version"]; + parser->macro->format = attributes["resume"]; + + return; // Don't do further parsing of this tag. + } + Widget widget; widget.type = name; @@ -107,11 +109,11 @@ static void start_hndl(void *p, const char *el, const char **attr) std::map< std::string, std::string >::iterator i = attributes.begin(); while(i != attributes.end()) { - WidgetProperty prop; - prop.name = i->first; - prop.value = i->second; - - wp->properties.push_back(prop); + // WidgetProperty prop; + // prop.name = i->first; + // prop.value = i->second; + // wp->properties.push_back(prop); + wp->properties[i->first] = i->second; i++; } diff --git a/server/src/server.cc b/server/src/server.cc index c88de4d..2a4c882 100644 --- a/server/src/server.cc +++ b/server/src/server.cc @@ -57,10 +57,15 @@ static void send_macro_widget(Widget &widget, TCPSocket &socket, std::string tab socket.write(tabs + "<" + widget.type); WidgetPropertyList::iterator p = widget.properties.begin(); while(p != widget.properties.end()) { - WidgetProperty &property = *p; - socket.write(" " + property.name + "=\"" + property.value + "\""); + socket.write(" " + p->first + "=\"" + p->second + "\""); p++; } + + if(widget.widgets.size() == 0) { // If node is empty, use short tag form + socket.write("/>\n"); + return; + } + socket.write(">\n"); WidgetList::iterator w = widget.widgets.begin(); @@ -91,11 +96,14 @@ static void connection(TCPSocket &socket) Macro macro; parse_macro(request.macro, macro); + socket.write(" \n"); WidgetList::iterator w = macro.widgets.begin(); while(w != macro.widgets.end()) { - send_macro_widget(*w, socket, " "); + send_macro_widget(*w, socket, " "); w++; } + socket.write(" \n"); printf("done.\n"); @@ -125,8 +133,6 @@ static void connection(TCPSocket &socket) journal_commit_addr.c_str(), journal_commit_port, resume.c_str(), resume.length()); - // printf(resume.c_str()); - i++; } } -- cgit v1.2.3