From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/Wasabi/Lib/fileio.mi | 130 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 Src/Wasabi/Lib/fileio.mi (limited to 'Src/Wasabi/Lib/fileio.mi') diff --git a/Src/Wasabi/Lib/fileio.mi b/Src/Wasabi/Lib/fileio.mi new file mode 100644 index 00000000..0f8d3d32 --- /dev/null +++ b/Src/Wasabi/Lib/fileio.mi @@ -0,0 +1,130 @@ +//---------------------------------------------------------------------------------------------------------------- +// fileio.mi +// +// standard handles for file input and output (only xml parsing atm) +//---------------------------------------------------------------------------------------------------------------- + +#ifndef __FILEIO_MI +#define __FILEIO_MI + + +extern class @{836F8B2E-E0D1-4db4-937F-0D0A04C8DCD1}@ Object &File; +extern class @{417FFB69-987F-4be8-8D87-D9965EEEC868}@ File &XmlDoc; + + + +//***************************************************************************** +// File CLASS +//***************************************************************************** +/** + File Class. + + @short Root Object for handling files + @author Nullsoft Inc. + @ver 1.0 +*/ + +extern File.load (String path); // !Always call this first! +extern boolean File.exists (); +extern int File.getSize (); + + +//***************************************************************************** +// XmlDoc CLASS +//***************************************************************************** +/** + XmlDoc Class. + + @short Root Object for handling xml files + @author Nullsoft Inc. + @ver 1.0 +*/ + + +/** + parser_addCallback() + + Add a XML tag to the global callback list for this file. Ensure to load the file first! + You can call this function more than once in order to add multiple callbacks (not implemented yet). + Use / for subtags and * as wildchar. + Example: +
+ + + + + + + +
+ in order to read all items listed under cfg add this callback: + + Global XmlDoc myDoc; + + System.onScriptLoaded() + { + myDoc = new XmlDoc; + myDoc.load("C:\mycfg.xml"); + myDoc.parser_addCallback("main/cfg/*"); + myDoc.parser_addCallback("main/otherstuff"); + myDoc.parser_start(); + myDoc.parser_destroy(); + } + + Note: myDoc.parser_addCallback("*"); will parse everything. + + @param any XML tag you want a callback for +*/ +extern XmlDoc.parser_addCallback (String section); + + +/** + parser_start() + + Start parsing the XmlDoc. +*/ +extern XmlDoc.parser_start (); + + +/** + parser_onCallback() + + Hookable. Called everytime an opening XML tag with a added callback is found. + opening XML tags: or + + @param XML path to the XML tag that triggered the callback (uppercase!) + @param name of the XML tag that triggered the callback + @param List that holds the paramnames + @param List that holds the paramvalues (sorted in the same way as List paramname) +*/ +extern String XmlDoc.parser_onCallback (String xmlpath, String xmltag, list paramname, list paramvalue); + + +/** + parser_onCloseCallback() + + Hookable. Called everytime a closing XML tag with an added callback is found. + closing XML tag: or + + @param XML tag that triggered the callback +*/ +extern String XmlDoc.parser_onCloseCallback (String xmlpath, String xmltag); + + +/** + parser_onError() + + due to some API changes filename and incpath will hold an empty string since winamp 5.56 +*/ +extern String XmlDoc.parser_onError (String filename, int linenum, String incpath, int errcode, String errstr); + + +/** + parser_destroy() + + Always call this if you are done with parsing, or if you want to reset your callbacks. +*/ +extern String XmlDoc.parser_destroy (); + + +#endif \ No newline at end of file -- cgit