summaryrefslogtreecommitdiffstats
path: root/core/io/xml_parser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/io/xml_parser.cpp')
-rw-r--r--core/io/xml_parser.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/core/io/xml_parser.cpp b/core/io/xml_parser.cpp
index 150643b2e1..5d3e4f61ad 100644
--- a/core/io/xml_parser.cpp
+++ b/core/io/xml_parser.cpp
@@ -392,7 +392,8 @@ void XMLParser::_bind_methods() {
ObjectTypeDB::bind_method(_MD("get_current_line"),&XMLParser::get_current_line);
ObjectTypeDB::bind_method(_MD("skip_section"),&XMLParser::skip_section);
ObjectTypeDB::bind_method(_MD("seek"),&XMLParser::seek);
- ObjectTypeDB::bind_method(_MD("open"),&XMLParser::open);
+ ObjectTypeDB::bind_method(_MD("open","file"),&XMLParser::open);
+ ObjectTypeDB::bind_method(_MD("open_buffer","buffer"),&XMLParser::open_buffer);
BIND_CONSTANT( NODE_NONE );
BIND_CONSTANT( NODE_ELEMENT );
@@ -493,6 +494,19 @@ bool XMLParser::is_empty() const {
return node_empty;
}
+Error XMLParser::open_buffer(const Vector<uint8_t>& p_buffer) {
+
+ ERR_FAIL_COND_V(p_buffer.size()==0,ERR_INVALID_DATA);
+
+ length = p_buffer.size();
+ data = memnew_arr( char, length+1);
+ copymem(data,p_buffer.ptr(),length);
+ data[length]=0;
+ P=data;
+ return OK;
+
+}
+
Error XMLParser::open(const String& p_path) {
Error err;