diff options
Diffstat (limited to 'bindings/gsoap/gsoapsword.cpp')
-rw-r--r-- | bindings/gsoap/gsoapsword.cpp | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/bindings/gsoap/gsoapsword.cpp b/bindings/gsoap/gsoapsword.cpp new file mode 100644 index 0000000..cb3a58d --- /dev/null +++ b/bindings/gsoap/gsoapsword.cpp @@ -0,0 +1,142 @@ +#include "soapH.h" +#include <flatapi.h> +#include <swmgr.h> +#include <markupfiltmgr.h> + + +SWMgr *mgr; + +int sword__ModList_iterator_next(xsd__int hmmi, xsd__int &noop) { + ModList_iterator_next(hmmi); + return SOAP_OK; +} + +int sword__ModList_iterator_val(xsd__int hmmi, xsd__int &hmodule) { + hmodule = ModList_iterator_val(hmmi); + return SOAP_OK; +} + +int sword__SWMgr_new(xsd__int &retVal) { + retVal = SWMgr_new(); + return SOAP_OK; +} + +int sword__SWMgr_delete(xsd__int hmgr, xsd__int &noop) { + SWMgr_delete(hmgr); + return SOAP_OK; +} + +int sword__SWMgr_getModulesIterator(xsd__int hmgr, xsd__int &hmodIterator) { + hmodIterator = SWMgr_getModulesIterator(hmgr); + return SOAP_OK; +} + +int sword__SWMgr_getModuleByName(xsd__int hmgr, xsd__string name, xsd__int &hmodule) { + hmodule = SWMgr_getModuleByName(hmodule, name); + return SOAP_OK; +} + + + +int sword__SWModule_getName(xsd__int hmodule, xsd__string &name) { + name = (char *)SWModule_getName(hmodule); + return SOAP_OK; +} + +int sword__SWModule_getDescription(xsd__int hmodule, xsd__string &description) { + description = (char *)SWModule_getDescription(hmodule); + return SOAP_OK; +} + + +int sword__Quick_getModuleRawEntry(xsd__string modName, xsd__string modKey, xsd__string &modText) { + SWModule *mod = mgr->Modules[modName]; + if (mod) { + mod->setKey(modKey); + modText = mod->getRawEntry(); + } + return SOAP_OK; +} + + +int sword__Quick_setModuleRawEntry(xsd__string modName, xsd__string modKey, xsd__string modText, xsd__int &noop) { + SWModule *mod = mgr->Modules[modName]; + if (mod) { + mod->setKey(modKey); + (*mod) << modText; + } + return SOAP_OK; +} + + +int sword__Quick_getModuleRenderText(xsd__string modName, xsd__string modKey, xsd__string &modText) { + SWModule *mod = mgr->Modules[modName]; + if (mod) { + mod->setKey(modKey); + modText = (char *)mod->RenderText(); + } + return SOAP_OK; +} + + +int sword__Quick_getJScriptAttribArray(xsd__string modName, xsd__string modKey, xsd__string &arrayText) { + SWModule *mod = mgr->Modules[modName]; + if (mod) { + mod->setKey(modKey); + AttributeTypeList::iterator i1; + AttributeList::iterator i2; + AttributeValue::iterator i3; + int l1, l2, l3; + char lbuf1[20], lbuf2[20], lbuf3[20]; + static string retVal = ""; + retVal = "var entryAttribs = new Array();\n"; + string l1keys = "entryAttribs[0] = new Array("; + for (l1=0,i1 = target->getEntryAttributes().begin(); i1 != target->getEntryAttributes().end(); i1++,l1++) { + sprintf(lbuf1, "%d", l1+1); + retVal += "entryAttribs["+lbuf1+"] = new Array();\n"; + string l2keys = "entryAttribs["+lbuf1+"][0] = new Array("; + cout << "[ " << i1->first << " ]\n"; + for (l2=0,i2 = i1->second.begin(); i2 != i1->second.end(); i2++,l2++) { + sprintf(lbuf2, "%d", l2+1); + retVal += "entryAttribs["+lbuf1+"]["+lbuf2+"][0] = new Array();\n"; + string l3keys = "entryAttribs["+lbuf1+"]["+lbuf2+"][0] = new Array("; + cout << "\t[ " << i2->first << " ]\n"; + for (l3=0,i3 = i2->second.begin(); i3 != i2->second.end(); i3++,l3++) { + cout << "\t\t" << i3->first << " = " << i3->second << "\n"; + } + } + } + } + return SOAP_OK; +} + + + + +main() { + + + int m, s; + mgr = new SWMgr(new MarkupFilterMgr()); + m = soap_bind("localhost", 18083, 100); + if (m < 0) { + soap_print_fault(stderr); + exit(-1); + } + fprintf(stderr, "Socket connection successful: master socket = %d\n", m); + for (int i = 1; ; i++) { + s = soap_accept(); + if (s < 0) { + soap_print_fault(stderr); + exit(-1); + } + fprintf(stderr, "%d: accepted connection from IP = %d.%d.%d.%d socket = %d", i, (soap_ip<<24)&0xFF, (soap_ip<<16)&0xFF, (soap_ip<<8)&0xFF, soap_ip&0xFF, s); + soap_serve(); // process RPC skeletons + fprintf(stderr, "request served\n"); + soap_end(); // clean up everything and close socket + } + delete mgr; +} + +#include "sword.nsmap" + |