1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-06-25 15:11:33 +00:00

Replace reference to const std::string by std::string_view for navmeshdb related arguments

This commit is contained in:
elsid 2022-02-18 21:45:50 +01:00
parent 52b3a87dae
commit 67741402b5
No known key found for this signature in database
GPG key ID: B845CB9FEE18AB40
6 changed files with 28 additions and 29 deletions

View file

@ -24,6 +24,7 @@
#include <utility> #include <utility>
#include <vector> #include <vector>
#include <random> #include <random>
#include <string_view>
namespace NavMeshTool namespace NavMeshTool
{ {
@ -81,7 +82,7 @@ namespace NavMeshTool
return DetourNavigator::resolveMeshSource(mDb, source, mNextShapeId); return DetourNavigator::resolveMeshSource(mDb, source, mNextShapeId);
} }
std::optional<NavMeshTileInfo> find(const std::string& worldspace, const TilePosition &tilePosition, std::optional<NavMeshTileInfo> find(std::string_view worldspace, const TilePosition &tilePosition,
const std::vector<std::byte> &input) override const std::vector<std::byte> &input) override
{ {
std::optional<NavMeshTileInfo> result; std::optional<NavMeshTileInfo> result;
@ -98,7 +99,7 @@ namespace NavMeshTool
void ignore() override { report(); } void ignore() override { report(); }
void insert(const std::string& worldspace, const TilePosition& tilePosition, std::int64_t version, void insert(std::string_view worldspace, const TilePosition& tilePosition, std::int64_t version,
const std::vector<std::byte>& input, PreparedNavMeshData& data) override const std::vector<std::byte>& input, PreparedNavMeshData& data) override
{ {
data.mUserId = static_cast<unsigned>(mNextTileId); data.mUserId = static_cast<unsigned>(mNextTileId);

View file

@ -4,7 +4,6 @@
#include <osg/Vec3f> #include <osg/Vec3f>
#include <cstddef> #include <cstddef>
#include <string_view>
namespace DetourNavigator namespace DetourNavigator
{ {

View file

@ -36,12 +36,12 @@ namespace DetourNavigator
virtual std::int64_t resolveMeshSource(const MeshSource& source) = 0; virtual std::int64_t resolveMeshSource(const MeshSource& source) = 0;
virtual std::optional<NavMeshTileInfo> find(const std::string& worldspace, const TilePosition& tilePosition, virtual std::optional<NavMeshTileInfo> find(std::string_view worldspace, const TilePosition& tilePosition,
const std::vector<std::byte>& input) = 0; const std::vector<std::byte>& input) = 0;
virtual void ignore() = 0; virtual void ignore() = 0;
virtual void insert(const std::string& worldspace, const TilePosition& tilePosition, virtual void insert(std::string_view worldspace, const TilePosition& tilePosition,
std::int64_t version, const std::vector<std::byte>& input, PreparedNavMeshData& data) = 0; std::int64_t version, const std::vector<std::byte>& input, PreparedNavMeshData& data) = 0;
virtual void update(std::int64_t tileId, std::int64_t version, PreparedNavMeshData& data) = 0; virtual void update(std::int64_t tileId, std::int64_t version, PreparedNavMeshData& data) = 0;

View file

@ -10,7 +10,6 @@
#include <sqlite3.h> #include <sqlite3.h>
#include <cstddef> #include <cstddef>
#include <string>
#include <string_view> #include <string_view>
#include <vector> #include <vector>
@ -136,7 +135,7 @@ namespace DetourNavigator
return tileId; return tileId;
} }
std::optional<Tile> NavMeshDb::findTile(const std::string& worldspace, std::optional<Tile> NavMeshDb::findTile(std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input) const TilePosition& tilePosition, const std::vector<std::byte>& input)
{ {
Tile result; Tile result;
@ -147,7 +146,7 @@ namespace DetourNavigator
return result; return result;
} }
std::optional<TileData> NavMeshDb::getTileData(const std::string& worldspace, std::optional<TileData> NavMeshDb::getTileData(std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input) const TilePosition& tilePosition, const std::vector<std::byte>& input)
{ {
TileData result; TileData result;
@ -159,7 +158,7 @@ namespace DetourNavigator
return result; return result;
} }
int NavMeshDb::insertTile(TileId tileId, const std::string& worldspace, const TilePosition& tilePosition, int NavMeshDb::insertTile(TileId tileId, std::string_view worldspace, const TilePosition& tilePosition,
TileVersion version, const std::vector<std::byte>& input, const std::vector<std::byte>& data) TileVersion version, const std::vector<std::byte>& input, const std::vector<std::byte>& data)
{ {
const std::vector<std::byte> compressedInput = Misc::compress(input); const std::vector<std::byte> compressedInput = Misc::compress(input);
@ -180,7 +179,7 @@ namespace DetourNavigator
return shapeId; return shapeId;
} }
std::optional<ShapeId> NavMeshDb::findShapeId(const std::string& name, ShapeType type, std::optional<ShapeId> NavMeshDb::findShapeId(std::string_view name, ShapeType type,
const Sqlite3::ConstBlob& hash) const Sqlite3::ConstBlob& hash)
{ {
ShapeId shapeId; ShapeId shapeId;
@ -189,7 +188,7 @@ namespace DetourNavigator
return shapeId; return shapeId;
} }
int NavMeshDb::insertShape(ShapeId shapeId, const std::string& name, ShapeType type, int NavMeshDb::insertShape(ShapeId shapeId, std::string_view name, ShapeType type,
const Sqlite3::ConstBlob& hash) const Sqlite3::ConstBlob& hash)
{ {
return execute(*mDb, mInsertShape, shapeId, name, type, hash); return execute(*mDb, mInsertShape, shapeId, name, type, hash);
@ -207,7 +206,7 @@ namespace DetourNavigator
return findTileQuery; return findTileQuery;
} }
void FindTile::bind(sqlite3& db, sqlite3_stmt& statement, const std::string& worldspace, void FindTile::bind(sqlite3& db, sqlite3_stmt& statement, std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input) const TilePosition& tilePosition, const std::vector<std::byte>& input)
{ {
Sqlite3::bindParameter(db, statement, ":worldspace", worldspace); Sqlite3::bindParameter(db, statement, ":worldspace", worldspace);
@ -221,7 +220,7 @@ namespace DetourNavigator
return getTileDataQuery; return getTileDataQuery;
} }
void GetTileData::bind(sqlite3& db, sqlite3_stmt& statement, const std::string& worldspace, void GetTileData::bind(sqlite3& db, sqlite3_stmt& statement, std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input) const TilePosition& tilePosition, const std::vector<std::byte>& input)
{ {
Sqlite3::bindParameter(db, statement, ":worldspace", worldspace); Sqlite3::bindParameter(db, statement, ":worldspace", worldspace);
@ -235,7 +234,7 @@ namespace DetourNavigator
return insertTileQuery; return insertTileQuery;
} }
void InsertTile::bind(sqlite3& db, sqlite3_stmt& statement, TileId tileId, const std::string& worldspace, void InsertTile::bind(sqlite3& db, sqlite3_stmt& statement, TileId tileId, std::string_view worldspace,
const TilePosition& tilePosition, TileVersion version, const std::vector<std::byte>& input, const TilePosition& tilePosition, TileVersion version, const std::vector<std::byte>& input,
const std::vector<std::byte>& data) const std::vector<std::byte>& data)
{ {
@ -271,7 +270,7 @@ namespace DetourNavigator
return findShapeIdQuery; return findShapeIdQuery;
} }
void FindShapeId::bind(sqlite3& db, sqlite3_stmt& statement, const std::string& name, void FindShapeId::bind(sqlite3& db, sqlite3_stmt& statement, std::string_view name,
ShapeType type, const Sqlite3::ConstBlob& hash) ShapeType type, const Sqlite3::ConstBlob& hash)
{ {
Sqlite3::bindParameter(db, statement, ":name", name); Sqlite3::bindParameter(db, statement, ":name", name);
@ -284,7 +283,7 @@ namespace DetourNavigator
return insertShapeQuery; return insertShapeQuery;
} }
void InsertShape::bind(sqlite3& db, sqlite3_stmt& statement, ShapeId shapeId, const std::string& name, void InsertShape::bind(sqlite3& db, sqlite3_stmt& statement, ShapeId shapeId, std::string_view name,
ShapeType type, const Sqlite3::ConstBlob& hash) ShapeType type, const Sqlite3::ConstBlob& hash)
{ {
Sqlite3::bindParameter(db, statement, ":shape_id", shapeId); Sqlite3::bindParameter(db, statement, ":shape_id", shapeId);

View file

@ -15,7 +15,6 @@
#include <cstring> #include <cstring>
#include <optional> #include <optional>
#include <stdexcept> #include <stdexcept>
#include <string>
#include <string_view> #include <string_view>
#include <tuple> #include <tuple>
#include <utility> #include <utility>
@ -64,21 +63,21 @@ namespace DetourNavigator
struct FindTile struct FindTile
{ {
static std::string_view text() noexcept; static std::string_view text() noexcept;
static void bind(sqlite3& db, sqlite3_stmt& statement, const std::string& worldspace, static void bind(sqlite3& db, sqlite3_stmt& statement, std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input); const TilePosition& tilePosition, const std::vector<std::byte>& input);
}; };
struct GetTileData struct GetTileData
{ {
static std::string_view text() noexcept; static std::string_view text() noexcept;
static void bind(sqlite3& db, sqlite3_stmt& statement, const std::string& worldspace, static void bind(sqlite3& db, sqlite3_stmt& statement, std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input); const TilePosition& tilePosition, const std::vector<std::byte>& input);
}; };
struct InsertTile struct InsertTile
{ {
static std::string_view text() noexcept; static std::string_view text() noexcept;
static void bind(sqlite3& db, sqlite3_stmt& statement, TileId tileId, const std::string& worldspace, static void bind(sqlite3& db, sqlite3_stmt& statement, TileId tileId, std::string_view worldspace,
const TilePosition& tilePosition, TileVersion version, const std::vector<std::byte>& input, const TilePosition& tilePosition, TileVersion version, const std::vector<std::byte>& input,
const std::vector<std::byte>& data); const std::vector<std::byte>& data);
}; };
@ -99,14 +98,14 @@ namespace DetourNavigator
struct FindShapeId struct FindShapeId
{ {
static std::string_view text() noexcept; static std::string_view text() noexcept;
static void bind(sqlite3& db, sqlite3_stmt& statement, const std::string& name, static void bind(sqlite3& db, sqlite3_stmt& statement, std::string_view name,
ShapeType type, const Sqlite3::ConstBlob& hash); ShapeType type, const Sqlite3::ConstBlob& hash);
}; };
struct InsertShape struct InsertShape
{ {
static std::string_view text() noexcept; static std::string_view text() noexcept;
static void bind(sqlite3& db, sqlite3_stmt& statement, ShapeId shapeId, const std::string& name, static void bind(sqlite3& db, sqlite3_stmt& statement, ShapeId shapeId, std::string_view name,
ShapeType type, const Sqlite3::ConstBlob& hash); ShapeType type, const Sqlite3::ConstBlob& hash);
}; };
} }
@ -120,22 +119,22 @@ namespace DetourNavigator
TileId getMaxTileId(); TileId getMaxTileId();
std::optional<Tile> findTile(const std::string& worldspace, std::optional<Tile> findTile(std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input); const TilePosition& tilePosition, const std::vector<std::byte>& input);
std::optional<TileData> getTileData(const std::string& worldspace, std::optional<TileData> getTileData(std::string_view worldspace,
const TilePosition& tilePosition, const std::vector<std::byte>& input); const TilePosition& tilePosition, const std::vector<std::byte>& input);
int insertTile(TileId tileId, const std::string& worldspace, const TilePosition& tilePosition, int insertTile(TileId tileId, std::string_view worldspace, const TilePosition& tilePosition,
TileVersion version, const std::vector<std::byte>& input, const std::vector<std::byte>& data); TileVersion version, const std::vector<std::byte>& input, const std::vector<std::byte>& data);
int updateTile(TileId tileId, TileVersion version, const std::vector<std::byte>& data); int updateTile(TileId tileId, TileVersion version, const std::vector<std::byte>& data);
ShapeId getMaxShapeId(); ShapeId getMaxShapeId();
std::optional<ShapeId> findShapeId(const std::string& name, ShapeType type, const Sqlite3::ConstBlob& hash); std::optional<ShapeId> findShapeId(std::string_view name, ShapeType type, const Sqlite3::ConstBlob& hash);
int insertShape(ShapeId shapeId, const std::string& name, ShapeType type, const Sqlite3::ConstBlob& hash); int insertShape(ShapeId shapeId, std::string_view name, ShapeType type, const Sqlite3::ConstBlob& hash);
private: private:
Sqlite3::Db mDb; Sqlite3::Db mDb;

View file

@ -6,19 +6,20 @@
#include <cassert> #include <cassert>
#include <optional> #include <optional>
#include <string_view>
namespace DetourNavigator namespace DetourNavigator
{ {
namespace namespace
{ {
std::optional<ShapeId> findShapeId(NavMeshDb& db, const std::string& name, ShapeType type, std::optional<ShapeId> findShapeId(NavMeshDb& db, std::string_view name, ShapeType type,
const std::string& hash) const std::string& hash)
{ {
const Sqlite3::ConstBlob hashData {hash.data(), static_cast<int>(hash.size())}; const Sqlite3::ConstBlob hashData {hash.data(), static_cast<int>(hash.size())};
return db.findShapeId(name, type, hashData); return db.findShapeId(name, type, hashData);
} }
ShapeId getShapeId(NavMeshDb& db, const std::string& name, ShapeType type, ShapeId getShapeId(NavMeshDb& db, std::string_view name, ShapeType type,
const std::string& hash, ShapeId& nextShapeId) const std::string& hash, ShapeId& nextShapeId)
{ {
const Sqlite3::ConstBlob hashData {hash.data(), static_cast<int>(hash.size())}; const Sqlite3::ConstBlob hashData {hash.data(), static_cast<int>(hash.size())};