@@ -91,7 +91,6 @@ endfunction()
91
91
@brief internal recursive method use to parse json structure and generate variables
92
92
#]==]
93
93
function (_parse_json_option _top_json)
94
- # TODO Add a deprecation mechanism
95
94
string (JSON _options_length LENGTH ${_top_json} )
96
95
MATH (EXPR _options_length "${_options_length} - 1" )
97
96
foreach (_json_idx RANGE ${_options_length} )
@@ -108,6 +107,9 @@ function(_parse_json_option _top_json)
108
107
# Recover default_value if any
109
108
string (JSON _option_default_value ERROR_VARIABLE _default_value_error GET ${_cur_json} "default_value" )
110
109
110
+ # Recover deprecated if any
111
+ string (JSON _option_deprecated ERROR_VARIABLE _deprecated_error GET ${_cur_json} "deprecated" )
112
+
111
113
set (_option_name "${_option_basename}${_member_name} " )
112
114
113
115
# Identify types
@@ -138,16 +140,21 @@ function(_parse_json_option _top_json)
138
140
139
141
# Add option to struct and methods
140
142
143
+ set (_option_deprecated_string "" )
144
+ if (_deprecated_error STREQUAL "NOTFOUND" AND _option_deprecated)
145
+ set (_option_deprecated_string "F3D_DEPRECATED " )
146
+ endif ()
147
+
141
148
if (_default_value_error STREQUAL "NOTFOUND" )
142
149
# Use default_value
143
150
set (_optional_default_value_initialize "${_option_default_value_start}${_option_default_value}${_option_default_value_end} " )
144
- string (APPEND _options_struct "${_option_indent} ${_option_actual_type} ${_member_name} = ${_optional_default_value_initialize} ;\n " )
151
+ string (APPEND _options_struct "${_option_indent} ${_option_deprecated_string}${ _option_actual_type} ${_member_name} = ${_optional_default_value_initialize} ;\n " )
145
152
set (_optional_getter "" )
146
153
list (APPEND _options_is_optional "if (name == \" ${_option_name} \" ) return false" )
147
154
list (APPEND _options_reset "if (name == \" ${_option_name} \" ) opt.${_option_name} = ${_optional_default_value_initialize} " )
148
155
else ()
149
156
# No default_value, it is an std::optional
150
- string (APPEND _options_struct "${_option_indent} std::optional<${_option_actual_type} > ${_member_name} ;\n " )
157
+ string (APPEND _options_struct "${_option_indent} ${_option_deprecated_string} std::optional<${_option_actual_type} > ${_member_name} ;\n " )
151
158
set (_optional_getter ".value()" )
152
159
list (APPEND _options_is_optional "if (name == \" ${_option_name} \" ) return true" )
153
160
list (APPEND _options_reset "if (name == \" ${_option_name} \" ) opt.${_option_name} .reset()" )
0 commit comments