From ad9ba0f085a4229443e08c51fd26e4eb0ad09554 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Sat, 8 Apr 2023 11:40:24 -0700 Subject: [PATCH] Add NTScalar::form --- src/nt.cpp | 13 +++++++++++-- src/pvxs/nt.h | 10 ++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/nt.cpp b/src/nt.cpp index 6f70f0d..2edb096 100644 --- a/src/nt.cpp +++ b/src/nt.cpp @@ -60,15 +60,24 @@ TypeDef NTScalar::build() const Member(scalar, "limitLow"), Member(scalar, "limitHigh"), String("description"), - //String("format"), String("units"), }), }; + if(form) { + def += { + Struct("display", { + Int32("precision"), + Struct("form", "enum_t", { + Int32("index"), + StringA("choices"), + }), + }), + }; + } } else if(display && !isnumeric) { def += { Struct("display", { String("description"), - //String("format"), String("units"), }), }; diff --git a/src/pvxs/nt.h b/src/pvxs/nt.h index b48b540..30deb70 100644 --- a/src/pvxs/nt.h +++ b/src/pvxs/nt.h @@ -67,13 +67,19 @@ struct NTScalar { bool control; //! Include alarm (range) meta-data bool valueAlarm; + /** Include 'display.form' and 'display.precision' when 'value' is a numeric type + * @pre requires display=true + * @since UNRELEASED + */ + bool form; constexpr NTScalar(TypeCode value = TypeCode::Float64, bool display = false, bool control = false, - bool valueAlarm = false) - :value(value), display(display), control(control), valueAlarm(valueAlarm) + bool valueAlarm = false, + bool form = false) + :value(value), display(display), control(control), valueAlarm(valueAlarm), form(form) {} //! A TypeDef which can be appended