Great job. +1

Jinlin Hong

Sebastian Rühl <sru...@apache.org> 於 2024年9月27日 週五 下午3:07寫道:

> Awesome work, sounds good to me.
>
> +1
>
> (although about the List type I have to think a bit more... :D)
>
>  - Sebastian
>
> On 2024/09/27 06:37:32 Christofer Dutz wrote:
> > Hi all,
> >
> > so I have been spending a lot more time than I wanted to on cleaning up
> in the PlcValues and especially the PlcValueHandler.
> >
> > Here I’ve noticed a few things:
> >
> >   *   We had some PlcValues extens the IECValue type and some a
> SimplePlcValue type … I updated all to have the same base-type
> >   *   Now all PlcValue types have an “of” method and constructors
> accepting the major types: Byte, Short, Integer, Long, Float, Double,
> BigInteger, BigDecimal, String (and some also specialized ones like:
> Boolean, Duration, LocalTime, LocalDate, LocalDateTime.
> >
> > In order to allow creating almost any PlcValue with almost any Java
> type, for the temporal types I had to decide which “encoding” the numeric
> values are in. In general did I allow floating-point values, which are
> simply treated as integers (ignoring the fractional part). However this
> unified approach makes using them easier, but it makes less use of the
> possible value range. While a long is able to produce any sensible date, a
> byte can only reference dates on the first day of 1970.
> >
> > Now we could use different measures depending on the type, but I think
> that makes things a lot more complicated. If a PlcDATE for example would
> use “byte” as days of the current year (we could somehow use it a bit, but
> it wouldn’t be able to represent a full year), a short could be something
> different …
> >
> > I would say, we stick to one unified measure for all numeric
> constructors per type and if somone thinks it’s a good idea to represent a
> date with a byte, that’s his problem to solve. Otherwise, I could imagine a
> complete cascade of possible problems: Someone has an existing PLC4X
> program and notices that one variable, which was a short, now requires an
> integer … as soon as he changes that the code stays compatible, but now the
> conversion of value-to-plcvalue uses a different measure.
> >
> > For allowing to support different measures for the temporal fields, I
> would much more suggest to use speaking constructor methods (as we have
> been doing) … something like:
> >
> > PlcLTIME.ofNannoseconds
> > PlcLTIME_OF_DAY.ofNannosecondsSinceMidnight
> > PlcDATE.ofSecondsSinceEpoch
> > PlcDATE.ofDaysSinceEpoch
> > …
> >
> > And one last thing … I would like to remove the LIST type in
> PlcValueTypes as this is actually not a type, it’s more an implementation
> detail of how we implement array types.
> >
> > What do you think?
> >
> > As discussions on the Plc4x mailing list have become sort of monolouges
> again, till I hear any real objection, I’ll continue my path (However if
> you support me, leaving a +1 lets me feel less like I’m wasting my time
> even trying to discuss things)
> >
> >
> > Chris
> >
>

Reply via email to