diff options
author | deva <deva> | 2008-03-19 10:52:11 +0000 |
---|---|---|
committer | deva <deva> | 2008-03-19 10:52:11 +0000 |
commit | 30d9bae5f4c35c23f85b4468cc89f9cd0dafc497 (patch) | |
tree | ea04f6d71f5f9739f15554d8984a3b4c24db0649 /server/src | |
parent | 8fd8b50d51b234011f00bab7b46cf56cfd760f99 (diff) |
Merge with local code.
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/macro.h | 6 | ||||
-rw-r--r-- | server/src/macro_parser.cc | 26 | ||||
-rw-r--r-- | server/src/server.cc | 16 |
3 files changed, 30 insertions, 18 deletions
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 <string> #include <vector> +#include <map> +/* 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(" <macro version=\"" + macro.version + "\" name=\"" + + macro.name + "\" resume=\"" + macro.format + "\">\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(" </macro>\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++; } } |