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 "Mesh.h"
#include <string> #include <Corrade/Containers/String.h>
#include <Corrade/Containers/ArrayView.h> #include <Corrade/Containers/ArrayView.h>
#include <Corrade/Utility/Assert.h> #include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h> #include <Corrade/Utility/Debug.h>
@ -105,28 +105,28 @@ UnsignedInt meshIndexTypeSize(const MeshIndexType type) {
namespace Corrade { namespace Utility { 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)) if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::MeshPrimitiveNames))
return Magnum::MeshPrimitiveNames[Magnum::UnsignedInt(value) - 1]; return Magnum::MeshPrimitiveNames[Magnum::UnsignedInt(value) - 1];
return {}; 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) for(std::size_t i = 0; i != Containers::arraySize(Magnum::MeshPrimitiveNames); ++i)
if(stringValue == Magnum::MeshPrimitiveNames[i]) return Magnum::MeshPrimitive(i + 1); if(stringValue == Magnum::MeshPrimitiveNames[i]) return Magnum::MeshPrimitive(i + 1);
return {}; 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)) if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::MeshIndexTypeNames))
return Magnum::MeshIndexTypeNames[Magnum::UnsignedInt(value) - 1]; return Magnum::MeshIndexTypeNames[Magnum::UnsignedInt(value) - 1];
return {}; 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) for(std::size_t i = 0; i != Containers::arraySize(Magnum::MeshIndexTypeNames); ++i)
if(stringValue == Magnum::MeshIndexTypeNames[i]) return Magnum::MeshIndexType(i + 1); 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/Assert.h>
#include <Corrade/Utility/StlForwardString.h>
#include "Magnum/Magnum.h" #include "Magnum/Magnum.h"
#include "Magnum/visibility.h" #include "Magnum/visibility.h"
@ -365,14 +364,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::MeshPrimitive> {
* *
* If the value is invalid, returns empty string. * 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 * @brief Reads enum value as string
* *
* If the value is invalid, returns a zero (invalid) primitive. * 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} */ /** @configurationvalue{Magnum::MeshIndexType} */
@ -384,14 +383,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::MeshIndexType> {
* *
* If the value is invalid, returns empty string. * 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 * @brief Read enum value as string
* *
* If the value is invalid, returns a zero (invalid) type. * 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 "PixelFormat.h"
#include <string> #include <Corrade/Containers/String.h>
#include <Corrade/Containers/ArrayView.h> #include <Corrade/Containers/ArrayView.h>
#include <Corrade/Utility/Assert.h> #include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h> #include <Corrade/Utility/Debug.h>
@ -556,14 +556,14 @@ Debug& operator<<(Debug& debug, const CompressedPixelFormat value) {
namespace Corrade { namespace Utility { 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)) if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::PixelFormatNames))
return Magnum::PixelFormatNames[Magnum::UnsignedInt(value) - 1]; return Magnum::PixelFormatNames[Magnum::UnsignedInt(value) - 1];
return {}; 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 /** @todo This is extremely slow with >100 values. Do a binary search on a
sorted index list instead (extracted into a common utility) */ sorted index list instead (extracted into a common utility) */
for(std::size_t i = 0; i != Containers::arraySize(Magnum::PixelFormatNames); ++i) 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 {}; 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)) if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::CompressedPixelFormatNames))
return Magnum::CompressedPixelFormatNames[Magnum::UnsignedInt(value) - 1]; return Magnum::CompressedPixelFormatNames[Magnum::UnsignedInt(value) - 1];
return {}; 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 /** @todo This is extremely slow with >100 values. Do a binary search on a
sorted index list instead (extracted into a common utility) */ sorted index list instead (extracted into a common utility) */
for(std::size_t i = 0; i != Containers::arraySize(Magnum::CompressedPixelFormatNames); ++i) 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/Assert.h>
#include <Corrade/Utility/StlForwardString.h>
#include "Magnum/Magnum.h" #include "Magnum/Magnum.h"
#include "Magnum/visibility.h" #include "Magnum/visibility.h"
@ -2491,14 +2490,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::PixelFormat> {
* *
* If the value is invalid, returns empty string. * 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 * @brief Reads enum value as string
* *
* If the value is invalid, returns a zero (invalid) format. * 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. * 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 * @brief Read enum value as string
* *
* If the value is invalid, returns a zero (invalid) format. * 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 "VertexFormat.h"
#include <string> #include <Corrade/Containers/String.h>
#include <Corrade/Containers/ArrayView.h> #include <Corrade/Containers/ArrayView.h>
#include <Corrade/Utility/Assert.h> #include <Corrade/Utility/Assert.h>
#include <Corrade/Utility/Debug.h> #include <Corrade/Utility/Debug.h>
@ -930,14 +930,14 @@ Debug& operator<<(Debug& debug, const VertexFormat value) {
namespace Corrade { namespace Utility { 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)) if(Magnum::UnsignedInt(value) - 1 < Containers::arraySize(Magnum::VertexFormatNames))
return Magnum::VertexFormatNames[Magnum::UnsignedInt(value) - 1]; return Magnum::VertexFormatNames[Magnum::UnsignedInt(value) - 1];
return {}; 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) for(std::size_t i = 0; i != Containers::arraySize(Magnum::VertexFormatNames); ++i)
if(stringValue == Magnum::VertexFormatNames[i]) return Magnum::VertexFormat(i + 1); 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/Assert.h>
#include <Corrade/Utility/StlForwardString.h>
#include "Magnum/Magnum.h" #include "Magnum/Magnum.h"
#include "Magnum/visibility.h" #include "Magnum/visibility.h"
@ -1473,14 +1472,14 @@ template<> struct MAGNUM_EXPORT ConfigurationValue<Magnum::VertexFormat> {
* *
* If the value is invalid, returns empty string. * 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 * @brief Read enum value as string
* *
* If the value is invalid, returns a zero (invalid) format. * 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