RFC 17: Dynamic Array Sizing

Frank Warmerdam warmerdam at POBOX.COM
Fri May 12 16:02:54 EDT 2006

Ned Harding wrote:
> Is there any reason not to just use C++?  It would make stuff like this
> trivial to do.  MapServer already basically requires OGR which is C++,
> I'd be surprised if its compiled anywhere without a C++ compiler.


Currently MapServer exposes many of the raw C structures to mapscript.
So turning them into nice C++ classes with proper data hiding and so
forth would be a dramatic shift and certainly not one I am willing to
contemplate.  In fact, this promiscuous exposure of structure internals
makes many kinds of dramatic changes difficult without breaking all
existing mapscript applications.

I would add that it is my intention for MapServer 5.0 to restructure
the mapogr.cpp to use the OGR C API since the C++ linkage to OGR
causes all sorts of fragility which is undesirable.

In this RFC I am aiming for a minimum of work and churn in order to
make the important objects all dynamically sized.

> And presuming that idea gets shot down, your RFC mentions growing stuff
> 1 object at a time.  I've already fixed 1 bug like that in MapServer,
> because when you have LOTS of objects that kills memory allocators and
> performance.  Growth should happen by a percentage so it doesn't have to
> happen too often.  I would recommend growing by at least 25% and double
> every time rarely seems like a mistake.

While I wasn't explicit in the RFC, the various "grow" functions will ensure
there is at least one additional object but will normally double the
allocation when growth is needed.  I am aware of the "grow by one" realloc
issue and will ensure it does not occur.

Best regards,
I set the clouds in motion - turn up   | Frank Warmerdam, warmerdam at pobox.com
light and sound - activate the windows | http://pobox.com/~warmerdam
and watch the world go round - Rush    | President OSGF, http://osgeo.org

More information about the mapserver-dev mailing list