1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-14 01:19:59 +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 <vector>
#include <random>
#include <string_view>
namespace NavMeshTool
{
@ -81,7 +82,7 @@ namespace NavMeshTool
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
{
std::optional<NavMeshTileInfo> result;
@ -98,7 +99,7 @@ namespace NavMeshTool
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
{
data.mUserId = static_cast<unsigned>(mNextTileId);

View File

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

View File

@ -36,12 +36,12 @@ namespace DetourNavigator
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;
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;
virtual void update(std::int64_t tileId, std::int64_t version, PreparedNavMeshData& data) = 0;

View File

@ -10,7 +10,6 @@
#include <sqlite3.h>
#include <cstddef>
#include <string>
#include <string_view>
#include <vector>
@ -136,7 +135,7 @@ namespace DetourNavigator
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)
{
Tile result;
@ -147,7 +146,7 @@ namespace DetourNavigator
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)
{
TileData result;
@ -159,7 +158,7 @@ namespace DetourNavigator
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)
{
const std::vector<std::byte> compressedInput = Misc::compress(input);
@ -180,7 +179,7 @@ namespace DetourNavigator
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)
{
ShapeId shapeId;
@ -189,7 +188,7 @@ namespace DetourNavigator
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)
{
return execute(*mDb, mInsertShape, shapeId, name, type, hash);
@ -207,7 +206,7 @@ namespace DetourNavigator
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)
{
Sqlite3::bindParameter(db, statement, ":worldspace", worldspace);
@ -221,7 +220,7 @@ namespace DetourNavigator
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)
{
Sqlite3::bindParameter(db, statement, ":worldspace", worldspace);
@ -235,7 +234,7 @@ namespace DetourNavigator
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 std::vector<std::byte>& data)
{
@ -271,7 +270,7 @@ namespace DetourNavigator
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)
{
Sqlite3::bindParameter(db, statement, ":name", name);
@ -284,7 +283,7 @@ namespace DetourNavigator
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)
{
Sqlite3::bindParameter(db, statement, ":shape_id", shapeId);

View File

@ -15,7 +15,6 @@
#include <cstring>
#include <optional>
#include <stdexcept>
#include <string>
#include <string_view>
#include <tuple>
#include <utility>
@ -64,21 +63,21 @@ namespace DetourNavigator
struct FindTile
{
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);
};
struct GetTileData
{
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);
};
struct InsertTile
{
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 std::vector<std::byte>& data);
};
@ -99,14 +98,14 @@ namespace DetourNavigator
struct FindShapeId
{
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);
};
struct InsertShape
{
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);
};
}
@ -120,22 +119,22 @@ namespace DetourNavigator
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);
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);
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);
int updateTile(TileId tileId, TileVersion version, const std::vector<std::byte>& data);
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:
Sqlite3::Db mDb;

View File

@ -6,19 +6,20 @@
#include <cassert>
#include <optional>
#include <string_view>
namespace DetourNavigator
{
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 Sqlite3::ConstBlob hashData {hash.data(), static_cast<int>(hash.size())};
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 Sqlite3::ConstBlob hashData {hash.data(), static_cast<int>(hash.size())};