I’m wrapping a C++ library in PHP using SWIG and there have been some occasions where I want to modify the generated code (both generated C++ and PHP):
- Fix code-generation errors
- Add code that makes sense in PHP, but not in C++ (e.g. type checking)
- Add documentation tags (e.g. phpDoc)
I’m currently automating these modifications with patch. This approach works, but it seems high-maintenance and fragile. Is there a better way of doing this?
The best bet is to have your code generator generate correct code for your needs. Hand-tweaking generated output is unsustainable. You’ll have to tweak it again any time the input changes.
If a tool is producing flatly erroneous output, it’s ideal to repair it and submit patches back to the maintainer. If the output is correct for some circumstances but wrong for yours, I’d suggest to add an option that changes the behavior to what you need.
Sometimes, you can use a short program that automatically does an intelligent job of patching your generated code, so that you don’t need a manual process to make patches.
Alternatively, you could write your own code generator, but I suspect that’s much more work than you want. It also depends on what you’re doing. Sometimes code-generation is really just macro-expansion, and there are plenty of good tools for that in the wild.
Good luck!