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
Krishty 2021-05-04 22:03:44 +02:00
parent 7b6dab5e20
commit f3c18556d1
1 changed files with 8 additions and 8 deletions

View File

@ -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;
}