From 61642f62be7b1cc5f956118a1b9151c594decb9d Mon Sep 17 00:00:00 2001 From: Linoal <1321932+linoal@users.noreply.github.com> Date: Tue, 22 Apr 2025 00:47:21 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=97=E3=83=AB=E3=83=AA=E3=82=AF=E3=81=AE?= =?UTF-8?q?=E6=8C=87=E6=91=98=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=97=E3=81=A6?= =?UTF-8?q?=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/plateau/dataset/gml_file.h | 7 ++++++- include/plateau/dataset/grid_code.h | 2 +- include/plateau/dataset/i_dataset_accessor.h | 15 +++++---------- include/plateau/dataset/invalid_grid_code.h | 3 +++ 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/include/plateau/dataset/gml_file.h b/include/plateau/dataset/gml_file.h index 988d3433..6e7c5a0f 100644 --- a/include/plateau/dataset/gml_file.h +++ b/include/plateau/dataset/gml_file.h @@ -5,6 +5,7 @@ #include #include "plateau/network/client.h" #include "city_model_package.h" +#include "plateau/dataset/grid_code.h" namespace plateau::dataset { @@ -20,7 +21,11 @@ namespace plateau::dataset { const std::string& getPath() const; void setPath(const std::string& path); std::shared_ptr getGridCode() const; - GridCode* getGridCodeRaw() const; // 寿命管理をDLL利用者に任せる用です + /** + * getGridCode関数をP/Invokeで利用するための生ポインタ版です。 + * 新しいGridCodeインスタンスを生成して返すので、DLL利用者が廃棄する必要があります。 + */ + GridCode* getGridCodeRaw() const; double getEpsg() const; bool isPolarCoordinateSystem() const; const std::string& getFeatureType() const; diff --git a/include/plateau/dataset/grid_code.h b/include/plateau/dataset/grid_code.h index e8ecd41f..342485b5 100644 --- a/include/plateau/dataset/grid_code.h +++ b/include/plateau/dataset/grid_code.h @@ -73,7 +73,7 @@ namespace plateau::dataset { static std::shared_ptr create(const std::string& code); /** - * \brief 与えられたコードから適切なGridCodeの派生クラスのインスタンスを作成します。 + * \brief create()をUnityのP/Invokeから呼び出す版です。newして返すので、利用者が適切に廃棄する必要があります。 * \param code コード文字列 * \return コードの形式に応じてMeshCodeまたはStandardMapGridのインスタンスを返します。生ポインタで返されます。 * \throw std::invalid_argument コードの形式が不正な場合 diff --git a/include/plateau/dataset/i_dataset_accessor.h b/include/plateau/dataset/i_dataset_accessor.h index d441b2ba..c941cf67 100644 --- a/include/plateau/dataset/i_dataset_accessor.h +++ b/include/plateau/dataset/i_dataset_accessor.h @@ -27,10 +27,6 @@ namespace plateau::dataset { return name_; } - explicit operator std::string& () { - return name_; - } - explicit operator std::string() const { return name_; } @@ -114,12 +110,6 @@ namespace plateau::dataset { */ virtual std::shared_ptr filter(const geometry::Extent& extent) const = 0; - /** - * \brief メッシュコードで都市モデルデータをフィルタリングします。 - * \param grid_codes 欲しい地域IDのvector - * \param collection フィルタリングされた都市モデルデータの格納先 - */ - virtual void filterByGridCodes(const std::vector& grid_codes, IDatasetAccessor& collection) const = 0; /** * \brief メッシュコードで都市モデルデータをフィルタリングします。 @@ -129,6 +119,11 @@ namespace plateau::dataset { virtual std::shared_ptr filterByGridCodes( const std::vector>& grid_codes) const = 0; + /** + * \brief filterByGridCodes関数の、UnityでP/Invokeから呼び出す版です。引数のvector内のポインタの廃棄はDLL側で責任を持ってください。 + */ + virtual void filterByGridCodes(const std::vector& grid_codes, IDatasetAccessor& collection) const = 0; + /** * \brief 都市モデルデータが存在する地域メッシュのリストを取得します。 */ diff --git a/include/plateau/dataset/invalid_grid_code.h b/include/plateau/dataset/invalid_grid_code.h index 1116fa45..7f641dfa 100644 --- a/include/plateau/dataset/invalid_grid_code.h +++ b/include/plateau/dataset/invalid_grid_code.h @@ -46,6 +46,9 @@ namespace plateau::dataset { return std::make_shared(); } + /** + * InvalidGridCodeをnewして返します。DLLの利用者が廃棄に責任を持つ必要があります。 + */ GridCode* upperRaw() const override { return new InvalidGridCode(); }