Tuts/Aritcles: Incrementasl C++-to-D conversion?

biocyberman biocyberman at gmail.com
Fri Feb 23 12:44:51 UTC 2018


On Thursday, 22 February 2018 at 08:43:24 UTC, ketmar wrote:
> Nick Sabalausky (Abscissa) wrote:
>
>> [...]
>
> from my experience (various codebases up to middle size, mostly 
> C, some C++): fsck the "one module at a time" idea! even in D 
> modules are interwined, and in C and C++ they're even more so. 
> besides, converting tests is tedious, it is much funnier to 
> have something working.
>
> so, i'm usually converting alot of code, up to the whole 
> codebase. it is not fun when compler spits 100500 errors, but 
> when it finally stops... oh, joy!
>
> trick: use 'sed' (or your favorite regexp search-and-replace 
> tool) alot. basically, before HDD crash i almost had a set of 
> scripts that does 80-90 percents of work translating C to D 
> with sed. ;-) then use editor with "jump to error line" 
> support, and simply compile your code, fixing errors one by one.
>
> tip: try to not rewrite code in any way until it works. i know 
> how tempting it to replace "just this tiny thing, it is so 
> ugly, and in D we have a nice idiom!" NEVAR. this is by far the 
> most important thing to remember (at least for me), so i'll 
> repeat it again: no code modifications until it works!
>
> personal memories: C code often using things like `a == 
> &arr[idx]`, where idx can go just past the last array element. 
> it got me when i was doing enet conversion. nasty trick.
>
> otherwise, sweat and blood, and patience.

These are good starting point so we don't get lost in the 
process. Still not much exprience doing, but I think these pieces 
of advice are especially true if the codebase is big or 
complicated, making it difficult to understand what the C/C++ is 
doing.  When we don't understand the code, re-writing from 
scratch is not possible.


More information about the Digitalmars-d-learn mailing list