Skip to main content

Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Eclipse Titan » Titan Architecture internals: On why index operators in the generated code have signed parameter(Some background information that is important to know when developing Titan)
Titan Architecture internals: On why index operators in the generated code have signed parameter [message #1747584] Wed, 16 November 2016 09:07
Kristof Szabados is currently offline Kristof SzabadosFriend
Messages: 79
Registered: July 2009
There is a question repeated often by developers who work join the Titan development team: why is the parameter of indexing operators in the generated code always signed?

At first this might not make too much sense: most of the time valid indexes can only be positive integers and 0.
Using an unsigned int type would sound reasonable, but it easy to show in a few steps why that would not be a good idea.

1st step:
Whenever a piece of C++ code is generated or made available in the Titan libraries ... we have to assume that user will use (maybe even misuse) them.

This is not unexpected. In external functions, users have to work with our code on the C/C++ level.
for example: to read from an input into a charstring in an external function ... one has to work with the Charstring class directly.

2nd step:
The TTCN-3 standard requires that the language rules are kept in each point of the execution.

This has nothing to do with compile time checking ... that does not protect against corrupted data appearing at runtime, misconfiguration, etc...
So it is required to check several rules in the runtime.
For example: if the received function parameter bound, is the index parameter a negative number or overflowing.

And we are already at the point where the implementation of index operators have to check it's parameter for boundness and being within bounds, before doing any operations with it.

3rd step:
We also need pay attention to the error messages reported by Titan.
Most of the time users are working with large and complex systems, within strict timelimits ... and might not be experts in the details of C/C++ memory management details.

So when the -1th element of a record of/set of/charstring/etc.. is requested it is preferable when the error message also mentions the -1 number.
But if we use unsigned int types, the C/C++ compiler would implicitly convert, resulting in:
- in best case an error message telling that we are trying to index the 2^64-1 -th element of a much shorter structure.
- in worst the runtime might try to allocate 2^64-1 *(some amount) memory to extend the data structure.
Previous Topic:Octetstring Manipulation
Next Topic:Eclipse Titan hangs due to waiting user operation
Goto Forum:

Current Time: Sat Nov 17 17:33:19 GMT 2018

Powered by FUDForum. Page generated in 0.02224 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top