doc: string enum derive has a function listing the enum values

Ticket: 8675
pull/16404/head
Philippe Antoine 4 months ago committed by Victor Julien
parent 6f57427977
commit 5f068793d3

@ -89,6 +89,7 @@ where
let mut values = Vec::new();
let mut names = Vec::new();
let mut names_upper = Vec::new();
let mut names_lower = Vec::new();
let mut fields = Vec::new();
let mut enum_string_style = String::from("");
@ -105,11 +106,13 @@ where
"UPPERCASE" => {
names.push(v.ident.to_string().to_ascii_uppercase());
names_upper.push(v.ident.to_string().to_ascii_uppercase());
names_lower.push(v.ident.to_string().to_ascii_lowercase());
}
"LOG_UPPERCASE" => {
names.push(v.ident.to_string().to_ascii_uppercase());
let fname = transform_name(&v.ident.to_string());
let fnameu = fname.to_ascii_uppercase();
names_lower.push(fnameu.to_ascii_lowercase());
names_upper.push(fnameu);
}
"" => {
@ -117,6 +120,7 @@ where
let fname = transform_name(&v.ident.to_string());
let fnameu = fname.to_ascii_uppercase();
names.push(fname);
names_lower.push(fnameu.to_ascii_lowercase());
names_upper.push(fnameu);
}
_ => {
@ -180,6 +184,12 @@ where
_ => None
}
}
fn list_values(jsb: &mut #crate_id::jsonbuilder::JsonBuilder) -> Result<(), #crate_id::jsonbuilder::JsonError> {
jsb.open_object("enum_values")?;
#( jsb.set_uint(#names_lower, #values as u64)?;)*
jsb.close()?;
Ok(())
}
}
};

@ -56,6 +56,13 @@ pub trait EnumString<T> {
fn from_str(s: &str) -> Option<Self>
where
Self: Sized;
/// Get an enum variant from parsing a string.
fn list_values(
jsb: &mut crate::jsonbuilder::JsonBuilder,
) -> Result<(), crate::jsonbuilder::JsonError>
where
Self: Sized;
}
pub use suricata_ffi::detect::{

Loading…
Cancel
Save