diff options
author | Jean-Francois Mauguit <jfmauguit@mac.com> | 2024-09-24 09:03:25 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-24 09:03:25 -0400 |
commit | bab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Wasabi/api/script/objects/sxmldoc.h | |
parent | 4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff) | |
parent | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff) | |
download | winamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz |
Merge pull request #5 from WinampDesktop/community
Merge to main
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 |