fcb_core/reader/
city_buffer.rs1use crate::deserializer::to_cj_feature;
2use crate::error::Error;
3use crate::fb::*;
4use cjseq::CityJSONFeature;
5
6use super::deserializer::to_meta;
7use super::Meta;
8
9pub struct FcbBuffer {
10 pub header_buf: Vec<u8>,
11 pub features_buf: Vec<u8>,
12}
13
14impl FcbBuffer {
15 pub fn header(&self) -> Header<'_> {
16 unsafe { size_prefixed_root_as_header_unchecked(&self.header_buf) }
17 }
18
19 pub fn feature(&self) -> CityFeature<'_> {
20 unsafe { size_prefixed_root_as_city_feature_unchecked(&self.features_buf) }
21 }
22
23 pub fn cj_feature(&self) -> Result<CityJSONFeature, Error> {
25 let fcb_feature = self.feature();
26 let root_attr_schema = self.header().columns();
27 let semantic_attr_schema = self.header().semantic_columns();
28 to_cj_feature(fcb_feature, root_attr_schema, semantic_attr_schema)
29 }
30
31 pub fn meta(&self) -> Result<Meta, Error> {
32 to_meta(self.header())
33 }
34}