summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2016-02-03 11:21:52 +0100
committerRémi Verschelde <remi@verschelde.fr>2016-02-03 11:21:52 +0100
commit7cb930dbede1b9c21cf138e4a38ebb9e3dbd099f (patch)
tree2eb28d5e94d962558c4dd01809ac45ede973f4bf /core
parentfc65a57ff54d40727865ba117ed9f085bc7207fb (diff)
parent2447c3171ffae5d8ecf34883475907c8b20c2f9c (diff)
Merge pull request #3502 from trtstm/csv
Added delimiter to File.get_csv_line
Diffstat (limited to 'core')
-rw-r--r--core/bind/core_bind.cpp6
-rw-r--r--core/bind/core_bind.h2
-rw-r--r--core/os/file_access.cpp6
-rw-r--r--core/os/file_access.h2
4 files changed, 9 insertions, 7 deletions
diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp
index 522c42928c..b291ee396b 100644
--- a/core/bind/core_bind.cpp
+++ b/core/bind/core_bind.cpp
@@ -1321,9 +1321,9 @@ String _File::get_line() const{
}
-Vector<String> _File::get_csv_line() const {
+Vector<String> _File::get_csv_line(String delim) const {
ERR_FAIL_COND_V(!f,Vector<String>());
- return f->get_csv_line();
+ return f->get_csv_line(delim);
}
/**< use this for files WRITTEN in _big_ endian machines (ie, amiga/mac)
@@ -1506,7 +1506,7 @@ void _File::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_endian_swap","enable"),&_File::set_endian_swap);
ObjectTypeDB::bind_method(_MD("get_error:Error"),&_File::get_error);
ObjectTypeDB::bind_method(_MD("get_var"),&_File::get_var);
- ObjectTypeDB::bind_method(_MD("get_csv_line"),&_File::get_csv_line);
+ ObjectTypeDB::bind_method(_MD("get_csv_line","delim"),&_File::get_csv_line,DEFVAL(","));
ObjectTypeDB::bind_method(_MD("store_8","value"),&_File::store_8);
ObjectTypeDB::bind_method(_MD("store_16","value"),&_File::store_16);
diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h
index cb8fba3dcd..30cc93fa11 100644
--- a/core/bind/core_bind.h
+++ b/core/bind/core_bind.h
@@ -392,7 +392,7 @@ public:
virtual void store_pascal_string(const String& p_string);
virtual String get_pascal_string();
- Vector<String> get_csv_line() const;
+ Vector<String> get_csv_line(String delim=",") const;
void store_buffer(const DVector<uint8_t>& p_buffer); ///< store an array of bytes
diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp
index d82d0b63c5..68c9dee84d 100644
--- a/core/os/file_access.cpp
+++ b/core/os/file_access.cpp
@@ -277,7 +277,9 @@ String FileAccess::get_line() const {
return String::utf8(line.get_data());
}
-Vector<String> FileAccess::get_csv_line() const {
+Vector<String> FileAccess::get_csv_line(String delim) const {
+
+ ERR_FAIL_COND_V(delim.length()!=1,Vector<String>());
String l;
int qc=0;
@@ -303,7 +305,7 @@ Vector<String> FileAccess::get_csv_line() const {
CharType s[2]={0,0};
- if (!in_quote && c==',') {
+ if (!in_quote && c==delim[0]) {
strings.push_back(current);
current=String();
} else if (c=='"') {
diff --git a/core/os/file_access.h b/core/os/file_access.h
index 51cf839117..3249e21ffb 100644
--- a/core/os/file_access.h
+++ b/core/os/file_access.h
@@ -102,7 +102,7 @@ public:
virtual int get_buffer(uint8_t *p_dst,int p_length) const; ///< get an array of bytes
virtual String get_line() const;
- virtual Vector<String> get_csv_line() const;
+ virtual Vector<String> get_csv_line(String delim=",") const;
/**< use this for files WRITTEN in _big_ endian machines (ie, amiga/mac)
* It's not about the current CPU type but file formats.