aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShane Loretz <sloretz@osrfoundation.org>2017-06-02 07:28:20 -0700
committerShane Loretz <sloretz@osrfoundation.org>2017-06-02 07:28:20 -0700
commita1324f17fd186c22bda0fa44ad8eda50dec26e87 (patch)
tree89e10a8f3d300a77ad5930594d23c01288385218
parent56fa047ba9eada1bf72cd6f716f04515d3825c11 (diff)
downloadtinyobjloader-a1324f17fd186c22bda0fa44ad8eda50dec26e87.tar.gz
Replaced snprintf with stringstream
Deleted now unused TINYOBJ_SSCANF_BUFFER_SIZE
-rw-r--r--tiny_obj_loader.h59
1 files changed, 30 insertions, 29 deletions
diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h
index b70f30d..1a506da 100644
--- a/tiny_obj_loader.h
+++ b/tiny_obj_loader.h
@@ -44,6 +44,7 @@ THE SOFTWARE.
#define TINY_OBJ_LOADER_H_
#include <map>
+#include <sstream>
#include <string>
#include <vector>
@@ -364,7 +365,6 @@ namespace tinyobj {
MaterialReader::~MaterialReader() {}
-#define TINYOBJ_SSCANF_BUFFER_SIZE (4096)
struct vertex_index {
int v_idx, vt_idx, vn_idx;
@@ -1030,10 +1030,10 @@ void LoadMtl(std::map<std::string, int> *material_map,
has_tr = false;
// set new mtl name
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 7;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- material.name = namebuf;
+ std::stringstream ss;
+ ss << token;
+ material.name = ss.str();
continue;
}
@@ -1537,9 +1537,10 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
// use mtl
if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) {
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 7;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
+ std::stringstream ss;
+ ss << token;
+ std::string namebuf = ss.str();
int newMaterialId = -1;
if (material_map.find(namebuf) != material_map.end()) {
@@ -1653,10 +1654,10 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
shape = shape_t();
// @todo { multiple object name? }
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 2;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- name = std::string(namebuf);
+ std::stringstream ss;
+ ss << token;
+ name = ss.str();
continue;
}
@@ -1664,10 +1665,10 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
if (token[0] == 't' && IS_SPACE(token[1])) {
tag_t tag;
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 2;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- tag.name = std::string(namebuf);
+ std::stringstream ss;
+ ss << token;
+ tag.name = ss.str();
token += tag.name.size() + 1;
@@ -1688,10 +1689,9 @@ bool LoadObj(attrib_t *attrib, std::vector<shape_t> *shapes,
tag.stringValues.resize(static_cast<size_t>(ts.num_strings));
for (size_t i = 0; i < static_cast<size_t>(ts.num_strings); ++i) {
- char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE];
-
- std::snprintf(stringValueBuffer, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- tag.stringValues[i] = stringValueBuffer;
+ std::stringstream ss;
+ ss << token;
+ tag.stringValues[i] = ss.str();
token += tag.stringValues[i].size() + 1;
}
@@ -1830,9 +1830,10 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
// use mtl
if ((0 == strncmp(token, "usemtl", 6)) && IS_SPACE((token[6]))) {
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 7;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
+ std::stringstream ss;
+ ss << token;
+ std::string namebuf = ss.str();
int newMaterialId = -1;
if (material_map.find(namebuf) != material_map.end()) {
@@ -1846,7 +1847,7 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
}
if (callback.usemtl_cb) {
- callback.usemtl_cb(user_data, namebuf, material_id);
+ callback.usemtl_cb(user_data, namebuf.c_str(), material_id);
}
continue;
@@ -1940,10 +1941,11 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
// object name
if (token[0] == 'o' && IS_SPACE((token[1]))) {
// @todo { multiple object name? }
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 2;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- std::string object_name = std::string(namebuf);
+
+ std::stringstream ss;
+ ss << token;
+ std::string object_name = ss.str();
if (callback.object_cb) {
callback.object_cb(user_data, object_name.c_str());
@@ -1956,10 +1958,10 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
if (token[0] == 't' && IS_SPACE(token[1])) {
tag_t tag;
- char namebuf[TINYOBJ_SSCANF_BUFFER_SIZE];
token += 2;
- std::snprintf(namebuf, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- tag.name = std::string(namebuf);
+ std::stringstream ss;
+ ss << token;
+ tag.name = ss.str();
token += tag.name.size() + 1;
@@ -1980,10 +1982,9 @@ bool LoadObjWithCallback(std::istream &inStream, const callback_t &callback,
tag.stringValues.resize(static_cast<size_t>(ts.num_strings));
for (size_t i = 0; i < static_cast<size_t>(ts.num_strings); ++i) {
- char stringValueBuffer[TINYOBJ_SSCANF_BUFFER_SIZE];
-
- std::snprintf(stringValueBuffer, TINYOBJ_SSCANF_BUFFER_SIZE, "%s", token);
- tag.stringValues[i] = stringValueBuffer;
+ std::stringstream ss;
+ ss << token;
+ tag.stringValues[i] = ss.str();
token += tag.stringValues[i].size() + 1;
}