See the [manual](https://libsemigroups.readthedocs.io/en/latest/installation.html) for details of how to do this.
Object | Convention |
class | NamedLikeThis |
struct | NamedLikeThis |
function | named_like_this |
enum class | namedlikethis |
enum class member | named_like_this |
stateful type alias | named_like_this_type |
stateless type alias | LikeThis |
iterator | iterator or const_iterator |
global variable | NAMED_LIKE_THIS |
Try to ensure that any new functionality added to libsemigroups
satisfies
the strong exception guarantee, and if not that this is documented.
To run lldb:
./configure --enable-debug && make test_all
libtool --mode=execute lldb test_all
test_all is the name of the check program produced by make check. Similarly to run valgrind you have to do:
./configure --enable-debug --disable-hpcombi && make test_all
libtool --mode=execute valgrind --leak-check=full ./test_all [quick] 2>&1 | tee --append valgrind.txt
Any new tests should be tagged with one of the following:
Tag | Runtime |
quick | < 200ms |
standard | < 3s |
extreme | > 3s |
They should be declared using
LIBSEMIGROUPS_TEST_CASE(classname, number, message, tags)
"tags" should include "[FilePrefix]" where "FilePrefix" would be "cong-pair" in the file "tests/cong-pair.test.cc", if the file prefix is the same as "classname", then it should not be included. Tags are case insensitive.
A *bugfix release* is one of the form x.y.z -> x.y.z+1, and a *non-bugfix release* is one of the form x.y.z -> x+1.y.z or x.y+1.z.
Use the script etc/release-libsemigroups.py.