use std::io;
use crate::engine::AttributeDefinition;
use crate::util::{TemplateWriter, Utf16String};
use super::AttributeValueQuotes;
pub trait IAttribute {
fn get_attribute_complete_name(&self) -> &Utf16String;
fn get_attribute_definition(&self) -> &AttributeDefinition;
fn get_operator(&self) -> Option<&Utf16String>;
fn get_value(&self) -> Option<&Utf16String>;
fn get_value_quotes(&self) -> Option<AttributeValueQuotes>;
fn has_location(&self) -> bool;
fn get_template_name(&self) -> Option<&Utf16String>;
fn get_line(&self) -> i32;
fn get_col(&self) -> i32;
fn write(&self, writer: &mut dyn TemplateWriter) -> io::Result<()>;
}