Added downcast stuff to object write string

This commit is contained in:
Kyle Kiteveles 2023-08-15 14:50:08 -04:00
parent 3560c37235
commit 224a1f40a3
6 changed files with 87 additions and 15 deletions

View file

@ -2,6 +2,9 @@ use crate::datatypes;
use super::{Object, ObjectSpecies, RawObject};
use derive_getters::Getters;
use derive_builder::Builder;
use downcast_rs::Downcast
pub trait FmCO2:Downcast{}
#[derive(Clone,Debug)]
pub enum FmCO2Species{
@ -12,6 +15,7 @@ pub enum FmCO2Species{
}
impl ObjectSpecies for FmCO2Species{}
impl FmCO2 for CCO2DData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CCO2DData{
status:Status,
@ -34,7 +38,7 @@ pub struct CCO2DData{
apneaindex_20_29:OBJECT::CNumDStd,
apneaindex_30:OBJECT::CNumDStd,
desatcount:OBJECT::CNumDStd,
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
#[getter(skip)]
raw_object:RawObject,
}
@ -100,6 +104,7 @@ impl Object for CCO2DData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmCO2 for CCO2CCal{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CCO2CCal{
status:Status,
@ -144,6 +149,7 @@ impl Object for CCO2CCal{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmCO2 for CCO2CStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CCO2CStd{
displayunits:DisplayUnits,
@ -168,6 +174,7 @@ impl Object for CCO2CStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmCO2 for CCO2PMsgArg{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CCO2PMsgArg{
ioparametera:uint16,

View file

@ -2,6 +2,9 @@ use crate::datatypes;
use super::{Object, ObjectSpecies, RawObject};
use derive_getters::Getters;
use derive_builder::Builder;
use downcast_rs::Downcast
pub trait FmECG:Downcast{}
#[derive(Clone,Debug)]
pub enum FmECGSpecies{
@ -18,6 +21,7 @@ pub enum FmECGSpecies{
}
impl ObjectSpecies for FmECGSpecies{}
impl FmECG for CECGDPacer{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGDPacer{
cwavesamplepacer:OBJECT::CWaveSampleCRPDetect,
@ -37,6 +41,7 @@ impl Object for CECGDPacer{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGDGlobalMeas{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGDGlobalMeas{
pduration:uint32,
@ -68,6 +73,7 @@ impl Object for CECGDGlobalMeas{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGDLeadMeas{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGDLeadMeas{
leadidentifier:LeadIdentifier,
@ -140,6 +146,7 @@ impl Object for CECGDLeadMeas{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGDStatus{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGDStatus{
electrodeoffstatus:ElectrodeOffStatus,
@ -194,6 +201,7 @@ impl Object for CECGDStatus{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGCRhythmReport{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGCRhythmReport{
leadarrangement:LeadArrangement,
@ -230,6 +238,7 @@ impl Object for CECGCRhythmReport{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGCAutoReport{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGCAutoReport{
extmeasurements:boolean,
@ -405,6 +414,7 @@ impl Object for CECGCAutoReport{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGCMiscellaneous{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGCMiscellaneous{
leadconfig:LeadConfig,
@ -554,6 +564,7 @@ impl Object for CECGCMiscellaneous{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGCSettings{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGCSettings{
activeleads:ActiveLeads,
@ -613,6 +624,7 @@ impl Object for CECGCSettings{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmECG for CECGPSelector{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CECGPSelector{
speciesselector:uint32,

View file

@ -2,6 +2,9 @@ use crate::datatypes;
use super::{Object, ObjectSpecies, RawObject};
use derive_getters::Getters;
use derive_builder::Builder;
use downcast_rs::Downcast
pub trait FmNIBP:Downcast{}
#[derive(Clone,Debug)]
pub enum FmNIBPSpecies{
@ -21,9 +24,10 @@ pub enum FmNIBPSpecies{
}
impl ObjectSpecies for FmNIBPSpecies{}
impl FmNIBP for CNIBPDStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDStd{
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
status:Status,
systolic:int16,
diastolic:int16,
@ -100,6 +104,7 @@ impl Object for CNIBPDStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDData{
status:Status,
@ -142,6 +147,7 @@ impl Object for CNIBPDData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDChunk{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDChunk{
tag:int8,
@ -162,6 +168,7 @@ impl Object for CNIBPDChunk{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDHState{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDHState{
hardware:hardware,
@ -188,6 +195,7 @@ impl Object for CNIBPDHState{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDLock{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDLock{
lock:lock,
@ -217,6 +225,7 @@ impl Object for CNIBPDLock{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDRData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDRData{
raw5v:uint32,
@ -243,6 +252,7 @@ impl Object for CNIBPDRData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDPData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDPData{
primpress:int16,
@ -265,6 +275,7 @@ impl Object for CNIBPDPData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDStatus{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDStatus{
modulestate:moduleState,
@ -323,11 +334,12 @@ impl Object for CNIBPDStatus{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDDataModified{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDDataModified{
nibpdata:OBJECT::CNIBPDData,
status:Status,
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
mode:Mode,
patientposition:PatientPosition,
cuffsize:CuffSize,
@ -438,6 +450,7 @@ impl Object for CNIBPDDataModified{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPCStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPCStd{
displayunits:DisplayUnits,
@ -470,6 +483,7 @@ impl Object for CNIBPCStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPCData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPCData{
dfltadulttargpress:int16,
@ -504,11 +518,12 @@ impl Object for CNIBPCData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPCCal{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPCCal{
caltype:calType,
calsignature:int32,
caldatetime:chrono::NativeDateTime,
caldatetime:chrono::NaiveDateTime,
modconfig:int16,
spancorr:int16,
zerocorr:int16,
@ -536,6 +551,7 @@ impl Object for CNIBPCCal{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPPData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPPData{
targpress:int16,
@ -584,6 +600,7 @@ impl Object for CNIBPPData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPPSelector{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPPSelector{
value:uint32,
@ -601,6 +618,7 @@ impl Object for CNIBPPSelector{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPPChunkSelector{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPPChunkSelector{
chunk:uint32,
@ -619,6 +637,7 @@ impl Object for CNIBPPChunkSelector{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmNIBP for CNIBPDExtStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CNIBPDExtStd{
container:OBJECT::ANY_CLASS,

View file

@ -2,6 +2,9 @@ use crate::datatypes;
use super::{Object, ObjectSpecies, RawObject};
use derive_getters::Getters;
use derive_builder::Builder;
use downcast_rs::Downcast
pub trait FmSPO2:Downcast{}
#[derive(Clone,Debug)]
pub enum FmSPO2Species{
@ -12,9 +15,10 @@ pub enum FmSPO2Species{
}
impl ObjectSpecies for FmSPO2Species{}
impl FmSPO2 for CSpO2DStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2DStd{
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
status:Status,
sat:uint16,
hr:uint16,
@ -93,9 +97,10 @@ impl Object for CSpO2DStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2DData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2DData{
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
extstatus:ExtStatus,
source:Source,
sat:OBJECT::CNumDStd,
@ -186,6 +191,7 @@ impl Object for CSpO2DData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2DDataModified{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2DDataModified{
spo2data:OBJECT::CSpO2DData,
@ -237,6 +243,7 @@ impl Object for CSpO2DDataModified{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2CStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2CStd{
enabled:boolean,
@ -272,6 +279,7 @@ impl Object for CSpO2CStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2CData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2CData{
satexponent:int8,
@ -347,6 +355,7 @@ impl Object for CSpO2CData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmSPO2 for CSpO2PSelector{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSpO2PSelector{
value:uint32,

View file

@ -2,6 +2,9 @@ use crate::datatypes;
use super::{Object, ObjectSpecies, RawObject};
use derive_getters::Getters;
use derive_builder::Builder;
use downcast_rs::Downcast
pub trait FmTEMP:Downcast{}
#[derive(Clone,Debug)]
pub enum FmTEMPSpecies{
@ -22,9 +25,10 @@ pub enum FmTEMPSpecies{
}
impl ObjectSpecies for FmTEMPSpecies{}
impl FmTEMP for CTempDStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CTempDStd{
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
status:Status,
extstatus:ExtStatus,
source:Source,
@ -125,9 +129,10 @@ impl Object for CTempDStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CTempDData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CTempDData{
stime:chrono::NativeDateTime,
stime:chrono::NaiveDateTime,
status:Status,
extstatus:ExtStatus,
source:Source,
@ -228,6 +233,7 @@ impl Object for CTempDData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPTempDEng{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPTempDEng{
temp:float,
@ -350,6 +356,7 @@ impl Object for CSTPTempDEng{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPDProbe{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPDProbe{
probetype:probeType,
@ -359,7 +366,7 @@ pub struct CSTPDProbe{
probearrayloc:int16,
testpassfailcode:int16,
calsignature:int32,
caldatetime:chrono::NativeDateTime,
caldatetime:chrono::NaiveDateTime,
heatergain:float,
heatertimedelay:float,
responses:float,
@ -396,6 +403,7 @@ impl Object for CSTPDProbe{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPDHState{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPDHState{
hardware:hardware,
@ -422,6 +430,7 @@ impl Object for CSTPDHState{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPDLock{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPDLock{
lock:lock,
@ -447,6 +456,7 @@ impl Object for CSTPDLock{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPDRData{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPDRData{
thermistor:uint32,
@ -467,6 +477,7 @@ impl Object for CSTPDRData{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPDStat{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPDStat{
state:state,
@ -591,6 +602,7 @@ impl Object for CSTPDStat{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPDSample{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPDSample{
channel:uint8,
@ -614,6 +626,7 @@ impl Object for CSTPDSample{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CTempDTouch{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CTempDTouch{
ele0:uint16,
@ -646,6 +659,7 @@ impl Object for CTempDTouch{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CTempDTherm{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CTempDTherm{
ambient:float,
@ -684,6 +698,7 @@ impl Object for CTempDTherm{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CTempCStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CTempCStd{
enabled:boolean,
@ -734,6 +749,7 @@ impl Object for CTempCStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPCStd{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPCStd{
clinicalpause:uint16,
@ -770,10 +786,11 @@ impl Object for CSTPCStd{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPCCal{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPCCal{
signature:uint32,
datetime:chrono::NativeDateTime,
datetime:chrono::NaiveDateTime,
modconfig:float,
yp0:float,
rp0:float,
@ -794,6 +811,7 @@ impl Object for CSTPCCal{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CTempPMsgArg{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CTempPMsgArg{
ioparametera:uint32,
@ -812,6 +830,7 @@ impl Object for CTempPMsgArg{
fn get_raw_object(&self) -> RawObject { self.raw_object.clone() }
}
impl FmTEMP for CSTPPSelector{}
#[derive(Getters,Builder,Clone,Debug)]
pub struct CSTPPSelector{
value:uint32,

View file

@ -209,9 +209,11 @@ fn output_gen(family: oop::Family, output_path: String) -> (String, String){
match output_path.as_str() {
o if o.contains("objects") => {
write_string = format!(
"{}{}{}",
"use crate::datatypes;\nuse super::{Object, ObjectSpecies, RawObject};\nuse derive_getters::Getters;\nuse derive_builder::Builder;\n\n#[derive(Clone,Debug)]\npub enum ",
family.get_name().as_str(),
"{}{}{}{}{}",
"use crate::datatypes;\nuse super::{Object, ObjectSpecies, RawObject};\nuse derive_getters::Getters;\nuse derive_builder::Builder;\nuse downcast_rs::Downcast\n\npub trait ",
family.get_name(),
":Downcast{}\n\n#[derive(Clone,Debug)]\npub enum ",
family.get_name(),
"Species{\n"
);
for species_name in family.list_species() {
@ -236,9 +238,13 @@ fn output_gen(family: oop::Family, output_path: String) -> (String, String){
for species in genus.get_species() {
for object in species.get_objects() {
write_string = format!(
"{}{}{}{}",
"{}{}{}{}{}{}{}{}",
write_string,
"#[derive(Getters,Builder,Clone,Debug)]\npub struct ",
"impl ",
family.get_name(),
" for ",
object.get_name(),
"{}\n#[derive(Getters,Builder,Clone,Debug)]\npub struct ",
object.get_name(),
"{\n"
);