-----Original Message----- From: opalvoip-devel-bounces@lists.sourceforge.net [mailto:opalvoip- devel-bounces@lists.sourceforge.net] On Behalf Of Jan Willamowius
....
a smaller memory foot print would of course be nice, but the current size isn't much of a problem for GnuGk. I'd have to take see some examples of the new interface to get a clearer picture, but I would guess GnuGk would be hit pretty hard by those changes since GnuGk doesn't use much of the framework hiding the ASN classes. Thus I'd prefer to keep the old parser.
The changes are fairly mechanical, though just too difficult to completely automate as an awk script. Essentially you have code like:
obj.m_field = value;
is changed to
obj.set_field(value);
and
obj.SetTag(H245_Blah::e_BlahChoice); H245_BlahsChoice & blah = obj;
becomes
H245_BlahsChoice & blah = obj.select_BlahChoice();
At run time, the only semantic different is that optional fields that are absent from the encoding have no default value. So for something like:
Blah :: SEQUENCE { field1 INTEGER field2 INTEGER OPTIONAL }
We might have had in the past:
if (obj.m_field2 != 0)
and assumed a default value of the field2 was not encoded. Now if this code is changed to:
if (obj.get_field2() != 0)
it will assert, it has to be:
if (obj.field2_isSelected() && obj.get_field2() != 0)
P.S. I have actually done this conversion once before, it's a relatively big job, but 99.9% of the errors were picked up by the compiler.
Robert Jongbloed OPAL/OpenH323 Architect and Co-founder.