GaitGeneration by Graph Search
|
#include <iostream>
#include <map>
#include <sstream>
#include <string>
#include <vector>
#include <magic_enum.hpp>
#include "strconv2.h"
#include "implicit_metafunction_for_toml11.h"
#include "math_euler.h"
#include "math_quaternion.h"
#include "math_vector3.h"
#include "toml11_define.h"
クラス | |
struct | designlab::toml_func::Toml11Description |
tomlファイルに追加する変数の説明を追加するための構造体. [詳解] | |
struct | designlab::toml_func::GetTomlValueImpl< T, typename std::enable_if< impl::is_toml11_available_type< T >::value > ::type > |
tomlファイルから値を取得するための関数を 特殊化するために暗黙的に呼ばれる構造体. [詳解] | |
struct | designlab::toml_func::GetTomlValueImpl< T, typename std::enable_if<!impl::is_toml11_available_type< T >::value &&std::is_enum< T >::value >::type > |
プライマリ テンプレートの特殊化 : enum 型 [詳解] | |
struct | designlab::toml_func::GetTomlValueImpl< T, typename std::enable_if<!impl::is_toml11_available_type< T >::value &&impl::has_input_operator< T >::value >::type > |
プライマリ テンプレートの特殊化 : is_vector3 型と is_euler_xyz 型 [詳解] | |
struct | designlab::toml_func::GetTomlValueImpl< T, typename std::enable_if<!impl::is_toml11_available_type< T >::value &&impl::is_vector_of_has_input_operator< T >::value >::type > |
名前空間 | |
namespace | designlab::toml_func |
tomlファイルのシリアライズ/デシリアライズを行うための関数群. | |
namespace | designlab |
マクロ定義 | |
#define | DESIGNLAB_SUB_MACRO_FIND_MEMBER_VARIABLE_FROM_VALUE(VAR_NAME) |
DESIGNLAB_DEFINE_CONVERSION_NON_INTRUSIVEの補助マクロ. 他のファイルから呼び出さないこと. tomlファイルからクラスのメンバ変数を取得する. | |
#define | DESIGNLAB_SUB_MACRO_ASSIGN_MEMBER_VARIABLE_TO_VALUE(VAR) |
DESIGNLAB_DEFINE_CONVERSION_NON_INTRUSIVEの補助マクロ. 他のファイルから呼び出さないこと. クラスのメンバ変数を tomlファイルに追加する. | |
#define | DESIGNLAB_SUB_MACRO_ADD_COMMENT(VN) |
DESIGNLAB_DEFINE_CONVERSION_NON_INTRUSIVEの補助マクロ. 他のファイルから呼び出さないこと. tomlファイルの要素にクラスの説明を追加する. もし,説明の用意がなければ説明を追加しない. | |
#define | DESIGNLAB_TOML11_DESCRIPTION_CLASS(CLASS) struct CLASS##Description final |
tomlファイルに説明を追加するためのクラスの宣言を行うためのマクロ. | |
#define | DESIGNLAB_TOML11_FILE_NO_DESCRIPTION() const ::std::vector<::std::string> file_description_vec{}; |
tomlファイルにファイルの説明を追加しないことを示す文字列. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある. | |
#define | DESIGNLAB_TOML11_FILE_ADD_DESCRIPTION(DESCRIPTION) const ::std::vector<::std::string> file_description_vec{sjis_to_utf8(DESCRIPTION)}; |
tomlファイルにファイルの説明を追加するためのマクロ. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある. | |
#define | DESIGNLAB_TOML11_FILE_ADD_DESCRIPTION_MULTI_LINE(DESCRIPTION_VEC) |
tomlファイルにファイルの説明を追加するためのマクロ. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある. | |
#define | DESIGNLAB_TOML11_TABLE_ADD_DESCRIPTION(...) |
tomlファイルにテーブルの説明を追加するためのマクロ. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある. | |
#define | DESIGNLAB_TOML11_TABLE_NO_DESCRIPTION() const std::vector<std::string> table_name_description_vec = {}; |
tomlファイルに追加するテーブルにコメントを追加しないことを示すマクロ. DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある. | |
#define | DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION(VARIABLE, TABLE, DESCRIPTION) |
tomlファイルに変数とファイルの説明を追加するためのマクロ. | |
#define | DESIGNLAB_TOML11_VARIABLE_NO_DESCRIPTION(VARIABLE, TABLE) const ::designlab::toml_func::Toml11Description VARIABLE{TABLE, ""} |
ファイルの説明を追加したくない場合には,このマクロで変数を追加する. | |
#define | DESIGNLAB_TOML11_NO_TABLE ::designlab::toml_func::Toml11Description::kNoTable |
tomlファイルに追加する変数をテーブルに追加しないことを示すためのマクロ. | |
#define | DESIGNLAB_TOML11_SERIALIZE(NAME, ...) |
tomlファイルのシリアライズ/デシリアライズを行うためのマクロ. TOML11_DEFINE_CONVERSION_NON_INTRUSIVEをラッパしたもの. もともとのほうでは enum型を取り扱うことができなかったが, このマクロでは取り扱うことができる. また,クラスの説明を追加することができる. 注意点として,このクラスを使用する場合は, 必ずDESIGNLAB_TOML11_DESCRIPTION_CLASSを用意する必要がある. | |
関数 | |
std::vector< std::string > | designlab::toml_func::sjis_to_utf8_vec (const std::vector< std::string > &str_vec) |
文字列のベクターをShift-jisからUTF-8に変換する. | |
template<typename T > | |
std::enable_if< impl::is_toml11_available_type< T >::value >::type | designlab::toml_func::SetTomlValue (::toml::basic_value< toml::preserve_comments, std::map > *v, const std::string &str, const T &value) |
tomlファイルに値を追加するための関数. enum 型と vector3 型と euler_xyz 型以外の型に対応している. | |
template<typename T > | |
std::enable_if<!impl::is_toml11_available_type< T >::value &&std::is_enum< T >::value >::type | designlab::toml_func::SetTomlValue (::toml::basic_value< toml::preserve_comments, std::map > *v, const std::string &str, const T &value) |
tomlファイルに値を追加するための関数. enum 型に対応している.値を magic_enum で文字列に変換してから追加する. | |
template<typename T > | |
std::enable_if<!impl::is_toml11_available_type< T >::value &&impl::has_output_operator< T >::value >::type | designlab::toml_func::SetTomlValue (::toml::basic_value< toml::preserve_comments, std::map > *v, const std::string &str, const T &value) |
tomlファイルに値を追加するための関数. 出力ストリームを実装している型に対応している. 値をストリームを用いて文字列に変換してから追加する. | |
template<typename T > | |
std::enable_if<!impl::is_toml11_available_type< T >::value &&impl::is_vector_of_has_output_operator< T >::value >::type | designlab::toml_func::SetTomlValue (::toml::basic_value< toml::preserve_comments, std::map > *v, const std::string &str, const T &value) |
template<typename T > | |
T | designlab::toml_func::GetTomlValue (::toml::basic_value< toml::preserve_comments, std::map > v, const std::string &var_str) |
ユーザーが直接呼ぶ関数. GetTomlValueImpl を利用してテンプレートの型を解決し, それに応じたGet関数を呼び出す. | |
#define DESIGNLAB_SUB_MACRO_ADD_COMMENT | ( | VN | ) |
DESIGNLAB_DEFINE_CONVERSION_NON_INTRUSIVEの補助マクロ. 他のファイルから呼び出さないこと.
tomlファイルの要素にクラスの説明を追加する. もし,説明の用意がなければ説明を追加しない.
VN | 変数名. |
toml_serialize_macro.h の 270 行目に定義があります。
#define DESIGNLAB_SUB_MACRO_ASSIGN_MEMBER_VARIABLE_TO_VALUE | ( | VAR | ) |
DESIGNLAB_DEFINE_CONVERSION_NON_INTRUSIVEの補助マクロ. 他のファイルから呼び出さないこと.
クラスのメンバ変数を tomlファイルに追加する.
VAR | 変数名. |
toml_serialize_macro.h の 247 行目に定義があります。
#define DESIGNLAB_SUB_MACRO_FIND_MEMBER_VARIABLE_FROM_VALUE | ( | VAR_NAME | ) |
DESIGNLAB_DEFINE_CONVERSION_NON_INTRUSIVEの補助マクロ. 他のファイルから呼び出さないこと.
tomlファイルからクラスのメンバ変数を取得する.
VAR_NAME | 変数名. |
toml_serialize_macro.h の 220 行目に定義があります。
#define DESIGNLAB_TOML11_DESCRIPTION_CLASS | ( | CLASS | ) | struct CLASS##Description final |
#define DESIGNLAB_TOML11_FILE_ADD_DESCRIPTION | ( | DESCRIPTION | ) | const ::std::vector<::std::string> file_description_vec{sjis_to_utf8(DESCRIPTION)}; |
tomlファイルにファイルの説明を追加するためのマクロ.
DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.
DESCRIPTION | 説明.文字列で指定する. |
toml_serialize_macro.h の 300 行目に定義があります。
#define DESIGNLAB_TOML11_FILE_ADD_DESCRIPTION_MULTI_LINE | ( | DESCRIPTION_VEC | ) |
tomlファイルにファイルの説明を追加するためのマクロ.
DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.
DESCRIPTION_VEC | 説明.文字列の vector で指定する. |
toml_serialize_macro.h の 307 行目に定義があります。
#define DESIGNLAB_TOML11_FILE_NO_DESCRIPTION | ( | ) | const ::std::vector<::std::string> file_description_vec{}; |
tomlファイルにファイルの説明を追加しないことを示す文字列.
DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.
toml_serialize_macro.h の 293 行目に定義があります。
#define DESIGNLAB_TOML11_NO_TABLE ::designlab::toml_func::Toml11Description::kNoTable |
tomlファイルに追加する変数をテーブルに追加しないことを示すためのマクロ.
toml_serialize_macro.h の 346 行目に定義があります。
#define DESIGNLAB_TOML11_SERIALIZE | ( | NAME, | |
... | |||
) |
tomlファイルのシリアライズ/デシリアライズを行うためのマクロ.
TOML11_DEFINE_CONVERSION_NON_INTRUSIVEをラッパしたもの.
もともとのほうでは enum型を取り扱うことができなかったが, このマクロでは取り扱うことができる.
また,クラスの説明を追加することができる.
注意点として,このクラスを使用する場合は, 必ずDESIGNLAB_TOML11_DESCRIPTION_CLASSを用意する必要がある.
以下のように使用する.
NAME | クラス名.クラスの型を指定する. |
... | クラスのメンバ変数.過不足なく,全て指定する必要がある. 可変長引数なので複数指定することができる. |
toml_serialize_macro.h の 395 行目に定義があります。
#define DESIGNLAB_TOML11_TABLE_ADD_DESCRIPTION | ( | ... | ) |
tomlファイルにテーブルの説明を追加するためのマクロ.
DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.
... | テーブル名と説明. |
toml_serialize_macro.h の 316 行目に定義があります。
#define DESIGNLAB_TOML11_TABLE_NO_DESCRIPTION | ( | ) | const std::vector<std::string> table_name_description_vec = {}; |
tomlファイルに追加するテーブルにコメントを追加しないことを示すマクロ.
DESIGNLAB_TOML11_DESCRIPTION_CLASS内に必ず記述する必要がある.
toml_serialize_macro.h の 323 行目に定義があります。
#define DESIGNLAB_TOML11_VARIABLE_ADD_DESCRIPTION | ( | VARIABLE, | |
TABLE, | |||
DESCRIPTION | |||
) |
tomlファイルに変数とファイルの説明を追加するためのマクロ.
VARIABLE | 変数名. |
TABLE | テーブル名. |
DESCRIPTION | 説明. |
toml_serialize_macro.h の 332 行目に定義があります。
#define DESIGNLAB_TOML11_VARIABLE_NO_DESCRIPTION | ( | VARIABLE, | |
TABLE | |||
) | const ::designlab::toml_func::Toml11Description VARIABLE{TABLE, ""} |
ファイルの説明を追加したくない場合には,このマクロで変数を追加する.
VARIABLE | 変数名. |
TABLE | テーブル名. |
toml_serialize_macro.h の 341 行目に定義があります。