Hello Christofer,
I think these proposals will clarify a lot of state handling we had spread across drivers due to inability to propagate context during the parsing time. Maybe we will be able to even get some of encryption stuff utilize that? :)

Great to see these ideas. Only one concern is to keep these compile time, so we can assure that what we generate from mspec does not refer unknown/mistaken globals.

Kind regards,
Łukasz

On 8/28/25 12:20, Christofer Dutz wrote:
Hi all,

I just had a short call with Sebastian.

I’d like to propose 4 things:


   *
Introduce a field type „state“ which is syntactically similar to „virtual“ 
fields. However, is backed by a property. This would eliminate the need for the 
„generate-fields-for-parser-arguments“.
   *
Introduce a new top-level construct: „globals“ where you define properties, 
which need to be passed to the parser and serialized and are globally available 
to all levels during parsing and can be accessed via patterns such as 
„globals.someGlobalProperty“
   *
Introduce a new top-level construct: „context“ where you define properties, 
which need to be  passed to the parser and serialized and are globally 
available to all levels during parsing and can be accessed via patterns such as 
„globals.someGlobalProperty“ (In general this is pretty much the same as 
globals, however is used to carry request context and not global context
   *
Introduce a new top-level construct „constants“ which would generate types that 
only have „const“ fields … currently we’re mis-using simple types for this, but 
they have parsers, serializers getLenghtInBits/Bytes and constructors, which we 
actually don’t need.

What do you think?

Chris

Von: Christofer Dutz <[email protected]>
Datum: Donnerstag, 28. August 2025 um 08:48
An: [email protected] <[email protected]>
Betreff: [DISCUSS] introduce an explicit field type for parser arguments?

Hi all,

While working on implementing a new java code gen based on JavaPoet I came 
across one thing that I’m not really happy with.

In BacNet, c-bus, eip and Profinet to we use the 
„generate-properties-for-parser-arguments“ option in the code generation, which 
makes parser arguments available as properties.
This does solve the problem in a hand full of cases. However, does it make the 
code quite ugly.

I was thinking of introducing a new field type „argument“ which you would simply 
give a „name" and it would take the parser arguments type information and only 
output such a field where needed.

This would clean up things and not have these artificial properties generated 
EVERYWHERE (currently they are generated in the parent as well as the children)

What do you think?

Chris


Reply via email to