diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/script/objects/sxmldoc.h | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Wasabi/api/script/objects/sxmldoc.h')
-rw-r--r-- | Src/Wasabi/api/script/objects/sxmldoc.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Src/Wasabi/api/script/objects/sxmldoc.h b/Src/Wasabi/api/script/objects/sxmldoc.h new file mode 100644 index 00000000..cfee2551 --- /dev/null +++ b/Src/Wasabi/api/script/objects/sxmldoc.h @@ -0,0 +1,76 @@ +#ifndef __SXMLDOC_H +#define __SXMLDOC_H + +class SXmlDoc; + +#include <api/script/objects/sfile.h> + +#include <api/script/script.h> +#include <api/script/objcontroller.h> +#include <api/script/objects/rootobj.h> +#include <api/script/objects/rootobject.h> + +#include <api/xml/XMLAutoInclude.h> + +#define SXMLDOC_SCRIPTPARENT SFile + +class XmlDocScriptController : public fileScriptController { + public: + + virtual const wchar_t *getClassName(); + virtual const wchar_t *getAncestorClassName(); + virtual ScriptObjectController *getAncestorController(); + virtual int getNumFunctions(); + virtual const function_descriptor_struct *getExportedFunctions(); + virtual GUID getClassGuid(); + virtual ScriptObject *instantiate(); + virtual void destroy(ScriptObject *o); + virtual void *encapsulate(ScriptObject *o); + virtual void deencapsulate(void *o); + + private: + + static function_descriptor_struct exportedFunction[]; + +}; + +class SXmlDocParserCallback : public ifc_xmlreadercallbackI +{ + void xmlReaderOnStartElementCallback(const wchar_t *xmlpath, const wchar_t *xmltag, ifc_xmlreaderparams *params); + void xmlReaderOnEndElementCallback(const wchar_t *xmlpath, const wchar_t *xmltag); + void xmlReaderOnError(int linenum, int errcode, const wchar_t *errstr); + +public: SXmlDoc *parent; // reference to the xmldoc that triggered this callback +}; + +extern XmlDocScriptController *xmlDocController; + +class SXmlDoc : public SXMLDOC_SCRIPTPARENT +{ +public: + SXmlDoc(); + virtual ~SXmlDoc(); + + void addParserCallback(const wchar_t *b); + void startParsing(); + void destroyParser(); + void elementCallback(const wchar_t *xmltag); + +private: + obj_xml *myXmlParser; + SXmlDocParserCallback myXmlParserCallback; + waServiceFactory *myXmlParserFactory; + + void createParser(); + +public: + static scriptVar script_vcpu_addParserCallback(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar fn); + static scriptVar script_vcpu_parse(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_destroyParser(SCRIPT_FUNCTION_PARAMS, ScriptObject *o); + static scriptVar script_vcpu_onXmlParserCallback(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar xmlpath, scriptVar xmltag, scriptVar param, scriptVar paramvalue); + static scriptVar script_vcpu_onXmlParserError(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar filename, scriptVar linenum, scriptVar incpath, scriptVar errcode, scriptVar errstr); + static scriptVar script_vcpu_onXmlParserEndCallback(SCRIPT_FUNCTION_PARAMS, ScriptObject *o, scriptVar xmlpath, scriptVar xmltag); + +}; + +#endif |