acadrust 0.5.2

A pure Rust library for reading and writing CAD files in DXF format (ASCII and Binary) and DWG format (Binary).
Documentation
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);
        self.write_common_non_entity_data(
            type_code,
            value.handle,
            value.owner,
            &[],
            &None,
        );
        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.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);
    }
}