summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authordeva <deva>2008-03-19 10:52:11 +0000
committerdeva <deva>2008-03-19 10:52:11 +0000
commit30d9bae5f4c35c23f85b4468cc89f9cd0dafc497 (patch)
treeea04f6d71f5f9739f15554d8984a3b4c24db0649 /server/src
parent8fd8b50d51b234011f00bab7b46cf56cfd760f99 (diff)
Merge with local code.
Diffstat (limited to 'server/src')
-rw-r--r--server/src/macro.h6
-rw-r--r--server/src/macro_parser.cc26
-rw-r--r--server/src/server.cc16
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++;
}
}