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(); }