READ CAREFULLY: On breaking the InputPort::read() API

There was a discussion on Orocos Developers where we were looking into these
issues of the data flow ports:
* a port->read(value) that returns OldData fills in value, which means:
-- the port needs to cache each last value, even if the user will never use it
-- this caching breaks data management since another copy 'always' lives
(until a new sample arrives)
* There's no circular buffer
-- we agreed here to add it in addition to the current buffer in the connection

What remains a big issue is if we should break port->read(value) such that it
does not touch 'value' if the current sample was once read before. The
rationale is that if you need this case, you can simply change:

&#10;SomeData value;&#10;if ( != NoData ) {&#10;   // do something with &#039;value&#039;, it&#039;s filled in!&#10;   // allowed to change &#039;value&#039; too, it will be overwritten&#10;   // during the next read !&#10;}&#10;


&#10; // SomeData value; --&gt; moved to the class as member variable !&#10;if ( != NoData ) {&#10;   // do something with &#039;value&#039;, it&#039;s filled in by previous NewData read!&#10;   // not allowed to change value directly since we might need it&#10;   // in the next loop !&#10;}&#10;

The advantage is mainly in code size and copy-efficiency of the data in the data
flow. By removing this feature, we don't have to keep a copy of the old sample
and we can simplify the implementation

We'd like to get an idea of:
- Does your code use this case ? (a lot ?)
- Would you mind adapting it when upgrading ?
- Would you agree if we put a warning system in this to flag when new vs old
would give a different result ?
- What's your opinion overall on this ?

No matter what the decision is, this won't affect 2.5...


PS: please reply to the orocos-users list only.