Browse Source

Use Corrade String[View] in some ConfigurationValue specializations.

These headers are included quite often and because
<Corrade/Utility/StlForwardString.h> expands to the whole <string>, it
has quite a significant impact.

Other cases like Math/ConfigurationValue.h are not changed at the
moment, as that header is only included together with Utility::Arguments
or Utility::Configuration -- and these classes are still STL-heavy, so
avoiding std::string usage in just the ConfigurationValue
specializations doesn't help anything at the moment.
pull/592/head
Hugo Amiard 4 years ago committed by Vladimír Vondruš
parent
commit
8b45a5170c
  1. 10
      src/Magnum/Mesh.cpp
  2. 9
      src/Magnum/Mesh.h
  3. 10
      src/Magnum/PixelFormat.cpp
  4. 9
      src/Magnum/PixelFormat.h
  5. 6
      src/Magnum/VertexFormat.cpp
  6. 5
      src/Magnum/VertexFormat.h

10
src/Magnum/Mesh.cpp

@ -25,7 +25,7 @@
#include "Mesh.h"
#include <string>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/ArrayView.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h>
@ -105,28 +105,28 @@ UnsignedInt meshIndexTypeSize(const MeshIndexType type) {
namespace Corrade { namespace Utility {
std::string ConfigurationValue<Magnum::MeshPrimitive>::toString(Magnum::MeshPrimitive value, ConfigurationValueFlags) {
Containers::String ConfigurationValue<Magnum::MeshPrimitive>::toString(Magnum::MeshPrimitive value, ConfigurationValueFlags) {
if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::MeshPrimitiveNames))
return Magnum::MeshPrimitiveNames[Magnum::UnsignedInt(value) - 1];
return {};
}
Magnum::MeshPrimitive ConfigurationValue<Magnum::MeshPrimitive>::fromString(const std::string& stringValue, ConfigurationValueFlags) {
Magnum::MeshPrimitive ConfigurationValue<Magnum::MeshPrimitive>::fromString(Containers::StringView stringValue, ConfigurationValueFlags) {
for(std::size_t i = 0; i != Containers::arraySize(Magnum::MeshPrimitiveNames); ++i)
if(stringValue == Magnum::MeshPrimitiveNames[i]) return Magnum::MeshPrimitive(i + 1);
return {};
}
std::string ConfigurationValue<Magnum::MeshIndexType>::toString(Magnum::MeshIndexType value, ConfigurationValueFlags) {
Containers::String ConfigurationValue<Magnum::MeshIndexType>::toString(Magnum::MeshIndexType value, ConfigurationValueFlags) {
if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::MeshIndexTypeNames))
return Magnum::MeshIndexTypeNames[Magnum::UnsignedInt(value) - 1];
return {};
}
Magnum::MeshIndexType ConfigurationValue<Magnum::MeshIndexType>::fromString(const std::string& stringValue, ConfigurationValueFlags) {
Magnum::MeshIndexType ConfigurationValue<Magnum::MeshIndexType>::fromString(Containers::StringView stringValue, ConfigurationValueFlags) {
for(std::size_t i = 0; i != Containers::arraySize(Magnum::MeshIndexTypeNames); ++i)
if(stringValue == Magnum::MeshIndexTypeNames[i]) return Magnum::MeshIndexType(i + 1);

9
src/Magnum/Mesh.h

@ -30,7 +30,6 @@
*/
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/StlForwardString.h>
#include "Magnum/Magnum.h"
#include "Magnum/visibility.h"
@ -365,14 +364,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::MeshPrimitive> {
*
* If the value is invalid, returns empty string.
*/
static std::string toString(Magnum::MeshPrimitive value, ConfigurationValueFlags);
static Containers::String toString(Magnum::MeshPrimitive value, ConfigurationValueFlags);
/**
* @brief Reads enum value as string
*
* If the value is invalid, returns a zero (invalid) primitive.
*/
static Magnum::MeshPrimitive fromString(const std::string& stringValue, ConfigurationValueFlags);
static Magnum::MeshPrimitive fromString(Containers::StringView stringValue, ConfigurationValueFlags);
};
/** @configurationvalue{Magnum::MeshIndexType} */
@ -384,14 +383,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::MeshIndexType> {
*
* If the value is invalid, returns empty string.
*/
static std::string toString(Magnum::MeshIndexType value, ConfigurationValueFlags);
static Containers::String toString(Magnum::MeshIndexType value, ConfigurationValueFlags);
/**
* @brief Read enum value as string
*
* If the value is invalid, returns a zero (invalid) type.
*/
static Magnum::MeshIndexType fromString(const std::string& stringValue, ConfigurationValueFlags);
static Magnum::MeshIndexType fromString(Containers::StringView stringValue, ConfigurationValueFlags);
};
}}

10
src/Magnum/PixelFormat.cpp

@ -25,7 +25,7 @@
#include "PixelFormat.h"
#include <string>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/ArrayView.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h>
@ -556,14 +556,14 @@ Debug& operator<<(Debug& debug, const CompressedPixelFormat value) {
namespace Corrade { namespace Utility {
std::string ConfigurationValue<Magnum::PixelFormat>::toString(Magnum::PixelFormat value, ConfigurationValueFlags) {
Containers::String ConfigurationValue<Magnum::PixelFormat>::toString(Magnum::PixelFormat value, ConfigurationValueFlags) {
if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::PixelFormatNames))
return Magnum::PixelFormatNames[Magnum::UnsignedInt(value) - 1];
return {};
}
Magnum::PixelFormat ConfigurationValue<Magnum::PixelFormat>::fromString(const std::string& stringValue, ConfigurationValueFlags) {
Magnum::PixelFormat ConfigurationValue<Magnum::PixelFormat>::fromString(Containers::StringView stringValue, ConfigurationValueFlags) {
/** @todo This is extremely slow with >100 values. Do a binary search on a
sorted index list instead (extracted into a common utility) */
for(std::size_t i = 0; i != Containers::arraySize(Magnum::PixelFormatNames); ++i)
@ -572,14 +572,14 @@ Magnum::PixelFormat ConfigurationValue<Magnum::PixelFormat>::fromString(const st
return {};
}
std::string ConfigurationValue<Magnum::CompressedPixelFormat>::toString(Magnum::CompressedPixelFormat value, ConfigurationValueFlags) {
Containers::String ConfigurationValue<Magnum::CompressedPixelFormat>::toString(Magnum::CompressedPixelFormat value, ConfigurationValueFlags) {
if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::CompressedPixelFormatNames))
return Magnum::CompressedPixelFormatNames[Magnum::UnsignedInt(value) - 1];
return {};
}
Magnum::CompressedPixelFormat ConfigurationValue<Magnum::CompressedPixelFormat>::fromString(const std::string& stringValue, ConfigurationValueFlags) {
Magnum::CompressedPixelFormat ConfigurationValue<Magnum::CompressedPixelFormat>::fromString(Containers::StringView stringValue, ConfigurationValueFlags) {
/** @todo This is extremely slow with >100 values. Do a binary search on a
sorted index list instead (extracted into a common utility) */
for(std::size_t i = 0; i != Containers::arraySize(Magnum::CompressedPixelFormatNames); ++i)

9
src/Magnum/PixelFormat.h

@ -30,7 +30,6 @@
*/
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/StlForwardString.h>
#include "Magnum/Magnum.h"
#include "Magnum/visibility.h"
@ -2491,14 +2490,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::PixelFormat> {
*
* If the value is invalid, returns empty string.
*/
static std::string toString(Magnum::PixelFormat value, ConfigurationValueFlags);
static Containers::String toString(Magnum::PixelFormat value, ConfigurationValueFlags);
/**
* @brief Reads enum value as string
*
* If the value is invalid, returns a zero (invalid) format.
*/
static Magnum::PixelFormat fromString(const std::string& stringValue, ConfigurationValueFlags);
static Magnum::PixelFormat fromString(Containers::StringView stringValue, ConfigurationValueFlags);
};
/**
@ -2513,14 +2512,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::CompressedPixelFormat
*
* If the value is invalid, returns empty string.
*/
static std::string toString(Magnum::CompressedPixelFormat value, ConfigurationValueFlags);
static Containers::String toString(Magnum::CompressedPixelFormat value, ConfigurationValueFlags);
/**
* @brief Read enum value as string
*
* If the value is invalid, returns a zero (invalid) format.
*/
static Magnum::CompressedPixelFormat fromString(const std::string& stringValue, ConfigurationValueFlags);
static Magnum::CompressedPixelFormat fromString(Containers::StringView stringValue, ConfigurationValueFlags);
};
}}

6
src/Magnum/VertexFormat.cpp

@ -25,7 +25,7 @@
#include "VertexFormat.h"
#include <string>
#include <Corrade/Containers/String.h>
#include <Corrade/Containers/ArrayView.h>
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h>
@ -930,14 +930,14 @@ Debug& operator<<(Debug& debug, const VertexFormat value) {
namespace Corrade { namespace Utility {
std::string ConfigurationValue<Magnum::VertexFormat>::toString(Magnum::VertexFormat value, ConfigurationValueFlags) {
Containers::String ConfigurationValue<Magnum::VertexFormat>::toString(Magnum::VertexFormat value, ConfigurationValueFlags) {
if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::VertexFormatNames))
return Magnum::VertexFormatNames[Magnum::UnsignedInt(value) - 1];
return {};
}
Magnum::VertexFormat ConfigurationValue<Magnum::VertexFormat>::fromString(const std::string& stringValue, ConfigurationValueFlags) {
Magnum::VertexFormat ConfigurationValue<Magnum::VertexFormat>::fromString(Containers::StringView stringValue, ConfigurationValueFlags) {
for(std::size_t i = 0; i != Containers::arraySize(Magnum::VertexFormatNames); ++i)
if(stringValue == Magnum::VertexFormatNames[i]) return Magnum::VertexFormat(i + 1);

5
src/Magnum/VertexFormat.h

@ -30,7 +30,6 @@
*/
#include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/StlForwardString.h>
#include "Magnum/Magnum.h"
#include "Magnum/visibility.h"
@ -1473,14 +1472,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::VertexFormat> {
*
* If the value is invalid, returns empty string.
*/
static std::string toString(Magnum::VertexFormat value, ConfigurationValueFlags);
static Containers::String toString(Magnum::VertexFormat value, ConfigurationValueFlags);
/**
* @brief Read enum value as string
*
* If the value is invalid, returns a zero (invalid) format.
*/
static Magnum::VertexFormat fromString(const std::string& stringValue, ConfigurationValueFlags);
static Magnum::VertexFormat fromString(Containers::StringView stringValue, ConfigurationValueFlags);
};
}}

Loading…
Cancel
Save