reduced OpenGEX string bloat
The OpenGEX importer defined a few global std::string constants, only to convert them back to C strings on use. This commit defines them as C strings from the beginning. strncmp() was used to compare these strings to other strings, but the length limit was set to string length, which made it equivalent to strcmp(), just slower. Fixed that as well.pull/3878/head
parent
7b6dab5e20
commit
f3c18556d1
|
@ -735,22 +735,22 @@ enum MeshAttribute {
|
|||
TexCoord
|
||||
};
|
||||
|
||||
static const std::string PosToken = "position";
|
||||
static const std::string ColToken = "color";
|
||||
static const std::string NormalToken = "normal";
|
||||
static const std::string TexCoordToken = "texcoord";
|
||||
constexpr auto PosToken = "position";
|
||||
constexpr auto ColToken = "color";
|
||||
constexpr auto NormalToken = "normal";
|
||||
constexpr auto TexCoordToken = "texcoord";
|
||||
|
||||
//------------------------------------------------------------------------------------------------
|
||||
static MeshAttribute getAttributeByName(const char *attribName) {
|
||||
ai_assert(nullptr != attribName);
|
||||
|
||||
if (0 == strncmp(PosToken.c_str(), attribName, PosToken.size())) {
|
||||
if (0 == strcmp(PosToken, attribName)) {
|
||||
return Position;
|
||||
} else if (0 == strncmp(ColToken.c_str(), attribName, ColToken.size())) {
|
||||
} else if (0 == strcmp(ColToken, attribName)) {
|
||||
return Color;
|
||||
} else if (0 == strncmp(NormalToken.c_str(), attribName, NormalToken.size())) {
|
||||
} else if (0 == strcmp(NormalToken, attribName)) {
|
||||
return Normal;
|
||||
} else if (0 == strncmp(TexCoordToken.c_str(), attribName, TexCoordToken.size())) {
|
||||
} else if (0 == strcmp(TexCoordToken, attribName)) {
|
||||
return TexCoord;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue