use crate::io::dwg::dwg_reference_type::DwgReferenceType;
use crate::objects::{Field, FieldList};
use super::DwgObjectWriter;
impl<'a> DwgObjectWriter<'a> {
pub(super) fn write_field_object(&mut self, value: &Field) {
let type_code = self.class_type_code("FIELD", 500);
let eed = value
.xdata
.records()
.iter()
.filter_map(|rec| self.encode_xdata_record(rec))
.collect();
self.write_common_non_entity_data_eed(
type_code,
value.handle,
value.owner,
&[],
&None,
eed,
);
self.writer.write_variable_text(&value.evaluator_id);
self.writer.write_variable_text(&value.code);
self.writer.write_bit_long(value.child_fields.len() as i32);
self.writer
.write_bit_long(value.referenced_objects.len() as i32);
if self.version.r2007_pre() {
self.writer.write_variable_text(value.pre2007_format());
}
self.writer.write_bit_long(value.evaluation_option);
self.writer.write_bit_long(value.filing_option);
self.writer.write_bit_long(value.state);
self.writer.write_bit_long(value.evaluation_status);
self.writer.write_bit_long(value.evaluation_error_code);
self.writer
.write_variable_text(&value.evaluation_error_message);
self.write_table_cad_value(&value.value);
self.writer.write_variable_text(&value.value_string);
self.writer.write_bit_long(value.value_string_length);
self.writer.write_bit_long(value.child_values.len() as i32);
for item in &value.child_values {
self.writer.write_variable_text(&item.key);
self.write_table_cad_value(&item.value);
}
for handle in &value.child_fields {
self.writer
.write_handle(DwgReferenceType::HardOwnership, handle.value());
}
for handle in &value.referenced_objects {
self.writer
.write_handle(DwgReferenceType::HardPointer, handle.value());
}
self.register_object(value.handle);
}
pub(super) fn write_field_list(&mut self, value: &FieldList) {
let type_code = self.class_type_code("FIELDLIST", 500);
self.write_common_non_entity_data(type_code, value.handle, value.owner, &[], &None);
self.writer.write_bit_long(value.fields.len() as i32);
self.writer.write_bit(value.unknown);
for handle in &value.fields {
self.writer
.write_handle(DwgReferenceType::SoftPointer, handle.value());
}
self.register_object(value.handle);
}
}