summaryrefslogtreecommitdiff
path: root/NT/src/xmlIO.h
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2014-01-20 15:39:23 +0000
committerTim Redfern <tim@eclectronics.org>2014-01-20 15:39:23 +0000
commit6ae7506f595d45e752ffd0cebb6392c707db2d3c (patch)
tree761d0cf5f42a1c14bb4ce9d2023ab65d59b77520 /NT/src/xmlIO.h
parent344e9b1a484b361cac7b07500cb7d2699cc93c29 (diff)
making json loader
Diffstat (limited to 'NT/src/xmlIO.h')
-rw-r--r--NT/src/xmlIO.h168
1 files changed, 0 insertions, 168 deletions
diff --git a/NT/src/xmlIO.h b/NT/src/xmlIO.h
deleted file mode 100644
index e2b9b35..0000000
--- a/NT/src/xmlIO.h
+++ /dev/null
@@ -1,168 +0,0 @@
-#ifndef __xmlIO_
-#define __xmlIO_
-
-//based on xmlSettings from openframeworks, manythanks!
-#include <string.h>
-#include <vector>
-#include "tinyxml.h"
-#include "utils.h"
-
-using namespace std;
-
-/*
- Q: what is the which = 0 argument?
-
- A: Glad you asked - most of the time you can ignore this and treat it as if it weren't there
- But if specified it selects the nth tag with the same tag name at the current root of the document
- Normally this just means the top level tags in the document - but if you use the pushTag and popTag
- you can temporarily set the root of the document to be that specified tag.
- The main idea is to allow you to have multiple tags with the same name.
-
- So here is an example without pushTag
-
- <time>102229</time> <-- which = 0
- <time>298292</time> <-- which = 1
- <time>393393</time> <-- which = 2
- <time>447373</time> <-- which = 3
-
- But if we wanted to group these into multiple <recording> tags and have multiple time values inside
- we can use push and pop to move into the recording tags as if they were the document root
-
- <recording> <-- we temporarily push into here with pushTag("recording", 0);
- <time>19222</time> <-- to set this we call setValue("time", 19222, 0); ( which = 0 )
- <time>23232</time> <-- to set this we call setValue("time", 23232, 1); ( which = 1 )
- </recording> <-- we pop back out here with popTag();
-
- <recording> <-- we temporarily push into here with pushTag("recording", 1); <-- now we use 1 to select the 2nd recording tag
- <time>33342</time> <-- setValue("time", 33342, 0); ( which = 0 )
- <time>22722</time> <-- setValue("time", 22722, 0); ( which = 1 )
- </recording>
-
-*/
-
-
-#define MAX_TAG_VALUE_LENGTH_IN_CHARS 1024
-
-class xmlIO{
-
- public:
- xmlIO();
- xmlIO(const string& xmlFile);
-
- ~xmlIO();
-
- void setVerbose(bool _verbose);
-
- bool loadFile(const string& xmlFile);
- bool saveFile(const string& xmlFile);
- bool saveFile();
-
- void clearTagContents(const string& tag, int which = 0);
- void removeTag(const string& tag, int which = 0);
-
- bool tagExists(const string& tag, int which = 0);
-
- // removes all tags from within either the whole document
- // or the tag you are currently at using pushTag
- void clear();
-
- int getValue(const string& tag, int defaultValue, int which = 0);
- double getValue(const string& tag, double defaultValue, int which = 0);
- string getValue(const string& tag, const string& defaultValue, int which = 0);
-
- int setValue(const string& tag, int value, int which = 0);
- int setValue(const string& tag, double value, int which = 0);
- int setValue(const string& tag, const string& value, int which = 0);
-
- //advanced
-
- //-- pushTag/popTag
- //pushing a tag moves you inside it which has the effect of
- //temporarily treating the tag you are in as the document root
- //all setValue, readValue and getValue commands are then be relative to the tag you pushed.
- //this can be used with addValue to create multiple tags of the same name within
- //the pushed tag - normally addValue only lets you create multiple tags of the same
- //at the top most level.
-
- bool pushTag(const string& tag, int which = 0);
- int popTag();
- int getPushLevel();
-
- //-- numTags
- //this only works for tags at the current root level
- //use pushTag and popTag to get number of tags whithin other tags
- // both getNumTags("PT"); and getNumTags("PT:X"); will just return the
- //number of <PT> tags at the current root level.
- int getNumTags(const string& tag);
-
- //-- addValue/addTag
- //adds a tag to the document even if a tag with the same name
- //already exists - returns an index which can then be used to
- //modify the tag by passing it as the last argument to setValue
-
- //-- important - this only works for top level tags
- // to put multiple tags inside other tags - use pushTag() and popTag()
-
- int addValue(const string& tag, int value);
- int addValue(const string& tag, double value);
- int addValue(const string& tag, const string& value);
-
- int addTag(const string& tag); //adds an empty tag at the current level
-
-
- // Attribute-related methods
- int addAttribute(const string& tag, const string& attribute, int value, int which = 0);
- int addAttribute(const string& tag, const string& attribute, double value, int which = 0);
- int addAttribute(const string& tag, const string& attribute, const string& value, int which = 0);
-
- int addAttribute(const string& tag, const string& attribute, int value);
- int addAttribute(const string& tag, const string& attribute, double value);
- int addAttribute(const string& tag, const string& attribute, const string& value);
-
- void removeAttribute(const string& tag, const string& attribute, int which = 0);
- void clearTagAttributes(const string& tag, int which = 0);
-
- int getNumAttributes(const string& tag, int which = 0);
-
- bool attributeExists(const string& tag, const string& attribute, int which = 0);
-
- bool getAttributeNames(const string& tag, vector<string>& outNames, int which = 0);
-
- int getAttribute(const string& tag, const string& attribute, int defaultValue, int which = 0);
- double getAttribute(const string& tag, const string& attribute, double defaultValue, int which = 0);
- string getAttribute(const string& tag, const string& attribute, const string& defaultValue, int which = 0);
-
- int setAttribute(const string& tag, const string& attribute, int value, int which = 0);
- int setAttribute(const string& tag, const string& attribute, double value, int which = 0);
- int setAttribute(const string& tag, const string& attribute, const string& value, int which = 0);
-
- int setAttribute(const string& tag, const string& attribute, int value);
- int setAttribute(const string& tag, const string& attribute, double value);
- int setAttribute(const string& tag, const string& attribute, const string& value);
-
- bool loadFromBuffer( string buffer );
- void copyXmlToString(string & str);
-
- TiXmlDocument doc;
- bool bDocLoaded;
-
- protected:
-
- TiXmlHandle storedHandle;
- int level;
-
-
- int writeTag(const string& tag, const string& valueString, int which = 0);
- bool readTag(const string& tag, TiXmlHandle& valHandle, int which = 0); // max 1024 chars...
-
-
- int writeAttribute(const string& tag, const string& attribute, const string& valueString, int which = 0);
-
- TiXmlElement* getElementForAttribute(const string& tag, int which);
- bool readIntAttribute(const string& tag, const string& attribute, int& valueString, int which);
- bool readDoubleAttribute(const string& tag, const string& attribute, double& outValue, int which);
- bool readStringAttribute(const string& tag, const string& attribute, string& outValue, int which);
-};
-
-#endif
-