Skip to content

Commit faf52d7

Browse files
codegen: Generate HasParamSpec for enums/flags
Needed for the properties macro
1 parent 7b0e62f commit faf52d7

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

src/codegen/enums.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,27 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
459459
)?;
460460
writeln!(w)?;
461461

462+
version_condition(w, env, None, version, false, 0)?;
463+
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
464+
allow_deprecated(w, enum_.deprecated_version, false, 0)?;
465+
writeln!(
466+
w,
467+
"impl {has_param_spec} for {name} {{
468+
type ParamSpec = {param_spec_enum};
469+
type SetValue = Self;
470+
type BuilderFn = fn(&str, Self) -> {param_spec_builder}<Self>;
471+
472+
fn param_spec_builder() -> Self::BuilderFn {{
473+
|name, default_value| Self::ParamSpec::builder_with_default(name, default_value)
474+
}}
475+
}}",
476+
name = enum_.name,
477+
has_param_spec = use_glib_type(env, "HasParamSpec"),
478+
param_spec_enum = use_glib_type(env, "ParamSpecEnum"),
479+
param_spec_builder = use_glib_type(env, "ParamSpecEnumBuilder"),
480+
)?;
481+
writeln!(w)?;
482+
462483
version_condition(w, env, None, version, false, 0)?;
463484
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
464485
allow_deprecated(w, enum_.deprecated_version, false, 0)?;

src/codegen/flags.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,27 @@ impl FromGlib<{sys_crate_name}::{ffi_name}> for {name} {{
284284
)?;
285285
writeln!(w)?;
286286

287+
version_condition(w, env, None, version, false, 0)?;
288+
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
289+
allow_deprecated(w, flags.deprecated_version, false, 0)?;
290+
writeln!(
291+
w,
292+
"impl {has_param_spec} for {name} {{
293+
type ParamSpec = {param_spec_flags};
294+
type SetValue = Self;
295+
type BuilderFn = fn(&str) -> {param_spec_builder}<Self>;
296+
297+
fn param_spec_builder() -> Self::BuilderFn {{
298+
|name| Self::ParamSpec::builder(name)
299+
}}
300+
}}",
301+
name = flags.name,
302+
has_param_spec = use_glib_type(env, "HasParamSpec"),
303+
param_spec_flags = use_glib_type(env, "ParamSpecFlags"),
304+
param_spec_builder = use_glib_type(env, "ParamSpecFlagsBuilder"),
305+
)?;
306+
writeln!(w)?;
307+
287308
version_condition(w, env, None, version, false, 0)?;
288309
cfg_condition_no_doc(w, config.cfg_condition.as_ref(), false, 0)?;
289310
allow_deprecated(w, flags.deprecated_version, false, 0)?;

0 commit comments

Comments
 (0)