Struct sixtyfps_compilerlib::object_tree::Element
source · [−]pub struct Element {Show 17 fields
pub id: String,
pub base_type: Type,
pub bindings: BindingsMap,
pub property_analysis: RefCell<HashMap<String, PropertyAnalysis>>,
pub children: Vec<ElementRc>,
pub enclosing_component: Weak<Component>,
pub property_declarations: BTreeMap<String, PropertyDeclaration>,
pub named_references: NamedReferenceContainer,
pub repeated: Option<RepeatedElementInfo>,
pub states: Vec<State>,
pub transitions: Vec<Transition>,
pub child_of_layout: bool,
pub layout_info_prop: Option<(NamedReference, NamedReference)>,
pub is_flickable_viewport: bool,
pub item_index: OnceCell<usize>,
pub item_index_of_first_children: OnceCell<usize>,
pub node: Option<Element>,
}
Expand description
An Element is an instantiation of a Component
Fields
id: String
The id as named in the original .60 file.
Note that it can only be used for lookup before inlining. After inlining there can be duplicated id in the component. The id are then re-assigned unique id in the assign_id pass
base_type: Type
bindings: BindingsMap
Currently contains also the callbacks. FIXME: should that be changed?
property_analysis: RefCell<HashMap<String, PropertyAnalysis>>
children: Vec<ElementRc>
enclosing_component: Weak<Component>
The component which contains this element.
property_declarations: BTreeMap<String, PropertyDeclaration>
named_references: NamedReferenceContainer
Main owner for a reference to a property.
repeated: Option<RepeatedElementInfo>
Tis element is part of a `for
states: Vec<State>
transitions: Vec<Transition>
child_of_layout: bool
true when this item’s geometry is handled by a layout
layout_info_prop: Option<(NamedReference, NamedReference)>
The property pointing to the layout info. (horizontal, vertical)
is_flickable_viewport: bool
true if this Element is the fake Flickable viewport
item_index: OnceCell<usize>
This is the component-local index of this item in the item tree array. It is generated after the last pass and before the generators run.
item_index_of_first_children: OnceCell<usize>
the index of the first children in the tree, set with item_index
node: Option<Element>
The AST node, if available
Implementations
pub fn from_node(
node: Element,
id: String,
parent_type: Type,
component_child_insertion_point: &mut Option<(ElementRc, ChildrenPlaceholder)>,
diag: &mut BuildDiagnostics,
tr: &TypeRegister
) -> ElementRc
Return the type of a property in this element or its base, along with the final name, in case the provided name points towards a property alias. Type::Invalid is returned if the property does not exist.
Returns the element’s name as specified in the markup, not normalized.
Return true if the binding is set, either on this element or in a base
If need_explicit
is true, then only consider binding set in the code, not the ones set
by the compiler later.
pub fn set_binding_if_not_set(
&mut self,
property_name: String,
expression_fn: impl FnOnce() -> Expression
)
pub fn set_binding_if_not_set(
&mut self,
property_name: String,
expression_fn: impl FnOnce() -> Expression
)
Set the property property_name
of this Element only if it was not set.
the expression_fn
will only be called if it isn’t set