Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revisionLast revisionBoth sides next revision | ||
reference:extensions [2015/12/11 14:43] – [Starting an own extension] schroeter | user_guide:extend:extensions [2019/11/11 23:38] – ↷ Links adapted because of a move operation gawrilow | ||
---|---|---|---|
Line 7: | Line 7: | ||
* C++ clients and class libraries | * C++ clients and class libraries | ||
- | // | ||
===== Starting an own extension ===== | ===== Starting an own extension ===== | ||
Line 35: | Line 34: | ||
In the case your extension needs a third-party library to build the C++ clients, you should provide a pre-build configuration procedure performing some preparations and sanity checks like adding compiler and linker flags necessary to find this library, asserting that its version is not too old for you, etc. | In the case your extension needs a third-party library to build the C++ clients, you should provide a pre-build configuration procedure performing some preparations and sanity checks like adding compiler and linker flags necessary to find this library, asserting that its version is not too old for you, etc. | ||
- | All this is done in a script '' | + | All this is done in a script '' |
The script template contains comments describing the purpose and signature of each mandatory function; you may also want to look for the examples into the configuration scripts of extensions bundled with polymake. | The script template contains comments describing the purpose and signature of each mandatory function; you may also want to look for the examples into the configuration scripts of extensions bundled with polymake. | ||
Line 81: | Line 80: | ||
In the case of a large team working together on an extension individual contributions may still be distinguished by usual | In the case of a large team working together on an extension individual contributions may still be distinguished by usual | ||
- | [[reference: | + | [[user_guide: |
===== Managing changes in data model ===== | ===== Managing changes in data model ===== | ||
Line 113: | Line 112: | ||
When polymake loads a very old data file lying behind several version bumps, all transformations between its version and the current version are applied in the proper (ascending) order; thus each transformation stylesheet should only contain converting operations specific for a single version bump. | When polymake loads a very old data file lying behind several version bumps, all transformations between its version and the current version are applied in the proper (ascending) order; thus each transformation stylesheet should only contain converting operations specific for a single version bump. | ||
+ | ===== Writing testcases ==== | ||
+ | |||
+ | It is always a good idea - especially if your extension is large - to write unit tests for your code. Those are essentially small examples which test individual rules and functions. One advantage of this is that you will quickly notice if a change in your code (or in a new polymake release) breaks something in your extension. Polymake offers a convenient set of tools for this, you can find a full description [[user_guide: | ||
===== Using other people' | ===== Using other people' | ||
Line 125: | Line 127: | ||
===== Relations between extensions ===== | ===== Relations between extensions ===== | ||
- | Extensions may build upon each other, establishing dependence relations similar to software packages installed on your computer. | + | Extensions may build upon each other, establishing dependence relations similar to software packages installed on your computer. |
? '' | ? '' |