Migration from V4.9.6 to V5.1.1

Hello all,
First of all, I been using MWG for nearly 3 years and I am still astonished of the quality and potential of this little gem (special kudos to Paul)
I have developped an application using MapWinGis V4.9.6 in Labwindows CVI (plain C) through a generated instrument driver.In short, LCVI automatically generates C-callable functions that expose all MapWinGis API functions to plain C.
It’s a bit cumbersome and decidedly “unmanaged”, but it works quite well and offers stable GIS features to a rather large pre-existing source code in plain C.
For the next release of my app, I would like to upgrade to V5.1.1 for maintenance purpose, but I am concerned about the amount of work/risk involved (running on a tight budget)
I seem to remember reading somewhere that migrating from V4 to V5 would imply incompatibility in function prototypes, but I have not been able to find a more recent API documentation
than this one https://www.mapwindow.org/documentation/mapwingis4.9/index.html for V4.9.3+.
Is it the case?
If so, does it mean that V5.1 API is largely the same as V4.9.6 (meaning that migration should be very easy)?
I thank you in advance for your replies/advices
Best regards
Igor

Hello @Igor, and welcome.

Referencing the ‘Releases’ page, you can see the changes that have occurred since 4.9.6. I can’t say that your migration will be ‘very easy’, but I do believe that most of the changes since 4.9.6 have been internal or additive (more new calls than modified calls).

Some function templates have changed, however. Are you able to re-run the LCVI to update your callable API?

Regards,
Jerry.

Hello Jerry
Thank you for your very quick answer. I had read the release notes, but was not able to assess the exact impact on my code (I have 300+ calls to MWG functions): your answer gave me the push I needed, for fear of having a difficult time to revert to 4.9.6 in case of major troubles.
I generated a new instrument driver for MGW5.1.1 32bits/VS 2017 and diff-ed its header with the one for MWG4.9.6. As you said, the differences consist mainly in new functions. A few seem to have been removed/made private (eg. ReSourceLayer) to be replaced by new functionnalities
or renamed (eg.ShapeDrawingOptionsDrawRectangleVB->ShapeDrawingOptionsDrawRectangle) but I didn’t use them. It was also useful to get the exact template for new exciting functions such as [MWGIS-33]GdalUtils/GdalRasterTranslate, that will readily replace my system calls.
The only changed prototype in my code was for SnapShot(object->Extent).
After this small adjustment, everything compiles without warning, and, up to now, seems to work fine :grin:.
Once again,thank you for your answer, and most of all, for making MapWinGis such a great tool.
Best regards
Igor
PS: If it can be of any use, I attach a diff.zip text file of the differences between my 2 API headers: it may (or may not) give some hints about API evolutions. Just keep in mind that these are only for plain-C user, so the parameter list differs from the simpler one for C# or VB users (use of extra context parametres and return values)
diff.zip (2.7 KB)