use super::HeaderRange;
use super::HeaderValueKind;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum AliasConflictPolicy {
Error,
PreferCanonical,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum DynamicCollisionPolicy {
ErrorOnDifferentValue,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum HeaderPresence {
Required,
Optional,
Default,
DefaultWith(&'static str),
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum FlattenPresenceSpec {
Always,
Any,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct HeaderFieldSpec {
pub rust_field: &'static str,
pub key: &'static str,
pub aliases: &'static [&'static str],
pub alias_conflict: AliasConflictPolicy,
pub kind: HeaderValueKind,
pub presence: HeaderPresence,
pub default_semantic: Option<&'static str>,
pub java_type: Option<&'static str>,
pub java_range: Option<HeaderRange>,
pub binary_order: u16,
pub declared_in: &'static str,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct HeaderFlattenSpec {
pub rust_field: &'static str,
pub nested_type_id: &'static str,
pub presence: FlattenPresenceSpec,
pub binary_order: u16,
pub declared_in: &'static str,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct ResolvedHeaderKey {
pub header: &'static str,
pub owner_type_id: &'static str,
pub canonical: &'static str,
pub precedence: u16,
pub alias_conflict: AliasConflictPolicy,
pub dynamic_collision: DynamicCollisionPolicy,
}