Copy disabled (too large)
Download .txt
Showing preview only (17,185K chars total). Download the full file to get everything.
Repository: mjwybrow/adaptagrams
Branch: master
Commit: 840ebcff20db
Files: 1011
Total size: 16.2 MB
Directory structure:
gitextract_8ysjozhi/
├── .github/
│ └── workflows/
│ └── build-and-test.yml
├── .gitignore
├── README.md
├── cola/
│ ├── .gitignore
│ ├── AUTHORS
│ ├── COPYING
│ ├── ChangeLog
│ ├── Doxyfile
│ ├── INSTALL
│ ├── LICENSE
│ ├── Makefile-swig-java
│ ├── Makefile-swig-python
│ ├── Makefile.am
│ ├── NEWS
│ ├── README
│ ├── __init__.py
│ ├── adaptagrams.i
│ ├── autogen.sh
│ ├── buildPythonSWIG.sh
│ ├── buildSWIGVersionForMac.sh
│ ├── configure.ac
│ ├── libavoid/
│ │ ├── Doxyfile
│ │ ├── LICENSE.LGPL
│ │ ├── Makefile.am
│ │ ├── README
│ │ ├── actioninfo.cpp
│ │ ├── actioninfo.h
│ │ ├── assertions.h
│ │ ├── connectionpin.cpp
│ │ ├── connectionpin.h
│ │ ├── connector.cpp
│ │ ├── connector.h
│ │ ├── connend.cpp
│ │ ├── connend.h
│ │ ├── debug.h
│ │ ├── debughandler.h
│ │ ├── dllexport.h
│ │ ├── doc/
│ │ │ ├── description.doc
│ │ │ └── example.doc
│ │ ├── geometry.cpp
│ │ ├── geometry.h
│ │ ├── geomtypes.cpp
│ │ ├── geomtypes.h
│ │ ├── graph.cpp
│ │ ├── graph.h
│ │ ├── hyperedge.cpp
│ │ ├── hyperedge.h
│ │ ├── hyperedgeimprover.cpp
│ │ ├── hyperedgeimprover.h
│ │ ├── hyperedgetree.cpp
│ │ ├── hyperedgetree.h
│ │ ├── junction.cpp
│ │ ├── junction.h
│ │ ├── libavoid.h
│ │ ├── libavoid.pc.in
│ │ ├── libavoid.sln
│ │ ├── libavoid.vcxproj
│ │ ├── makepath.cpp
│ │ ├── makepath.h
│ │ ├── mtst.cpp
│ │ ├── mtst.h
│ │ ├── obstacle.cpp
│ │ ├── obstacle.h
│ │ ├── orthogonal.cpp
│ │ ├── orthogonal.h
│ │ ├── router.cpp
│ │ ├── router.h
│ │ ├── scanline.cpp
│ │ ├── scanline.h
│ │ ├── shape.cpp
│ │ ├── shape.h
│ │ ├── tests/
│ │ │ ├── 2junctions.cpp
│ │ │ ├── Makefile.am
│ │ │ ├── buildOrthogonalChannelInfo1.cpp
│ │ │ ├── checkpointNudging1.cpp
│ │ │ ├── checkpointNudging2.cpp
│ │ │ ├── checkpointNudging3.cpp
│ │ │ ├── checkpoints01.cpp
│ │ │ ├── checkpoints02.cpp
│ │ │ ├── checkpoints03.cpp
│ │ │ ├── complex.cpp
│ │ │ ├── connectionpin01.cpp
│ │ │ ├── connectionpin02.cpp
│ │ │ ├── connectionpin03.cpp
│ │ │ ├── connendmove.cpp
│ │ │ ├── corneroverlap01.cpp
│ │ │ ├── endlessLoop01.cpp
│ │ │ ├── example.cpp
│ │ │ ├── finalSegmentNudging1.cpp
│ │ │ ├── finalSegmentNudging2.cpp
│ │ │ ├── finalSegmentNudging3.cpp
│ │ │ ├── forwardFlowingConnectors01.cpp
│ │ │ ├── freeFloatingDirection01.cpp
│ │ │ ├── hola01.cpp
│ │ │ ├── hyperedge01.cpp
│ │ │ ├── hyperedge02.cpp
│ │ │ ├── hyperedgeLoop1.cpp
│ │ │ ├── hyperedgeRerouting01.cpp
│ │ │ ├── improveHyperedge01.cpp
│ │ │ ├── improveHyperedge02.cpp
│ │ │ ├── improveHyperedge03.cpp
│ │ │ ├── improveHyperedge04.cpp
│ │ │ ├── improveHyperedge05.cpp
│ │ │ ├── improveHyperedge06.cpp
│ │ │ ├── infinity.cpp
│ │ │ ├── inline.cpp
│ │ │ ├── inlineOverlap09.cpp
│ │ │ ├── inlineOverlap10.cpp
│ │ │ ├── inlineOverlap11.cpp
│ │ │ ├── inlineShapes.cpp
│ │ │ ├── inlineoverlap01.cpp
│ │ │ ├── inlineoverlap02.cpp
│ │ │ ├── inlineoverlap03.cpp
│ │ │ ├── inlineoverlap04.cpp
│ │ │ ├── inlineoverlap05.cpp
│ │ │ ├── inlineoverlap06.cpp
│ │ │ ├── inlineoverlap07.cpp
│ │ │ ├── inlineoverlap08.cpp
│ │ │ ├── junction01.cpp
│ │ │ ├── junction02.cpp
│ │ │ ├── junction03.cpp
│ │ │ ├── junction04.cpp
│ │ │ ├── latesetup.cpp
│ │ │ ├── lineSegWrapperCrash1.cpp
│ │ │ ├── lineSegWrapperCrash2.cpp
│ │ │ ├── lineSegWrapperCrash3.cpp
│ │ │ ├── lineSegWrapperCrash4.cpp
│ │ │ ├── lineSegWrapperCrash5.cpp
│ │ │ ├── lineSegWrapperCrash6.cpp
│ │ │ ├── lineSegWrapperCrash7.cpp
│ │ │ ├── lineSegWrapperCrash8.cpp
│ │ │ ├── msctests/
│ │ │ │ ├── 2junctions.vcxproj
│ │ │ │ ├── buildOrthogonalChannelInfo1.vcxproj
│ │ │ │ ├── checkpointNudging1.vcxproj
│ │ │ │ ├── checkpointNudging2.vcxproj
│ │ │ │ ├── checkpoints01.vcxproj
│ │ │ │ ├── connectionpin01.vcxproj
│ │ │ │ ├── connectionpin02.vcxproj
│ │ │ │ ├── connectionpin03.vcxproj
│ │ │ │ ├── connendmove.vcxproj
│ │ │ │ ├── corneroverlap01.vcxproj
│ │ │ │ ├── example.vcxproj
│ │ │ │ ├── finalSegmentNudging1.vcxproj
│ │ │ │ ├── finalSegmentNudging2.vcxproj
│ │ │ │ ├── finalSegmentNudging3.vcxproj
│ │ │ │ ├── freeFloatingDirection01.vcxproj
│ │ │ │ └── junction01.vcxproj
│ │ │ ├── multiconnact.cpp
│ │ │ ├── node1.cpp
│ │ │ ├── nudgeCrossing01.cpp
│ │ │ ├── nudgeintobug.cpp
│ │ │ ├── nudgeold.cpp
│ │ │ ├── nudgingSkipsCheckpoint01.cpp
│ │ │ ├── nudgingSkipsCheckpoint02.cpp
│ │ │ ├── orderassertion.cpp
│ │ │ ├── orthordering01.cpp
│ │ │ ├── orthordering02.cpp
│ │ │ ├── output/
│ │ │ │ └── README.txt
│ │ │ ├── overlappingRects.cpp
│ │ │ ├── penaltyRerouting01.cpp
│ │ │ ├── performance01.cpp
│ │ │ ├── reallyslowrouting.cpp
│ │ │ ├── removeJunctions01.cpp
│ │ │ ├── restrictedNudging.cpp
│ │ │ ├── slowrouting.cpp
│ │ │ ├── tjunct.cpp
│ │ │ ├── treeRootCrash01.cpp
│ │ │ ├── treeRootCrash02.cpp
│ │ │ ├── unsatisfiableRangeAssertion.cpp
│ │ │ ├── validPaths01.cpp
│ │ │ ├── validPaths02.cpp
│ │ │ └── vertlineassertion.cpp
│ │ ├── timer.cpp
│ │ ├── timer.h
│ │ ├── vertices.cpp
│ │ ├── vertices.h
│ │ ├── viscluster.cpp
│ │ ├── viscluster.h
│ │ ├── visibility.cpp
│ │ ├── visibility.h
│ │ ├── vpsc.cpp
│ │ └── vpsc.h
│ ├── libcola/
│ │ ├── Makefile.am
│ │ ├── box.cpp
│ │ ├── box.h
│ │ ├── cc_clustercontainmentconstraints.cpp
│ │ ├── cc_clustercontainmentconstraints.h
│ │ ├── cc_nonoverlapconstraints.cpp
│ │ ├── cc_nonoverlapconstraints.h
│ │ ├── cluster.cpp
│ │ ├── cluster.h
│ │ ├── cola.cpp
│ │ ├── cola.h
│ │ ├── cola_log.h
│ │ ├── colafd.cpp
│ │ ├── commondefs.h
│ │ ├── compound_constraints.cpp
│ │ ├── compound_constraints.h
│ │ ├── conjugate_gradient.cpp
│ │ ├── conjugate_gradient.h
│ │ ├── connected_components.cpp
│ │ ├── connected_components.h
│ │ ├── convex_hull.cpp
│ │ ├── convex_hull.h
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── exceptions.h
│ │ ├── gradient_projection.cpp
│ │ ├── gradient_projection.h
│ │ ├── libcola.pc.in
│ │ ├── output_svg.cpp
│ │ ├── output_svg.h
│ │ ├── pseudorandom.cpp
│ │ ├── pseudorandom.h
│ │ ├── shapepair.cpp
│ │ ├── shapepair.h
│ │ ├── shortest_paths.h
│ │ ├── sparse_matrix.h
│ │ ├── straightener.cpp
│ │ ├── straightener.h
│ │ ├── tests/
│ │ │ ├── FixedRelativeConstraint01.cpp
│ │ │ ├── Makefile.am
│ │ │ ├── StillOverlap01.cpp
│ │ │ ├── StillOverlap02.cpp
│ │ │ ├── boundary.cpp
│ │ │ ├── connected_components.cpp
│ │ │ ├── constrained.cpp
│ │ │ ├── containment.cpp
│ │ │ ├── containment2.cpp
│ │ │ ├── convex_hull.cpp
│ │ │ ├── cycle_detector.cpp
│ │ │ ├── data/
│ │ │ │ ├── 1138_bus.txt
│ │ │ │ └── uetzNetworkGSC-all.gml
│ │ │ ├── gml_graph.cpp
│ │ │ ├── graphlayouttest.h
│ │ │ ├── initialOverlap.cpp
│ │ │ ├── invalid.cpp
│ │ │ ├── large_graph.cpp
│ │ │ ├── makefeasible.cpp
│ │ │ ├── makefeasible02.cpp
│ │ │ ├── makemovie.sh
│ │ │ ├── max_acyclic_subgraph.cpp
│ │ │ ├── overlappingClusters01.cpp
│ │ │ ├── overlappingClusters02.cpp
│ │ │ ├── overlappingClusters04.cpp
│ │ │ ├── page_bounds.cpp
│ │ │ ├── planar.cpp
│ │ │ ├── random_graph.cpp
│ │ │ ├── rectangularClusters01.cpp
│ │ │ ├── rectclustershapecontainment.cpp
│ │ │ ├── resize.cpp
│ │ │ ├── runtest.sh
│ │ │ ├── scale_free.cpp
│ │ │ ├── shortest_paths.cpp
│ │ │ ├── small_graph.cpp
│ │ │ ├── sparse_matrix.cpp
│ │ │ ├── test_cg.cpp
│ │ │ ├── topology.cpp
│ │ │ ├── trees.cpp
│ │ │ ├── unconstrained.cpp
│ │ │ ├── unsatisfiable.cpp
│ │ │ ├── view_cd_output.sh
│ │ │ └── view_mas_output.sh
│ │ └── unused.h
│ ├── libdialect/
│ │ ├── Makefile.am
│ │ ├── aca.cpp
│ │ ├── aca.h
│ │ ├── bendseqlookup.cpp
│ │ ├── chains.cpp
│ │ ├── chains.h
│ │ ├── commontypes.h
│ │ ├── constraints.cpp
│ │ ├── constraints.h
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── edges.cpp
│ │ ├── expansion.cpp
│ │ ├── expansion.h
│ │ ├── faces.cpp
│ │ ├── faces.h
│ │ ├── gen_bend_seq_lookup.py
│ │ ├── gen_qa_lookup.py
│ │ ├── graphs.cpp
│ │ ├── graphs.h
│ │ ├── hola.cpp
│ │ ├── hola.h
│ │ ├── io.cpp
│ │ ├── io.h
│ │ ├── libdialect.h
│ │ ├── libdialect.pc.in
│ │ ├── logging.cpp
│ │ ├── logging.h
│ │ ├── nearalign.cpp
│ │ ├── nearalign.h
│ │ ├── nexes.cpp
│ │ ├── nodeconfig.cpp
│ │ ├── nodeconfig.h
│ │ ├── nodes.cpp
│ │ ├── opts.h
│ │ ├── ortho.cpp
│ │ ├── ortho.h
│ │ ├── peeling.cpp
│ │ ├── peeling.h
│ │ ├── planarise.cpp
│ │ ├── planarise.h
│ │ ├── qalookup.cpp
│ │ ├── quadaction.cpp
│ │ ├── quadaction.h
│ │ ├── routing.cpp
│ │ ├── routing.h
│ │ ├── sides.cpp
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── aca.cpp
│ │ │ ├── assignments.cpp
│ │ │ ├── bbox.cpp
│ │ │ ├── bendcosts.cpp
│ │ │ ├── chainconfig01.cpp
│ │ │ ├── chainconfig02.cpp
│ │ │ ├── chainconfig03.cpp
│ │ │ ├── chainsandcycles.cpp
│ │ │ ├── cmplayout01.cpp
│ │ │ ├── collateralexpand01.cpp
│ │ │ ├── collateralexpand02.cpp
│ │ │ ├── conncomps.cpp
│ │ │ ├── containedsegment01.cpp
│ │ │ ├── destress.cpp
│ │ │ ├── destress02.cpp
│ │ │ ├── destress_aca.cpp
│ │ │ ├── expand01.cpp
│ │ │ ├── expand02.cpp
│ │ │ ├── expand03.cpp
│ │ │ ├── expand04.cpp
│ │ │ ├── expand05.cpp
│ │ │ ├── expand06.cpp
│ │ │ ├── expand07.cpp
│ │ │ ├── expand08.cpp
│ │ │ ├── expand09.cpp
│ │ │ ├── extrabdrygap.cpp
│ │ │ ├── faceset01.cpp
│ │ │ ├── faceset02.cpp
│ │ │ ├── graphs/
│ │ │ │ ├── metro/
│ │ │ │ │ ├── london.gml
│ │ │ │ │ ├── london.tglf
│ │ │ │ │ ├── melb.gml
│ │ │ │ │ ├── melb.tglf
│ │ │ │ │ ├── sydney.gml
│ │ │ │ │ ├── sydney.tglf
│ │ │ │ │ ├── wien-kurz.gml
│ │ │ │ │ └── wien-kurz.tglf
│ │ │ │ ├── random/
│ │ │ │ │ ├── makeCorpus.py
│ │ │ │ │ ├── randomGraph
│ │ │ │ │ ├── v100e100.gml
│ │ │ │ │ ├── v100e100.tglf
│ │ │ │ │ ├── v100e110.gml
│ │ │ │ │ ├── v100e110.tglf
│ │ │ │ │ ├── v100e120.gml
│ │ │ │ │ ├── v100e120.tglf
│ │ │ │ │ ├── v100e130.gml
│ │ │ │ │ ├── v100e130.tglf
│ │ │ │ │ ├── v100e140.gml
│ │ │ │ │ ├── v100e140.tglf
│ │ │ │ │ ├── v100e150.gml
│ │ │ │ │ ├── v100e150.tglf
│ │ │ │ │ ├── v10e10.gml
│ │ │ │ │ ├── v10e10.tglf
│ │ │ │ │ ├── v10e11.gml
│ │ │ │ │ ├── v10e11.tglf
│ │ │ │ │ ├── v10e12.gml
│ │ │ │ │ ├── v10e12.tglf
│ │ │ │ │ ├── v10e13.gml
│ │ │ │ │ ├── v10e13.tglf
│ │ │ │ │ ├── v10e14.gml
│ │ │ │ │ ├── v10e14.tglf
│ │ │ │ │ ├── v10e15.gml
│ │ │ │ │ ├── v10e15.tglf
│ │ │ │ │ ├── v110e110.gml
│ │ │ │ │ ├── v110e110.tglf
│ │ │ │ │ ├── v110e121.gml
│ │ │ │ │ ├── v110e121.tglf
│ │ │ │ │ ├── v110e132.gml
│ │ │ │ │ ├── v110e132.tglf
│ │ │ │ │ ├── v110e143.gml
│ │ │ │ │ ├── v110e143.tglf
│ │ │ │ │ ├── v110e154.gml
│ │ │ │ │ ├── v110e154.tglf
│ │ │ │ │ ├── v110e165.gml
│ │ │ │ │ ├── v110e165.tglf
│ │ │ │ │ ├── v120e120.gml
│ │ │ │ │ ├── v120e120.tglf
│ │ │ │ │ ├── v120e132.gml
│ │ │ │ │ ├── v120e132.tglf
│ │ │ │ │ ├── v120e144.gml
│ │ │ │ │ ├── v120e144.tglf
│ │ │ │ │ ├── v120e156.gml
│ │ │ │ │ ├── v120e156.tglf
│ │ │ │ │ ├── v120e168.gml
│ │ │ │ │ ├── v120e168.tglf
│ │ │ │ │ ├── v120e180.gml
│ │ │ │ │ ├── v120e180.tglf
│ │ │ │ │ ├── v130e130.gml
│ │ │ │ │ ├── v130e130.tglf
│ │ │ │ │ ├── v130e143.gml
│ │ │ │ │ ├── v130e143.tglf
│ │ │ │ │ ├── v130e156.gml
│ │ │ │ │ ├── v130e156.tglf
│ │ │ │ │ ├── v130e169.gml
│ │ │ │ │ ├── v130e169.tglf
│ │ │ │ │ ├── v130e182.gml
│ │ │ │ │ ├── v130e182.tglf
│ │ │ │ │ ├── v130e195.gml
│ │ │ │ │ ├── v130e195.tglf
│ │ │ │ │ ├── v140e140.gml
│ │ │ │ │ ├── v140e140.tglf
│ │ │ │ │ ├── v140e154.gml
│ │ │ │ │ ├── v140e154.tglf
│ │ │ │ │ ├── v140e168.gml
│ │ │ │ │ ├── v140e168.tglf
│ │ │ │ │ ├── v140e182.gml
│ │ │ │ │ ├── v140e182.tglf
│ │ │ │ │ ├── v140e196.gml
│ │ │ │ │ ├── v140e196.tglf
│ │ │ │ │ ├── v140e210.gml
│ │ │ │ │ ├── v140e210.tglf
│ │ │ │ │ ├── v150e150.gml
│ │ │ │ │ ├── v150e150.tglf
│ │ │ │ │ ├── v150e165.gml
│ │ │ │ │ ├── v150e165.tglf
│ │ │ │ │ ├── v150e180.gml
│ │ │ │ │ ├── v150e180.tglf
│ │ │ │ │ ├── v150e195.gml
│ │ │ │ │ ├── v150e195.tglf
│ │ │ │ │ ├── v150e210.gml
│ │ │ │ │ ├── v150e210.tglf
│ │ │ │ │ ├── v150e225.gml
│ │ │ │ │ ├── v150e225.tglf
│ │ │ │ │ ├── v160e160.gml
│ │ │ │ │ ├── v160e160.tglf
│ │ │ │ │ ├── v160e176.gml
│ │ │ │ │ ├── v160e176.tglf
│ │ │ │ │ ├── v160e192.gml
│ │ │ │ │ ├── v160e192.tglf
│ │ │ │ │ ├── v160e208.gml
│ │ │ │ │ ├── v160e208.tglf
│ │ │ │ │ ├── v160e224.gml
│ │ │ │ │ ├── v160e224.tglf
│ │ │ │ │ ├── v160e240.gml
│ │ │ │ │ ├── v160e240.tglf
│ │ │ │ │ ├── v170e170.gml
│ │ │ │ │ ├── v170e170.tglf
│ │ │ │ │ ├── v170e187.gml
│ │ │ │ │ ├── v170e187.tglf
│ │ │ │ │ ├── v170e204.gml
│ │ │ │ │ ├── v170e204.tglf
│ │ │ │ │ ├── v170e221.gml
│ │ │ │ │ ├── v170e221.tglf
│ │ │ │ │ ├── v170e238.gml
│ │ │ │ │ ├── v170e238.tglf
│ │ │ │ │ ├── v170e255.gml
│ │ │ │ │ ├── v170e255.tglf
│ │ │ │ │ ├── v180e180.gml
│ │ │ │ │ ├── v180e180.tglf
│ │ │ │ │ ├── v180e198.gml
│ │ │ │ │ ├── v180e198.tglf
│ │ │ │ │ ├── v180e216.gml
│ │ │ │ │ ├── v180e216.tglf
│ │ │ │ │ ├── v180e234.gml
│ │ │ │ │ ├── v180e234.tglf
│ │ │ │ │ ├── v180e252.gml
│ │ │ │ │ ├── v180e252.tglf
│ │ │ │ │ ├── v180e270.gml
│ │ │ │ │ ├── v180e270.tglf
│ │ │ │ │ ├── v190e190.gml
│ │ │ │ │ ├── v190e190.tglf
│ │ │ │ │ ├── v190e209.gml
│ │ │ │ │ ├── v190e209.tglf
│ │ │ │ │ ├── v190e228.gml
│ │ │ │ │ ├── v190e228.tglf
│ │ │ │ │ ├── v190e247.gml
│ │ │ │ │ ├── v190e247.tglf
│ │ │ │ │ ├── v190e266.gml
│ │ │ │ │ ├── v190e266.tglf
│ │ │ │ │ ├── v190e285.gml
│ │ │ │ │ ├── v190e285.tglf
│ │ │ │ │ ├── v200e200.gml
│ │ │ │ │ ├── v200e200.tglf
│ │ │ │ │ ├── v200e220.gml
│ │ │ │ │ ├── v200e220.tglf
│ │ │ │ │ ├── v200e240.gml
│ │ │ │ │ ├── v200e240.tglf
│ │ │ │ │ ├── v200e260.gml
│ │ │ │ │ ├── v200e260.tglf
│ │ │ │ │ ├── v200e280.gml
│ │ │ │ │ ├── v200e280.tglf
│ │ │ │ │ ├── v200e300.gml
│ │ │ │ │ ├── v200e300.tglf
│ │ │ │ │ ├── v20e20.gml
│ │ │ │ │ ├── v20e20.tglf
│ │ │ │ │ ├── v20e22.gml
│ │ │ │ │ ├── v20e22.tglf
│ │ │ │ │ ├── v20e24.gml
│ │ │ │ │ ├── v20e24.tglf
│ │ │ │ │ ├── v20e26.gml
│ │ │ │ │ ├── v20e26.tglf
│ │ │ │ │ ├── v20e28.gml
│ │ │ │ │ ├── v20e28.tglf
│ │ │ │ │ ├── v20e30.gml
│ │ │ │ │ ├── v20e30.tglf
│ │ │ │ │ ├── v30e30.gml
│ │ │ │ │ ├── v30e30.tglf
│ │ │ │ │ ├── v30e33.gml
│ │ │ │ │ ├── v30e33.tglf
│ │ │ │ │ ├── v30e36.gml
│ │ │ │ │ ├── v30e36.tglf
│ │ │ │ │ ├── v30e39.gml
│ │ │ │ │ ├── v30e39.tglf
│ │ │ │ │ ├── v30e42.gml
│ │ │ │ │ ├── v30e42.tglf
│ │ │ │ │ ├── v30e45.gml
│ │ │ │ │ ├── v30e45.tglf
│ │ │ │ │ ├── v40e40.gml
│ │ │ │ │ ├── v40e40.tglf
│ │ │ │ │ ├── v40e42.gml
│ │ │ │ │ ├── v40e42.tglf
│ │ │ │ │ ├── v40e44.gml
│ │ │ │ │ ├── v40e44.tglf
│ │ │ │ │ ├── v40e48.gml
│ │ │ │ │ ├── v40e48.tglf
│ │ │ │ │ ├── v40e52.gml
│ │ │ │ │ ├── v40e52.tglf
│ │ │ │ │ ├── v40e56.gml
│ │ │ │ │ ├── v40e56.tglf
│ │ │ │ │ ├── v40e60.gml
│ │ │ │ │ ├── v40e60.tglf
│ │ │ │ │ ├── v50e50.gml
│ │ │ │ │ ├── v50e50.tglf
│ │ │ │ │ ├── v50e55.gml
│ │ │ │ │ ├── v50e55.tglf
│ │ │ │ │ ├── v50e60.gml
│ │ │ │ │ ├── v50e60.tglf
│ │ │ │ │ ├── v50e65.gml
│ │ │ │ │ ├── v50e65.tglf
│ │ │ │ │ ├── v50e70.gml
│ │ │ │ │ ├── v50e70.tglf
│ │ │ │ │ ├── v50e75.gml
│ │ │ │ │ ├── v50e75.tglf
│ │ │ │ │ ├── v60e60.gml
│ │ │ │ │ ├── v60e60.tglf
│ │ │ │ │ ├── v60e66.gml
│ │ │ │ │ ├── v60e66.tglf
│ │ │ │ │ ├── v60e72.gml
│ │ │ │ │ ├── v60e72.tglf
│ │ │ │ │ ├── v60e78.gml
│ │ │ │ │ ├── v60e78.tglf
│ │ │ │ │ ├── v60e84.gml
│ │ │ │ │ ├── v60e84.tglf
│ │ │ │ │ ├── v60e90.gml
│ │ │ │ │ ├── v60e90.tglf
│ │ │ │ │ ├── v70e105.gml
│ │ │ │ │ ├── v70e105.tglf
│ │ │ │ │ ├── v70e70.gml
│ │ │ │ │ ├── v70e70.tglf
│ │ │ │ │ ├── v70e77.gml
│ │ │ │ │ ├── v70e77.tglf
│ │ │ │ │ ├── v70e84.gml
│ │ │ │ │ ├── v70e84.tglf
│ │ │ │ │ ├── v70e91.gml
│ │ │ │ │ ├── v70e91.tglf
│ │ │ │ │ ├── v70e98.gml
│ │ │ │ │ ├── v70e98.tglf
│ │ │ │ │ ├── v80e104.gml
│ │ │ │ │ ├── v80e104.tglf
│ │ │ │ │ ├── v80e112.gml
│ │ │ │ │ ├── v80e112.tglf
│ │ │ │ │ ├── v80e120.gml
│ │ │ │ │ ├── v80e120.tglf
│ │ │ │ │ ├── v80e80.gml
│ │ │ │ │ ├── v80e80.tglf
│ │ │ │ │ ├── v80e88.gml
│ │ │ │ │ ├── v80e88.tglf
│ │ │ │ │ ├── v80e96.gml
│ │ │ │ │ ├── v80e96.tglf
│ │ │ │ │ ├── v90e108.gml
│ │ │ │ │ ├── v90e108.tglf
│ │ │ │ │ ├── v90e117.gml
│ │ │ │ │ ├── v90e117.tglf
│ │ │ │ │ ├── v90e126.gml
│ │ │ │ │ ├── v90e126.tglf
│ │ │ │ │ ├── v90e135.gml
│ │ │ │ │ ├── v90e135.tglf
│ │ │ │ │ ├── v90e90.gml
│ │ │ │ │ ├── v90e90.tglf
│ │ │ │ │ ├── v90e99.gml
│ │ │ │ │ └── v90e99.tglf
│ │ │ │ ├── sbgn/
│ │ │ │ │ ├── calvin.tglf
│ │ │ │ │ ├── glyco.tglf
│ │ │ │ │ ├── keratan.tglf
│ │ │ │ │ └── urea1.tglf
│ │ │ │ ├── special/
│ │ │ │ │ ├── 3cross4cross.gml
│ │ │ │ │ ├── 3cross4cross.tglf
│ │ │ │ │ ├── 3cross4cross_wTrees.gml
│ │ │ │ │ ├── 3cross4cross_wTrees.tglf
│ │ │ │ │ ├── Arpanet19728_input.tglf
│ │ │ │ │ ├── Belnet2004.tglf
│ │ │ │ │ ├── Cernet.tglf
│ │ │ │ │ ├── Claranet.tglf
│ │ │ │ │ ├── Garr201001.tglf
│ │ │ │ │ ├── GtsSlovakia_input.tglf
│ │ │ │ │ ├── Janetlense.tglf
│ │ │ │ │ ├── SepMatrixIter.tglf
│ │ │ │ │ ├── X_4.gml
│ │ │ │ │ ├── X_4.tglf
│ │ │ │ │ ├── Y_4.gml
│ │ │ │ │ ├── Y_4.tglf
│ │ │ │ │ ├── aspectratio01.gml
│ │ │ │ │ ├── bend_costs.tglf
│ │ │ │ │ ├── bundlecross.gml
│ │ │ │ │ ├── bundlecross.tglf
│ │ │ │ │ ├── bundlerouting.gml
│ │ │ │ │ ├── bundlerouting.tglf
│ │ │ │ │ ├── bundlerouting1.gml
│ │ │ │ │ ├── bundlerouting1.tglf
│ │ │ │ │ ├── bundlerouting2.gml
│ │ │ │ │ ├── bundlerouting2.tglf
│ │ │ │ │ ├── chainconfig01.gml
│ │ │ │ │ ├── chainconfig01.tglf
│ │ │ │ │ ├── chains_and_cycles.gml
│ │ │ │ │ ├── chains_and_cycles.tglf
│ │ │ │ │ ├── cmplayout01.tglf
│ │ │ │ │ ├── cmplayout02.tglf
│ │ │ │ │ ├── cmplayout03.tglf
│ │ │ │ │ ├── cmplayout04.tglf
│ │ │ │ │ ├── coincidentnodes.tglf
│ │ │ │ │ ├── column8.gml
│ │ │ │ │ ├── column8.tglf
│ │ │ │ │ ├── components.gml
│ │ │ │ │ ├── components.tglf
│ │ │ │ │ ├── core_with_trees.gml
│ │ │ │ │ ├── core_with_trees.tglf
│ │ │ │ │ ├── expand02.gml
│ │ │ │ │ ├── expand02.tglf
│ │ │ │ │ ├── expand03.gml
│ │ │ │ │ ├── expand03.tglf
│ │ │ │ │ ├── expand04.gml
│ │ │ │ │ ├── expand04.tglf
│ │ │ │ │ ├── expand04b.gml
│ │ │ │ │ ├── expand04b.tglf
│ │ │ │ │ ├── expand05.gml
│ │ │ │ │ ├── expand05.tglf
│ │ │ │ │ ├── expand07.tglf
│ │ │ │ │ ├── expand08.gml
│ │ │ │ │ ├── expand08.tglf
│ │ │ │ │ ├── expand09.gml
│ │ │ │ │ ├── expand09.tglf
│ │ │ │ │ ├── holasbgn01_layout.tglf
│ │ │ │ │ ├── lone_node.gml
│ │ │ │ │ ├── lone_node.tglf
│ │ │ │ │ ├── nearalign01.gml
│ │ │ │ │ ├── nearalign01.tglf
│ │ │ │ │ ├── octogon.gml
│ │ │ │ │ ├── octogon.tglf
│ │ │ │ │ ├── readconstraints.tglf
│ │ │ │ │ ├── rotate01.gml
│ │ │ │ │ ├── rotate01.tglf
│ │ │ │ │ ├── rotate02.gml
│ │ │ │ │ ├── rotate02.tglf
│ │ │ │ │ ├── routing01.gml
│ │ │ │ │ ├── routing01.tglf
│ │ │ │ │ ├── samesiderouting.gml
│ │ │ │ │ ├── samesiderouting.tglf
│ │ │ │ │ ├── straight_6.gml
│ │ │ │ │ ├── straight_6.tglf
│ │ │ │ │ ├── treeplacement2.gml
│ │ │ │ │ ├── treeplacement2.tglf
│ │ │ │ │ ├── treeplacement3.gml
│ │ │ │ │ ├── treeplacement3.tglf
│ │ │ │ │ ├── treeplacement4.gml
│ │ │ │ │ ├── treeplacement4.tglf
│ │ │ │ │ ├── treeplacement5.gml
│ │ │ │ │ └── treeplacement5.tglf
│ │ │ │ └── trees/
│ │ │ │ ├── tree01.gml
│ │ │ │ ├── tree01.tglf
│ │ │ │ ├── tree01m.gml
│ │ │ │ ├── tree01m.tglf
│ │ │ │ ├── tree02.gml
│ │ │ │ ├── tree02.tglf
│ │ │ │ ├── tree03.gml
│ │ │ │ └── tree03.tglf
│ │ │ ├── hola10.cpp
│ │ │ ├── hola11.cpp
│ │ │ ├── hola12.cpp
│ │ │ ├── holaRand.cpp
│ │ │ ├── hola_arpa.cpp
│ │ │ ├── hola_belnet.cpp
│ │ │ ├── hola_cernet.cpp
│ │ │ ├── hola_claranet.cpp
│ │ │ ├── hola_garr.cpp
│ │ │ ├── hola_janetlense.cpp
│ │ │ ├── hola_slovakia.cpp
│ │ │ ├── hola_tree.cpp
│ │ │ ├── holalonenode.cpp
│ │ │ ├── holametro01.cpp
│ │ │ ├── holasbgn01.cpp
│ │ │ ├── holasbgn02.cpp
│ │ │ ├── holasbgn03.cpp
│ │ │ ├── holasbgn04.cpp
│ │ │ ├── inserttrees01.cpp
│ │ │ ├── leaflessroute01.cpp
│ │ │ ├── leaflessroute02.cpp
│ │ │ ├── lookupqas.cpp
│ │ │ ├── nbroctal.cpp
│ │ │ ├── nearalign01.cpp
│ │ │ ├── nearalign02.cpp
│ │ │ ├── nearby.cpp
│ │ │ ├── negativesepco.cpp
│ │ │ ├── negativezero.cpp
│ │ │ ├── nodeconfig01.cpp
│ │ │ ├── nudgeopt.cpp
│ │ │ ├── output/
│ │ │ │ ├── README.txt
│ │ │ │ └── svg/
│ │ │ │ └── README.txt
│ │ │ ├── partition01.cpp
│ │ │ ├── peel.cpp
│ │ │ ├── planarise01.cpp
│ │ │ ├── planarise02.cpp
│ │ │ ├── projseq01.cpp
│ │ │ ├── readconstraints.cpp
│ │ │ ├── rotate01.cpp
│ │ │ ├── rotate02.cpp
│ │ │ ├── rotate03.cpp
│ │ │ ├── rotate04.cpp
│ │ │ ├── routing01.cpp
│ │ │ ├── sep_matrix_iter.cpp
│ │ │ ├── solidify.cpp
│ │ │ ├── swig_tests/
│ │ │ │ ├── aca.py
│ │ │ │ ├── chainconfig.py
│ │ │ │ ├── destress_aca.py
│ │ │ │ ├── expand.py
│ │ │ │ ├── faceset.py
│ │ │ │ ├── hola.py
│ │ │ │ ├── leafless.py
│ │ │ │ ├── nearalign.py
│ │ │ │ ├── orthohub.py
│ │ │ │ ├── output/
│ │ │ │ │ ├── README.txt
│ │ │ │ │ └── svg/
│ │ │ │ │ └── README.txt
│ │ │ │ ├── planarise.py
│ │ │ │ ├── run_tests
│ │ │ │ └── treeplacement.py
│ │ │ ├── symmtree.cpp
│ │ │ ├── tglf01.cpp
│ │ │ ├── treeboxes01.cpp
│ │ │ ├── treeplacement01.cpp
│ │ │ ├── treeplacement02.cpp
│ │ │ ├── treeplacement03.cpp
│ │ │ ├── trees.cpp
│ │ │ ├── trees2.cpp
│ │ │ └── vpsc01.cpp
│ │ ├── treeplacement.cpp
│ │ ├── treeplacement.h
│ │ ├── trees.cpp
│ │ ├── trees.h
│ │ └── util.h
│ ├── libproject/
│ │ ├── Makefile.am
│ │ ├── project.cpp
│ │ ├── project.h
│ │ ├── project_log.h
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── quadprogpp/
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── QuadProg++.cc
│ │ │ │ ├── QuadProg++.h
│ │ │ │ └── main.cc
│ │ │ ├── random.cpp
│ │ │ ├── simple.cpp
│ │ │ ├── static.cpp
│ │ │ ├── testutil.cpp
│ │ │ ├── testutil.h
│ │ │ ├── treeqp.cpp
│ │ │ ├── treeqp.h
│ │ │ └── treeqptest.cpp
│ │ ├── util.cpp
│ │ ├── util.h
│ │ └── variable.h
│ ├── libtopology/
│ │ ├── Makefile.am
│ │ ├── cola_topology_addon.cpp
│ │ ├── cola_topology_addon.h
│ │ ├── compute_forces.cpp
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── libtopology.pc.in
│ │ ├── orthogonal_topology.cpp
│ │ ├── orthogonal_topology.h
│ │ ├── resize.cpp
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── beautify.cpp
│ │ │ ├── bend2.m
│ │ │ ├── kamada.cpp
│ │ │ ├── nodedragging.cpp
│ │ │ ├── nooverlap.cpp
│ │ │ ├── orthogonalOpt.cpp
│ │ │ ├── output/
│ │ │ │ └── README.txt
│ │ │ ├── simple_bend.cpp
│ │ │ ├── simple_bend.m
│ │ │ ├── split.cpp
│ │ │ ├── split.m
│ │ │ ├── test.h
│ │ │ └── triangle.cpp
│ │ ├── topology_constraints.cpp
│ │ ├── topology_constraints.h
│ │ ├── topology_constraints_constructor.cpp
│ │ ├── topology_graph.cpp
│ │ ├── topology_graph.h
│ │ ├── topology_log.h
│ │ ├── topologyconstraint.nb
│ │ └── util.h
│ ├── libvpsc/
│ │ ├── COPYING
│ │ ├── Makefile.am
│ │ ├── assertions.h
│ │ ├── block.cpp
│ │ ├── block.h
│ │ ├── blocks.cpp
│ │ ├── blocks.h
│ │ ├── cbuffer.cpp
│ │ ├── cbuffer.h
│ │ ├── constraint.cpp
│ │ ├── constraint.h
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── exceptions.h
│ │ ├── libvpsc.pc.in
│ │ ├── linesegment.h
│ │ ├── pairing_heap.h
│ │ ├── rectangle.cpp
│ │ ├── rectangle.h
│ │ ├── solve_VPSC.cpp
│ │ ├── solve_VPSC.h
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── block.cpp
│ │ │ ├── cycle.cpp
│ │ │ ├── rectangleoverlap.cpp
│ │ │ └── satisfy_inc.cpp
│ │ ├── variable.cpp
│ │ └── variable.h
│ ├── swig-python-setup.py
│ └── swig-python3-setup.py
└── experimental/
├── RectangleOverlapSolver/
│ ├── .cRectangleOverlap.log.swp
│ ├── .classpath
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── logging.properties
│ ├── manifest.mf
│ ├── placement/
│ │ ├── ActiveSetPlacement.java
│ │ ├── Block.java
│ │ ├── Blocks.java
│ │ ├── Constraint.java
│ │ ├── ConstraintGenerator.java
│ │ ├── Constraints.java
│ │ ├── DebugFrame.java
│ │ ├── DebugPanel.java
│ │ ├── DrawingDimensions.java
│ │ ├── FSA.java
│ │ ├── GUITest.java
│ │ ├── Graph.java
│ │ ├── GraphParser.java
│ │ ├── GraphParserTest.java
│ │ ├── MaxPairingHeap.java
│ │ ├── MaxPriorityQueue.java
│ │ ├── MinPairingHeap.java
│ │ ├── MosekPlacement.java
│ │ ├── NativeFSA.java
│ │ ├── PNode.java
│ │ ├── PerformanceTest.java
│ │ ├── Placement.java
│ │ ├── PlacementTest.java
│ │ ├── QPRectanglePlacement.java
│ │ ├── RectangleDrawerFrame.java
│ │ ├── RectangleDrawerPanel.java
│ │ ├── RectanglePlacement.java
│ │ ├── RectangleView.java
│ │ ├── ScanListPriorityQueue.java
│ │ ├── SimpleTest.java
│ │ ├── SlowPriorityQueue.java
│ │ ├── SolveVPSC.java
│ │ ├── Variable.java
│ │ ├── Variables.java
│ │ └── prolog/
│ │ ├── Part 1.2
│ │ ├── Part 1.4
│ │ └── blocks.pl
│ ├── placement_SolveVPSC.h
│ ├── problem.blocks
│ ├── prolog/
│ │ ├── Part 1.2
│ │ ├── Part 1.4
│ │ └── blocks.pl
│ └── testdata/
│ ├── Test1.dot
│ ├── graph1.dot
│ ├── graph2.dot
│ ├── graph3.dot
│ └── graph4.dot
├── draw-bn/
│ ├── Asia.dne
│ ├── Makefile
│ ├── TODO
│ ├── asia.cpp
│ ├── draw-bn.cpp
│ ├── graphlayouttest.cpp
│ └── graphlayouttest.h
├── neatogen/
│ ├── .constrained_majorization_diredges.c.swp
│ ├── .quad_prog_vpsc.h.swo
│ ├── Makefile
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── Makefile.old
│ ├── adjust.c
│ ├── adjust.h
│ ├── bfs.c
│ ├── bfs.h
│ ├── circuit.c
│ ├── closest.c
│ ├── closest.h
│ ├── compute_hierarchy.c
│ ├── conjgrad.c
│ ├── conjgrad.h
│ ├── constrained_majorization.c
│ ├── constrained_majorization_vsep.c
│ ├── constraint.c
│ ├── defs.h
│ ├── digcola.h
│ ├── dijkstra.c
│ ├── dijkstra.h
│ ├── edges.c
│ ├── edges.h
│ ├── embed_graph.c
│ ├── embed_graph.h
│ ├── find_ints.c
│ ├── geometry.c
│ ├── geometry.h
│ ├── heap.c
│ ├── heap.h
│ ├── hedges.c
│ ├── hedges.h
│ ├── info.c
│ ├── info.h
│ ├── intersect.c
│ ├── kkutils.c
│ ├── kkutils.h
│ ├── legal.c
│ ├── lu.c
│ ├── matinv.c
│ ├── matrix_ops.c
│ ├── matrix_ops.h
│ ├── mem.h
│ ├── memory.c
│ ├── mosek_quad_solve.c
│ ├── mosek_quad_solve.h
│ ├── neato.h
│ ├── neatoinit.c
│ ├── neatoprocs.h
│ ├── neatosplines.c
│ ├── opt_arrangement.c
│ ├── pca.c
│ ├── pca.h
│ ├── poly.c
│ ├── poly.h
│ ├── printvis.c
│ ├── quad_prog_solve.c
│ ├── quad_prog_solver.h
│ ├── quad_prog_vpsc.c
│ ├── quad_prog_vpsc.h
│ ├── simple.h
│ ├── site.c
│ ├── site.h
│ ├── smart_ini_x.c
│ ├── solve.c
│ ├── stress.c
│ ├── stress.h
│ ├── stuff.c
│ ├── voronoi.c
│ └── voronoi.h
└── solve_VPSC/
├── .Makefile.am.swp
├── .test_rectangleoverlap.cpp.swp
├── AUTHORS
├── ChangeLog
├── Makefile.am
├── Makefile.in
├── NEWS
├── README
├── aclocal.m4
├── configure
├── configure.in
├── libvpsc/
│ ├── COPYING
│ ├── Makefile.am
│ ├── block.cpp
│ ├── block.h
│ ├── blocks.cpp
│ ├── blocks.h
│ ├── constraint.cpp
│ ├── constraint.h
│ ├── csolve_VPSC.cpp
│ ├── csolve_VPSC.h
│ ├── generate-constraints.cpp
│ ├── generate-constraints.h
│ ├── pairingheap/
│ │ ├── PairingHeap.cpp
│ │ ├── PairingHeap.h
│ │ └── dsexceptions.h
│ ├── placement_SolveVPSC.cpp
│ ├── placement_SolveVPSC.h
│ ├── remove_rectangle_overlap-test.cpp
│ ├── remove_rectangle_overlap.cpp
│ ├── remove_rectangle_overlap.h
│ ├── removeoverlap.cpp
│ ├── removeoverlap.h
│ ├── solve_VPSC.cpp
│ ├── solve_VPSC.h
│ ├── variable.cpp
│ └── variable.h
└── tests/
├── Makefile.am
├── block.cpp
├── csolve_VPSC.c
├── rectangleoverlap.cpp
└── satisfy_inc.cpp
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/workflows/build-and-test.yml
================================================
name: build-and-test
on:
workflow_dispatch:
pull_request:
jobs:
build-and-test:
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: autogen
working-directory: cola
run: ./autogen.sh
================================================
FILE: .gitignore
================================================
.DS_Store
.vscode
.idea
================================================
FILE: README.md
================================================
Adaptagrams
===========
Adaptagrams is a library of tools and reusable code for adaptive diagramming
applications, for example: drawing tools, automated document and diagram
layout, smart presentation software, graph drawing, chart layout, etc.
Currently, the [Adaptagrams repository][repo] includes five cross-platform C++
libraries:
* [libvpsc][libvpsc]
- a solver for the Variable Placement with Separation
Constraints problem. This is a quadratic programming
problem in which the squared differences between a
placement vector and some ideal placement are minimised
subject to a set of separation constraints. This is very
useful in a number of layout problems.
* [libcola][libcola]
- a library for constraint graph layout. Specifically,
force-directed layout using the stress-majorization
method subject to separation constraints. Applications
include layout with non-overlapping nodes and clusters,
directed graph layout and layout preserving the crossing
properties of a given starting layout.
- libcola depends on libvpsc.
* [libavoid][libavoid]
- a library providing high-quality object-avoiding polyline
and orthogonal connector routing for use in interactive
diagram editors.
* [libtopology][libtopology]
- a library containing extensions to libcola to support
topology preserving constraint-based layout.
- libtopology depends on libavoid, libcola and libvpsc.
* [libdialect][libdialect]
- a library for computing human-like orthogonal network
(DiAlEcT) layouts via the following steps:
D = Decompose/Distribute; A = Arrange;
E = Expand/Emend; and T = Transform.
- libdialect depends on libavoid, libcola and libvpsc.
These libraries are collectively known as cola (for Constraint Layout). The
newest version of the C++ source code for cola can be found in the
Adaptagrams GitHub repository maintained by [Michael Wybrow][mw]:
* [https://github.com/mjwybrow/adaptagrams/][repo]
The algorithms were developed by members of the [Immersive Analytics Lab][ialab]
at [Monash University][monash] in Melbourne, Australia. The Adaptagrams libraries
were written by [Tim Dwyer][td], [Michael Wybrow][mw] and [Steve Kieffer][sk].
All code in the Adaptagrams repository is released as open source software
under the terms of the LGPL 2.1 or later, see the LICENSE file.
We also dual-license the Adaptagrams libraries and for a fee we can provide
them under a less-restrictive commercial license as well as extend them to fit
your needs (contact us). For this reason, if you contribute code to the
project and would like it to appear in the main Adaptagrams repository, we
require that you assign the copyright on your changes to Monash University with
the following statement: "I hereby assign copyright in this code to Monash
University, to be licensed under the same terms as the rest of the code."
Software using one or more of the Adaptagrams libraries include:
* [Dunnart][dunnart], constraint-based diagram editor,
* [Inkscape][inkscape], the popular open source vector graphics editor,
* [Graphviz][graphviz], open source graph visualisation software,
* [Arcadia][arcadia], a visualisation tool for metabolic pathways,
* [Gaphas][gaphor], an open source Python-based diagramming widget for GTK+, and
* [BRL-CAD][brlcad], a powerful cross-platform open source solid modeling system that includes interactive geometry editing, high-performance ray-tracing for rendering and geometric analysis, image and signal-processing tools, a system performance analysis benchmark suite, libraries for robust geometric representation, with more than 20 years of active development.
Building
--------
The library code is all contained in the `cola` directory of the repository.
We use GNU `automake` to build. We've tried to make the contents of the
repository as platform agnostic as possible, so you'll need to call `aclocal`,
`autoconf`, and `automake` before `configure`.
The only dependency is [Cairo][cairo] if debugging SVG output is to be included in several example test cases. The libraries themselves have no dependencies.
Run `./autogen.sh` to compile from scratch.
Use from other languages
------------------------
Bindings for use of the Adaptagrams libraries can be generated using [SWIG][swig]. The repository contains a SWIG interface file `cola/adaptagrams.i`. We have successfully tested and used Adaptagrams from Java and Python in this way.
Cola in the browser
-------------------
[cola.js][webcola] (a.k.a. WebCola) is a JavaScript based rewrite of libcola which works well with [D3.js][d3]
[d3]: http://d3js.org/
[webcola]: http://ialab.it.monash.edu/webcola/
[swig]: http://www.swig.org/
[td]: http://users.monash.edu/~tdwyer/
[km]: http://users.monash.edu/~kmarriott/
[mw]: http://users.monash.edu/~mwybrow/
[sk]: http://skieffer.info/
[ialab]: http://ialab.it.monash.edu/
[monash]: http://wwww.csse.monash.edu.au/
[libvpsc]: http://www.adaptagrams.org/documentation/libvpsc.html
[libavoid]: http://www.adaptagrams.org/documentation/libavoid.html
[libcola]: http://www.adaptagrams.org/documentation/libcola.html
[libtopology]: http://www.adaptagrams.org/documentation/libtopology.html
[libdialect]: http://www.adaptagrams.org/documentation/libdialect.html
[dunnart]: http://users.monash.edu/~mwybrow/dunnart/
[inkscape]: http://www.inkscape.org/
[graphviz]: http://www.graphviz.org/
[arcadia]: http://arcadiapathways.sourceforge.net/
[gaphor]: http://gaphor.sourceforge.net/
[cairo]: http://cairographics.org/
[repo]: https://github.com/mjwybrow/adaptagrams/
[brlcad]: http://brlcad.org/
================================================
FILE: cola/.gitignore
================================================
# http://www.gnu.org/software/automake
Makefile.in
# http://www.gnu.org/software/autoconf
/autom4te.cache
/aclocal.m4
/compile
/configure
/depcomp
/install-sh
/missing
# Compiled Object files
*.slo
*.lo
*.o
# Compiled Dynamic libraries
*.so
# Compiled Static libraries
*.lai
*.la
*.a
.*.swp
.DS_Store
*.pyc
Makefile
/m4
config.guess
config.log
config.status
config.sub
libtool
ltmain.sh
.deps/
libcola/config.h.in
libcola/stamp-h1
libcola/config.h
libcola/config.h.in~
diff
*/tests/*
!*/tests/*.cpp
!*/tests/*.h
!*/tests/Makefile.am
!libdialect/tests/swig_tests
libdialect/tests/swig_tests/output/*
!libdialect/tests/swig_tests/output/README.txt
!libdialect/tests/graphs
lib*/.libs
lib*/lib*.pc
adaptagrams*
!adaptagrams.i
swig-worked
test-driver
================================================
FILE: cola/AUTHORS
================================================
Tim Dwyer <Tim.Dwyer@monash.edu>
Michael Wybrow <Michael.Wybrow@monash.edu>
================================================
FILE: cola/COPYING
================================================
Adaptagrams is free software.
Every source file in the implementation of Adaptagrams is available to be
redistributed and/or modified under the terms of the GNU Lesser General
Public License (LGPL) version 2.1. Some files may be available under more
liberal terms, but we believe that in all cases, each file may be used
under the LGPL.
See the 'LICENSE' file in this directory for the precise terms and
conditions of the LGPL.
Below is the copyright notice for the libraries:
--------------------------------------------------------------------------
Adaptagrams is a library of tools and reusable code for adaptive diagramming
applications, for example: drawing tools, automated document and diagram
layout, smart presentation software, graph drawing, chart layout, etc.
These libraries are collectively known as cola (for Constraint Layout).
The newest version of the C++ source code for cola can be found in the
git repository on github:
https://github.com/mjwybrow/adaptagrams
All code in the Adaptagrams repository is released as open source under
the terms of the LGPL, see the LICENSE file. This library is distributed
in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.
We also dual-license the Adaptagrams libraries and for a fee we can provide
them under a less-restrictive commercial license as well as extend them to fit
your needs (contact us). For this reason, if you contribute code to the
project and would like it to appear in the main Adaptagrams repository, we
require that you assign the copyright on your changes to Monash Univeristy with
the following statement: "I hereby assign copyright in this code to Monash
University, to be licensed under the same terms as the rest of the code."
Copyright (C) 2004-2013 Monash University
The Adaptagrams code is written by:
Michael Wybrow <Michael.Wybrow@monash.edu> and
Tim Dwyer <Tim.Dwyer@monash.edu>
--------------------------------------------------------------------------
================================================
FILE: cola/ChangeLog
================================================
================================================
FILE: cola/Doxyfile
================================================
# Doxyfile 1.9.8
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#
# Note:
#
# Use doxygen to compare the used configuration file with the template
# configuration file:
# doxygen -x [configFile]
# Use doxygen to compare the used configuration file with the template
# configuration file without replacing the environment variables or CMake type
# replacement variables:
# doxygen -x_noenv [configFile]
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the configuration
# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
# The default value is: UTF-8.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
# project for which the documentation is generated. This name is used in the
# title of most generated pages and in a few other places.
# The default value is: My Project.
PROJECT_NAME = Adaptagrams
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER =
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF =
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = doc
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
# and will distribute the generated files over these directories. Enabling this
# option can be useful when feeding doxygen a huge amount of source files, where
# putting all generated files in the same directory would otherwise causes
# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
# control the number of sub-directories.
# The default value is: NO.
CREATE_SUBDIRS = NO
# Controls the number of sub-directories that will be created when
# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
# level increment doubles the number of directories, resulting in 4096
# directories at level 8 which is the default and also the maximum value. The
# sub-directories are organized in 2 levels, the first level always has a fixed
# number of 16 directories.
# Minimum value: 0, maximum value: 8, default value: 8.
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
CREATE_SUBDIRS_LEVEL = 8
# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
# characters to appear in the names of generated files. If set to NO, non-ASCII
# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
# U+3044.
# The default value is: NO.
ALLOW_UNICODE_NAMES = NO
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
# English messages), Korean, Korean-en (Korean with English messages), Latvian,
# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
# Swedish, Turkish, Ukrainian and Vietnamese.
# The default value is: English.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
# The default value is: YES.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
# as the leading text of the brief description, will be stripped from the text
# and the result, after processing the whole list, is used as the annotated
# text. Otherwise, the brief description is used as-is. If left blank, the
# following values are used ($name is automatically replaced with the name of
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
# The default value is: NO.
INLINE_INHERITED_MEMB = NO
# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
FULL_PATH_NAMES = YES
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
# part of the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the path to
# strip.
#
# Note that you can specify absolute paths here, but also relative paths, which
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
# header file to include in order to use a class. If left blank only the name of
# the header file containing the class definition is used. Otherwise one should
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.
SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
# The default value is: NO.
JAVADOC_AUTOBRIEF = NO
# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
# such as
# /***************
# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
# Javadoc-style will behave just like regular comments and it will not be
# interpreted by doxygen.
# The default value is: NO.
JAVADOC_BANNER = NO
# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.
QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
# a brief description. This used to be the default behavior. The new default is
# to treat a multi-line C++ comment block as a detailed description. Set this
# tag to YES if you prefer the old behavior instead.
#
# Note that setting this tag to YES also means that rational rose comments are
# not recognized any more.
# The default value is: NO.
MULTILINE_CPP_IS_BRIEF = NO
# By default Python docstrings are displayed as preformatted text and doxygen's
# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
# doxygen's special commands can be used and the contents of the docstring
# documentation blocks is shown as doxygen documentation.
# The default value is: YES.
PYTHON_DOCSTRING = YES
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
# page for each member. If set to NO, the documentation of a member will be part
# of the file/class/namespace that contains it.
# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.
TAB_SIZE = 8
# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:^^"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". Note that you cannot put \n's in the value part of an alias
# to insert newlines (in the resulting output). You can put ^^ in the value part
# of an alias to insert a newline as if a physical newline was in the original
# file. When you need a literal { or } or , in the value part of an alias you
# have to escape them by means of a backslash (\), this can lead to conflicts
# with the commands \{ and \} for these it is advised to use the version @{ and
# @} or use a double escape (\\{ and \\})
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
# members will be omitted, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
# for that language. For instance, namespaces will be presented as packages,
# qualified scopes will look different, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.
OPTIMIZE_OUTPUT_VHDL = NO
# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
# sources only. Doxygen will then generate output that is more tailored for that
# language. For instance, namespaces will be presented as modules, types will be
# separated into more groups, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_SLICE = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make doxygen treat .inc files
# as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C.
#
# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen. When specifying no_extension you should add
# * to the FILE_PATTERNS.
#
# Note see also the list of default file extension mappings.
EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you can
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
# The default value is: YES.
MARKDOWN_SUPPORT = YES
# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 5.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to
# generate identifiers for the Markdown headings. Note: Every identifier is
# unique.
# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a
# sequence number starting at 0 and GITHUB use the lower case version of title
# with any whitespace replaced by '-' and punctuation characters removed.
# The default value is: DOXYGEN.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
MARKDOWN_ID_STYLE = DOXYGEN
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
# tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string);
# versus func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
# will parse them like normal C++ but will assume all classes use public instead
# of private inheritance when no explicit protection keyword is present.
# The default value is: NO.
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
# doxygen to replace the get and set methods by a property in the documentation.
# This will only work if the methods are indeed getting or setting a simple
# type. If this is not the case, or you want to show the methods anyway, you
# should set this option to NO.
# The default value is: YES.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
# If one adds a struct or class to a group and this option is enabled, then also
# any nested class or struct is added to the same group. By default this option
# is disabled and one has to add nested compounds explicitly via \ingroup.
# The default value is: NO.
GROUP_NESTED_COMPOUNDS = NO
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
# subgrouping. Alternatively, this can be done per class using the
# \nosubgrouping command.
# The default value is: YES.
SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
# and RTF).
#
# Note that this feature does not work in combination with
# SEPARATE_MEMBER_PAGES.
# The default value is: NO.
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
# with only public data fields or simple typedef fields will be shown inline in
# the documentation of the scope in which they are defined (i.e. file,
# namespace, or group documentation), provided this scope is documented. If set
# to NO, structs, classes, and unions are shown on a separate page (for HTML and
# Man pages) or section (for LaTeX and RTF).
# The default value is: NO.
INLINE_SIMPLE_STRUCTS = NO
# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
# enum is documented as struct, union, or enum with the name of the typedef. So
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
# with name TypeT. When disabled the typedef will appear as a member of a file,
# namespace, or class. And the struct will be named TypeS. This can typically be
# useful for C code in case the coding convention dictates that all compound
# types are typedef'ed and only the typedef is referenced, never the tag name.
# The default value is: NO.
TYPEDEF_HIDES_STRUCT = NO
# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
# cache is used to resolve symbols given their name and scope. Since this can be
# an expensive process and often the same symbol appears multiple times in the
# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
# doxygen will become slower. If the cache is too large, memory is wasted. The
# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
# symbols. At the end of a run doxygen will report the cache usage and suggest
# the optimal cache size from a speed point of view.
# Minimum value: 0, maximum value: 9, default value: 0.
LOOKUP_CACHE_SIZE = 0
# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use
# during processing. When set to 0 doxygen will based this on the number of
# cores available in the system. You can set it explicitly to a value larger
# than 0 to get more control over the balance between CPU load and processing
# speed. At this moment only the input processing can be done using multiple
# threads. Since this is still an experimental feature the default is set to 1,
# which effectively disables parallel processing. Please report any issues you
# encounter. Generating dot graphs in parallel is controlled by the
# DOT_NUM_THREADS setting.
# Minimum value: 0, maximum value: 32, default value: 1.
NUM_PROC_THREADS = 1
# If the TIMESTAMP tag is set different from NO then each generated page will
# contain the date or date and time when the page was generated. Setting this to
# NO can help when comparing the output of multiple runs.
# Possible values are: YES, NO, DATETIME and DATE.
# The default value is: NO.
TIMESTAMP = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
# documentation are documented, even if no documentation was available. Private
# class members and static file members will be hidden unless the
# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
# Note: This will also disable the warnings about undocumented members that are
# normally produced when WARNINGS is set to YES.
# The default value is: NO.
EXTRACT_ALL = NO
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
# be included in the documentation.
# The default value is: NO.
EXTRACT_PRIVATE = NO
# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
# methods of a class will be included in the documentation.
# The default value is: NO.
EXTRACT_PRIV_VIRTUAL = NO
# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
# scope will be included in the documentation.
# The default value is: NO.
EXTRACT_PACKAGE = NO
# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
# included in the documentation.
# The default value is: NO.
EXTRACT_STATIC = NO
# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
# locally in source files will be included in the documentation. If set to NO,
# only classes defined in header files are included. Does not have any effect
# for Java sources.
# The default value is: YES.
EXTRACT_LOCAL_CLASSES = NO
# This flag is only useful for Objective-C code. If set to YES, local methods,
# which are defined in the implementation section but not in the interface are
# included in the documentation. If set to NO, only methods in the interface are
# included.
# The default value is: NO.
EXTRACT_LOCAL_METHODS = NO
# If this flag is set to YES, the members of anonymous namespaces will be
# extracted and appear in the documentation as a namespace called
# 'anonymous_namespace{file}', where file will be replaced with the base name of
# the file that contains the anonymous namespace. By default anonymous namespace
# are hidden.
# The default value is: NO.
EXTRACT_ANON_NSPACES = NO
# If this flag is set to YES, the name of an unnamed parameter in a declaration
# will be determined by the corresponding definition. By default unnamed
# parameters remain unnamed in the output.
# The default value is: YES.
RESOLVE_UNNAMED_PARAMS = YES
# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
# undocumented members inside documented classes or files. If set to NO these
# members will be included in the various overviews, but no documentation
# section is generated. This option has no effect if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_MEMBERS = YES
# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
# undocumented classes that are normally visible in the class hierarchy. If set
# to NO, these classes will be included in the various overviews. This option
# will also hide undocumented C++ concepts if enabled. This option has no effect
# if EXTRACT_ALL is enabled.
# The default value is: NO.
HIDE_UNDOC_CLASSES = YES
# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
# declarations. If set to NO, these declarations will be included in the
# documentation.
# The default value is: NO.
HIDE_FRIEND_COMPOUNDS = YES
# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
# documentation blocks found inside the body of a function. If set to NO, these
# blocks will be appended to the function's detailed documentation block.
# The default value is: NO.
HIDE_IN_BODY_DOCS = NO
# The INTERNAL_DOCS tag determines if documentation that is typed after a
# \internal command is included. If the tag is set to NO then the documentation
# will be excluded. Set it to YES to include the internal documentation.
# The default value is: NO.
INTERNAL_DOCS = NO
# With the correct setting of option CASE_SENSE_NAMES doxygen will better be
# able to match the capabilities of the underlying filesystem. In case the
# filesystem is case sensitive (i.e. it supports files in the same directory
# whose names only differ in casing), the option must be set to YES to properly
# deal with such files in case they appear in the input. For filesystems that
# are not case sensitive the option should be set to NO to properly deal with
# output files written for symbols that only differ in casing, such as for two
# classes, one named CLASS and the other named Class, and to also support
# references to files without having to specify the exact matching casing. On
# Windows (including Cygwin) and MacOS, users should typically set this option
# to NO, whereas on Linux or other Unix flavors it should typically be set to
# YES.
# Possible values are: SYSTEM, NO and YES.
# The default value is: SYSTEM.
CASE_SENSE_NAMES = YES
# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
# their full class and namespace scopes in the documentation. If set to YES, the
# scope will be hidden.
# The default value is: NO.
HIDE_SCOPE_NAMES = NO
# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
# append additional text to a page's title, such as Class Reference. If set to
# YES the compound reference will be hidden.
# The default value is: NO.
HIDE_COMPOUND_REFERENCE= NO
# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class
# will show which file needs to be included to use the class.
# The default value is: YES.
SHOW_HEADERFILE = YES
# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
# the files that are included by a file in the documentation of that file.
# The default value is: YES.
SHOW_INCLUDE_FILES = YES
# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
# grouped member an include statement to the documentation, telling the reader
# which file to include in order to use the member.
# The default value is: NO.
SHOW_GROUPED_MEMB_INC = NO
# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
# files with double quotes in the documentation rather than with sharp brackets.
# The default value is: NO.
FORCE_LOCAL_INCLUDES = NO
# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
# documentation for inline members.
# The default value is: YES.
INLINE_INFO = YES
# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
# (detailed) documentation of file and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order.
# The default value is: YES.
SORT_MEMBER_DOCS = YES
# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
# descriptions of file, namespace and class members alphabetically by member
# name. If set to NO, the members will appear in declaration order. Note that
# this will also influence the order of the classes in the class list.
# The default value is: NO.
SORT_BRIEF_DOCS = NO
# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
# (brief and detailed) documentation of class members so that constructors and
# destructors are listed first. If set to NO the constructors will appear in the
# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
# member documentation.
# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
# detailed member documentation.
# The default value is: NO.
SORT_MEMBERS_CTORS_1ST = NO
# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
# of group names into alphabetical order. If set to NO the group names will
# appear in their defined order.
# The default value is: NO.
SORT_GROUP_NAMES = NO
# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
# fully-qualified names, including namespaces. If set to NO, the class list will
# be sorted only by class name, not including the namespace part.
# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
# Note: This option applies only to the class list, not to the alphabetical
# list.
# The default value is: NO.
SORT_BY_SCOPE_NAME = NO
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
# type resolution of all parameters of a function it will reject a match between
# the prototype and the implementation of a member function even if there is
# only one candidate or it is obvious which candidate to choose by doing a
# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
# accept a match between prototype and implementation in such cases.
# The default value is: NO.
STRICT_PROTO_MATCHING = NO
# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
GENERATE_TODOLIST = YES
# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
# list. This list is created by putting \test commands in the documentation.
# The default value is: YES.
GENERATE_TESTLIST = YES
# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
# list. This list is created by putting \bug commands in the documentation.
# The default value is: YES.
GENERATE_BUGLIST = YES
# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
# the deprecated list. This list is created by putting \deprecated commands in
# the documentation.
# The default value is: YES.
GENERATE_DEPRECATEDLIST= YES
# The ENABLED_SECTIONS tag can be used to enable conditional documentation
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
# ... \endcond blocks.
ENABLED_SECTIONS = ADAPTAGRAMS_DOC
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
# initial value of a variable or macro / define can have for it to appear in the
# documentation. If the initializer consists of more lines than specified here
# it will be hidden. Use a value of 0 to hide initializers completely. The
# appearance of the value of individual variables and macros / defines can be
# controlled using \showinitializer or \hideinitializer command in the
# documentation regardless of this setting.
# Minimum value: 0, maximum value: 10000, default value: 30.
MAX_INITIALIZER_LINES = 30
# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
# the bottom of the documentation of classes and structs. If set to YES, the
# list will mention the files that were used to generate the documentation.
# The default value is: YES.
SHOW_USED_FILES = YES
# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
# will remove the Files entry from the Quick Index and from the Folder Tree View
# (if specified).
# The default value is: YES.
SHOW_FILES = YES
# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
# page. This will remove the Namespaces entry from the Quick Index and from the
# Folder Tree View (if specified).
# The default value is: YES.
SHOW_NAMESPACES = YES
# The FILE_VERSION_FILTER tag can be used to specify a program or script that
# doxygen should invoke to get the current version for each file (typically from
# the version control system). Doxygen will invoke the program by executing (via
# popen()) the command command input-file, where command is the value of the
# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
# by doxygen. Whatever the program writes to standard output is used as the file
# version. For an example see the documentation.
FILE_VERSION_FILTER =
# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
# by doxygen. The layout file controls the global structure of the generated
# output files in an output format independent way. To create the layout file
# that represents doxygen's defaults, run doxygen with the -l option. You can
# optionally specify a file name after the option, if omitted DoxygenLayout.xml
# will be used as the name of the layout file. See also section "Changing the
# layout of pages" for information.
#
# Note that if you run doxygen from a directory containing a file called
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
# tag is left empty.
LAYOUT_FILE =
# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
# the reference definitions. This must be a list of .bib files. The .bib
# extension is automatically appended if omitted. This requires the bibtex tool
# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info.
# For LaTeX the style of the bibliography can be controlled using
# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
# search path. See also \cite for info how to create references.
CITE_BIB_FILES =
#---------------------------------------------------------------------------
# Configuration options related to warning and progress messages
#---------------------------------------------------------------------------
# The QUIET tag can be used to turn on/off the messages that are generated to
# standard output by doxygen. If QUIET is set to YES this implies that the
# messages are off.
# The default value is: NO.
QUIET = NO
# The WARNINGS tag can be used to turn on/off the warning messages that are
# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
# this implies that the warnings are on.
#
# Tip: Turn warnings on while writing the documentation.
# The default value is: YES.
WARNINGS = YES
# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: YES.
WARN_IF_UNDOCUMENTED = YES
# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
# potential errors in the documentation, such as documenting some parameters in
# a documented function twice, or documenting parameters that don't exist or
# using markup commands wrongly.
# The default value is: YES.
WARN_IF_DOC_ERROR = YES
# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete
# function parameter documentation. If set to NO, doxygen will accept that some
# parameters have no documentation without warning.
# The default value is: YES.
WARN_IF_INCOMPLETE_DOC = YES
# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
# are documented, but have no documentation for their parameters or return
# value. If set to NO, doxygen will only warn about wrong parameter
# documentation, but not about the absence of documentation. If EXTRACT_ALL is
# set to YES then this flag will automatically be disabled. See also
# WARN_IF_INCOMPLETE_DOC
# The default value is: NO.
WARN_NO_PARAMDOC = NO
# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about
# undocumented enumeration values. If set to NO, doxygen will accept
# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag
# will automatically be disabled.
# The default value is: NO.
WARN_IF_UNDOC_ENUM_VAL = NO
# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS
# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but
# at the end of the doxygen process doxygen will return with a non-zero status.
# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves
# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not
# write the warning messages in between other messages but write them at the end
# of a run, in case a WARN_LOGFILE is defined the warning messages will be
# besides being in the defined file also be shown at the end of a run, unless
# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case
# the behavior will remain as with the setting FAIL_ON_WARNINGS.
# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT.
# The default value is: NO.
WARN_AS_ERROR = NO
# The WARN_FORMAT tag determines the format of the warning messages that doxygen
# can produce. The string should contain the $file, $line, and $text tags, which
# will be replaced by the file and line number from which the warning originated
# and the warning text. Optionally the format may contain $version, which will
# be replaced by the version of the file (if it could be obtained via
# FILE_VERSION_FILTER)
# See also: WARN_LINE_FORMAT
# The default value is: $file:$line: $text.
WARN_FORMAT = "$file:$line: $text"
# In the $text part of the WARN_FORMAT command it is possible that a reference
# to a more specific place is given. To make it easier to jump to this place
# (outside of doxygen) the user can define a custom "cut" / "paste" string.
# Example:
# WARN_LINE_FORMAT = "'vi $file +$line'"
# See also: WARN_FORMAT
# The default value is: at line $line of file $file.
WARN_LINE_FORMAT = "at line $line of file $file"
# The WARN_LOGFILE tag can be used to specify a file to which warning and error
# messages should be written. If left blank the output is written to standard
# error (stderr). In case the file specified cannot be opened for writing the
# warning and error messages are written to standard error. When as file - is
# specified the warning and error messages are written to standard output
# (stdout).
WARN_LOGFILE =
#---------------------------------------------------------------------------
# Configuration options related to the input files
#---------------------------------------------------------------------------
# The INPUT tag is used to specify the files and/or directories that contain
# documented source files. You may enter file names like myfile.cpp or
# directories like /usr/src/myproject. Separate the files or directories with
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
# Note: If this tag is empty the current directory is searched.
INPUT = libvpsc \
libavoid \
libcola \
libtopology \
libdialect \
doc \
libavoid/doc \
libcola/doc \
libtopology/doc \
libvpsc/doc \
libdialect/doc
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
# documentation (see:
# https://www.gnu.org/software/libiconv/) for the list of possible encodings.
# See also: INPUT_FILE_ENCODING
# The default value is: UTF-8.
INPUT_ENCODING = UTF-8
# This tag can be used to specify the character encoding of the source files
# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify
# character encoding on a per file pattern basis. Doxygen will compare the file
# name with each pattern and apply the encoding instead of the default
# INPUT_ENCODING) if there is a match. The character encodings are a list of the
# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding
# "INPUT_ENCODING" for further information on supported encodings.
INPUT_FILE_ENCODING =
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
# *.h) to filter out the source-files in the directories.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# read by doxygen.
#
# Note the list of default checked file patterns might differ from the list of
# default file extension mappings.
#
# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm,
# *.cpp, *.cppm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl,
# *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, *.php,
# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be
# provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
FILE_PATTERNS = *.cpp \
*.h \
*.doc
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
# The default value is: NO.
RECURSIVE = NO
# The EXCLUDE tag can be used to specify files and/or directories that should be
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
#
# Note that relative paths are relative to the directory from which doxygen is
# run.
EXCLUDE =
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
# from the input.
# The default value is: NO.
EXCLUDE_SYMLINKS = NO
# If the value of the INPUT tag contains directories, you can use the
# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
# certain files from those directories.
#
# Note that the wildcards are matched against the file with absolute path, so to
# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS =
# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
# (namespaces, classes, functions, etc.) that should be excluded from the
# output. The symbol name can be a fully qualified name, a word, or if the
# wildcard * is used, a substring. Examples: ANamespace, AClass,
# ANamespace::AClass, ANamespace::*Test
EXCLUDE_SYMBOLS =
# The EXAMPLE_PATH tag can be used to specify one or more files or directories
# that contain example code fragments that are included (see the \include
# command).
EXAMPLE_PATH =
# If the value of the EXAMPLE_PATH tag contains directories, you can use the
# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
# *.h) to filter out the source-files in the directories. If left blank all
# files are included.
EXAMPLE_PATTERNS =
# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
# searched for input files to be used with the \include or \dontinclude commands
# irrespective of the value of the RECURSIVE tag.
# The default value is: NO.
EXAMPLE_RECURSIVE = NO
# The IMAGE_PATH tag can be used to specify one or more files or directories
# that contain images that are to be included in the documentation (see the
# \image command).
IMAGE_PATH =
# The INPUT_FILTER tag can be used to specify a program that doxygen should
# invoke to filter for each input file. Doxygen will invoke the filter program
# by executing (via popen()) the command:
#
# <filter> <input-file>
#
# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
# name of an input file. Doxygen will then use the output that the filter
# program writes to standard output. If FILTER_PATTERNS is specified, this tag
# will be ignored.
#
# Note that the filter must not add or remove lines; it is applied before the
# code is scanned, but not when the output code is generated. If lines are added
# or removed, the anchors will not be placed correctly.
#
# Note that doxygen will use the data processed and written to standard output
# for further processing, therefore nothing else, like debug statements or used
# commands (so in case of a Windows batch file always use @echo OFF), should be
# written to standard output.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by doxygen.
INPUT_FILTER =
# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
# basis. Doxygen will compare the file name with each pattern and apply the
# filter if there is a match. The filters are a list of the form: pattern=filter
# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
# patterns match the file name, INPUT_FILTER is applied.
#
# Note that for custom extensions or not directly supported extensions you also
# need to set EXTENSION_MAPPING for the extension otherwise the files are not
# properly processed by doxygen.
FILTER_PATTERNS =
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will also be used to filter the input files that are used for
# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
# The default value is: NO.
FILTER_SOURCE_FILES = NO
# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
# it is also possible to disable source filtering for a specific pattern using
# *.ext= (so without naming a filter).
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
FILTER_SOURCE_PATTERNS =
# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
# is part of the input, its contents will be placed on the main page
# (index.html). This can be useful if you have a project on for instance GitHub
# and want to reuse the introduction page also for the doxygen output.
USE_MDFILE_AS_MAINPAGE =
# The Fortran standard specifies that for fixed formatted Fortran code all
# characters from position 72 are to be considered as comment. A common
# extension is to allow longer lines before the automatic comment starts. The
# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can
# be processed before the automatic comment starts.
# Minimum value: 7, maximum value: 10000, default value: 72.
FORTRAN_COMMENT_AFTER = 72
#---------------------------------------------------------------------------
# Configuration options related to source browsing
#---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
# generated. Documented entities will be cross-referenced with these sources.
#
# Note: To get rid of all source code in the generated output, make sure that
# also VERBATIM_HEADERS is set to NO.
# The default value is: NO.
SOURCE_BROWSER = NO
# Setting the INLINE_SOURCES tag to YES will include the body of functions,
# classes and enums directly into the documentation.
# The default value is: NO.
INLINE_SOURCES = NO
# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
# special comment blocks from generated source code fragments. Normal C, C++ and
# Fortran comments will always remain visible.
# The default value is: YES.
STRIP_CODE_COMMENTS = YES
# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
# entity all documented functions referencing it will be listed.
# The default value is: NO.
REFERENCED_BY_RELATION = YES
# If the REFERENCES_RELATION tag is set to YES then for each documented function
# all documented entities called/used by that function will be listed.
# The default value is: NO.
REFERENCES_RELATION = YES
# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
# to YES then the hyperlinks from functions in REFERENCES_RELATION and
# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
# link to the documentation.
# The default value is: YES.
REFERENCES_LINK_SOURCE = YES
# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
# source code will show a tooltip with additional information such as prototype,
# brief description and links to the definition and documentation. Since this
# will make the HTML file larger and loading of large files a bit slower, you
# can opt to disable this feature.
# The default value is: YES.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
SOURCE_TOOLTIPS = YES
# If the USE_HTAGS tag is set to YES then the references to source code will
# point to the HTML generated by the htags(1) tool instead of doxygen built-in
# source browser. The htags tool is part of GNU's global source tagging system
# (see https://www.gnu.org/software/global/global.html). You will need version
# 4.8.6 or higher.
#
# To use it do the following:
# - Install the latest version of global
# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file
# - Make sure the INPUT points to the root of the source tree
# - Run doxygen as normal
#
# Doxygen will invoke htags (and that will in turn invoke gtags), so these
# tools must be available from the command line (i.e. in the search path).
#
# The result: instead of the source browser generated by doxygen, the links to
# source code will now point to the output of htags.
# The default value is: NO.
# This tag requires that the tag SOURCE_BROWSER is set to YES.
USE_HTAGS = NO
# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
# verbatim copy of the header file for each class for which an include is
# specified. Set to NO to disable this.
# See also: Section \class.
# The default value is: YES.
VERBATIM_HEADERS = YES
#---------------------------------------------------------------------------
# Configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
# compounds will be generated. Enable this if the project contains a lot of
# classes, structs, unions or interfaces.
# The default value is: YES.
ALPHABETICAL_INDEX = NO
# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes)
# that should be ignored while generating the index headers. The IGNORE_PREFIX
# tag works for classes, function and member names. The entity will be placed in
# the alphabetical list under the first letter of the entity name that remains
# after removing the prefix.
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the HTML output
#---------------------------------------------------------------------------
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
# The default value is: YES.
GENERATE_HTML = YES
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_OUTPUT = html
# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
# generated HTML page (for example: .htm, .php, .asp).
# The default value is: .html.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FILE_EXTENSION = .html
# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
# each generated HTML page. If the tag is left blank doxygen will generate a
# standard header.
#
# To get valid HTML the header file that includes any scripts and style sheets
# that doxygen needs, which is dependent on the configuration options used (e.g.
# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
# default header using
# doxygen -w html new_header.html new_footer.html new_stylesheet.css
# YourConfigFile
# and then modify the file new_header.html. See also section "Doxygen usage"
# for information on how to generate the default header that doxygen normally
# uses.
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of doxygen. For a description
# of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_HEADER =
# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
# generated HTML page. If the tag is left blank doxygen will generate a standard
# footer. See HTML_HEADER for more information on how to generate a default
# footer and what special commands can be used inside the footer. See also
# section "Doxygen usage" for information on how to generate the default footer
# that doxygen normally uses.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FOOTER =
# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
# sheet that is used by each HTML page. It can be used to fine-tune the look of
# the HTML output. If left blank doxygen will generate a default style sheet.
# See also section "Doxygen usage" for information on how to generate the style
# sheet that doxygen normally uses.
# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
# it is more robust and this tag (HTML_STYLESHEET) will in the future become
# obsolete.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_STYLESHEET =
# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# cascading style sheets that are included after the standard style sheets
# created by doxygen. Using this option one can overrule certain style aspects.
# This is preferred over using HTML_STYLESHEET since it does not replace the
# standard style sheet and is therefore more robust against future updates.
# Doxygen will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# Note: Since the styling of scrollbars can currently not be overruled in
# Webkit/Chromium, the styling will be left out of the default doxygen.css if
# one or more extra stylesheets have been specified. So if scrollbar
# customization is desired it has to be added explicitly. For an example see the
# documentation.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_STYLESHEET =
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the HTML output directory. Note
# that these files will be copied to the base HTML output directory. Use the
# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
# files will be copied as-is; there are no commands or markers available.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_EXTRA_FILES =
# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output
# should be rendered with a dark or light theme.
# Possible values are: LIGHT always generate light mode output, DARK always
# generate dark mode output, AUTO_LIGHT automatically set the mode according to
# the user preference, use light mode if no preference is set (the default),
# AUTO_DARK automatically set the mode according to the user preference, use
# dark mode if no preference is set and TOGGLE allow to user to switch between
# light and dark mode via a button.
# The default value is: AUTO_LIGHT.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE = AUTO_LIGHT
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
# will adjust the colors in the style sheet and background images according to
# this color. Hue is specified as an angle on a color-wheel, see
# https://en.wikipedia.org/wiki/Hue for more information. For instance the value
# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
# purple, and 360 is red again.
# Minimum value: 0, maximum value: 359, default value: 220.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_HUE = 220
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
# in the HTML output. For a value of 0 the output will use gray-scales only. A
# value of 255 will produce the most vivid colors.
# Minimum value: 0, maximum value: 255, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_SAT = 100
# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
# luminance component of the colors in the HTML output. Values below 100
# gradually make the output lighter, whereas values above 100 make the output
# darker. The value divided by 100 is the actual gamma applied, so 80 represents
# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
# change the gamma.
# Minimum value: 40, maximum value: 240, default value: 80.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_COLORSTYLE_GAMMA = 80
# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML
# documentation will contain a main index with vertical navigation menus that
# are dynamically created via JavaScript. If disabled, the navigation index will
# consists of multiple levels of tabs that are statically embedded in every HTML
# page. Disable this option to support browsers that do not have JavaScript,
# like the Qt help browser.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_MENUS = YES
# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
# documentation will contain sections that can be hidden and shown after the
# page has loaded.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_DYNAMIC_SECTIONS = NO
# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be
# dynamically folded and expanded in the generated HTML source code.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_CODE_FOLDING = YES
# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
# shown in the various tree structured indices initially; the user can expand
# and collapse entries dynamically later on. Doxygen will expand the tree to
# such a level that at most the specified number of entries are visible (unless
# a fully collapsed tree already exceeds this amount). So setting the number of
# entries 1 will produce a full collapsed tree by default. 0 is a special value
# representing an infinite number of entries and will result in a full expanded
# tree by default.
# Minimum value: 0, maximum value: 9999, default value: 100.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_INDEX_NUM_ENTRIES = 100
# If the GENERATE_DOCSET tag is set to YES, additional index files will be
# generated that can be used as input for Apple's Xcode 3 integrated development
# environment (see:
# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To
# create a documentation set, doxygen will generate a Makefile in the HTML
# output directory. Running make will produce the docset in that directory and
# running make install will install the docset in
# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy
# genXcode/_index.html for more information.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_DOCSET = NO
# This tag determines the name of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# The default value is: Doxygen generated docs.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDNAME = "Doxygen generated docs"
# This tag determines the URL of the docset feed. A documentation feed provides
# an umbrella under which multiple documentation sets from a single provider
# (such as a company or product suite) can be grouped.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_FEEDURL =
# This tag specifies a string that should uniquely identify the documentation
# set bundle. This should be a reverse domain-name style string, e.g.
# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_BUNDLE_ID = org.doxygen.Project
# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
# the documentation publisher. This should be a reverse domain-name style
# string, e.g. com.mycompany.MyDocSet.documentation.
# The default value is: org.doxygen.Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_ID = org.doxygen.Publisher
# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
# The default value is: Publisher.
# This tag requires that the tag GENERATE_DOCSET is set to YES.
DOCSET_PUBLISHER_NAME = Publisher
# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
# on Windows. In the beginning of 2021 Microsoft took the original page, with
# a.o. the download links, offline the HTML help workshop was already many years
# in maintenance mode). You can download the HTML help workshop from the web
# archives at Installation executable (see:
# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo
# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe).
#
# The HTML Help Workshop contains a compiler that can convert all HTML output
# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
# files are now used as the Windows 98 help format, and will replace the old
# Windows help format (.hlp) on all Windows platforms in the future. Compressed
# HTML files also contain an index, a table of contents, and you can search for
# words in the documentation. The HTML workshop also contains a viewer for
# compressed HTML files.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_HTMLHELP = NO
# The CHM_FILE tag can be used to specify the file name of the resulting .chm
# file. You can add a path in front of the file if the result should not be
# written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_FILE =
# The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler (hhc.exe). If non-empty,
# doxygen will try to run the HTML help compiler on the generated index.hhp.
# The file has to be specified with full path.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
HHC_LOCATION =
# The GENERATE_CHI flag controls if a separate .chi index file is generated
# (YES) or that it should be included in the main .chm file (NO).
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
GENERATE_CHI = NO
# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
# and project file content.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_INDEX_ENCODING =
# The BINARY_TOC flag controls whether a binary table of contents is generated
# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
# enables the Previous and Next buttons.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
BINARY_TOC = NO
# The TOC_EXPAND flag can be set to YES to add extra items for group members to
# the table of contents of the HTML help documentation and to the tree view.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
TOC_EXPAND = NO
# The SITEMAP_URL tag is used to specify the full URL of the place where the
# generated documentation will be placed on the server by the user during the
# deployment of the documentation. The generated sitemap is called sitemap.xml
# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL
# is specified no sitemap is generated. For information about the sitemap
# protocol see https://www.sitemaps.org
# This tag requires that the tag GENERATE_HTML is set to YES.
SITEMAP_URL =
# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
# (.qch) of the generated HTML documentation.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_QHP = NO
# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
# the file name of the resulting .qch file. The path specified is relative to
# the HTML output folder.
# This tag requires that the tag GENERATE_QHP is set to YES.
QCH_FILE =
# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
# Project output. For more information please see Qt Help Project / Namespace
# (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_NAMESPACE = org.doxygen.Project
# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
# Help Project output. For more information please see Qt Help Project / Virtual
# Folders (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).
# The default value is: doc.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_VIRTUAL_FOLDER = doc
# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
# filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_NAME =
# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
# custom filter to add. For more information please see Qt Help Project / Custom
# Filters (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_CUST_FILTER_ATTRS =
# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
# project's filter section matches. Qt Help Project / Filter Attributes (see:
# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
# This tag requires that the tag GENERATE_QHP is set to YES.
QHP_SECT_FILTER_ATTRS =
# The QHG_LOCATION tag can be used to specify the location (absolute path
# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to
# run qhelpgenerator on the generated .qhp file.
# This tag requires that the tag GENERATE_QHP is set to YES.
QHG_LOCATION =
# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
# generated, together with the HTML files, they form an Eclipse help plugin. To
# install this plugin and make it available under the help contents menu in
# Eclipse, the contents of the directory containing the HTML and XML files needs
# to be copied into the plugins directory of eclipse. The name of the directory
# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
# After copying Eclipse needs to be restarted before the help appears.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_ECLIPSEHELP = NO
# A unique identifier for the Eclipse help plugin. When installing the plugin
# the directory name containing the HTML and XML files should also have this
# name. Each documentation set should have its own identifier.
# The default value is: org.doxygen.Project.
# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
ECLIPSE_DOC_ID = org.doxygen.Project
# If you want full control over the layout of the generated HTML pages it might
# be necessary to disable the index and replace it with your own. The
# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
# of each HTML page. A value of NO enables the index and the value YES disables
# it. Since the tabs in the index contain the same information as the navigation
# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
DISABLE_INDEX = NO
# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
# structure should be generated to display hierarchical information. If the tag
# value is set to YES, a side panel will be generated containing a tree-like
# index structure (just like the one that is generated for HTML Help). For this
# to work a browser that supports JavaScript, DHTML, CSS and frames is required
# (i.e. any modern browser). Windows users are probably better off using the
# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
# further fine tune the look of the index (see "Fine-tuning the output"). As an
# example, the default style sheet generated by doxygen has an example that
# shows how to put an image at the root of the tree instead of the PROJECT_NAME.
# Since the tree basically has the same information as the tab index, you could
# consider setting DISABLE_INDEX to YES when enabling this option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
GENERATE_TREEVIEW = NO
# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the
# FULL_SIDEBAR option determines if the side bar is limited to only the treeview
# area (value NO) or if it should extend to the full height of the window (value
# YES). Setting this to YES gives a layout similar to
# https://docs.readthedocs.io with more room for contents, but less room for the
# project logo, title, and description. If either GENERATE_TREEVIEW or
# DISABLE_INDEX is set to NO, this option has no effect.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
FULL_SIDEBAR = NO
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
# doxygen will group on one line in the generated HTML documentation.
#
# Note that a value of 0 will completely suppress the enum values from appearing
# in the overview section.
# Minimum value: 0, maximum value: 20, default value: 4.
# This tag requires that the tag GENERATE_HTML is set to YES.
ENUM_VALUES_PER_LINE = 4
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
# to set the initial width (in pixels) of the frame in which the tree is shown.
# Minimum value: 0, maximum value: 1500, default value: 250.
# This tag requires that the tag GENERATE_HTML is set to YES.
TREEVIEW_WIDTH = 250
# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
# external symbols imported via tag files in a separate window.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
EXT_LINKS_IN_WINDOW = NO
# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email
# addresses.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
OBFUSCATE_EMAILS = YES
# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg
# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see
# https://inkscape.org) to generate formulas as SVG images instead of PNGs for
# the HTML output. These images will generally look nicer at scaled resolutions.
# Possible values are: png (the default) and svg (looks nicer but requires the
# pdf2svg or inkscape tool).
# The default value is: png.
# This tag requires that the tag GENERATE_HTML is set to YES.
HTML_FORMULA_FORMAT = png
# Use this tag to change the font size of LaTeX formulas included as images in
# the HTML documentation. When you change the font size after a successful
# doxygen run you need to manually remove any form_*.png images from the HTML
# output directory to force them to be regenerated.
# Minimum value: 8, maximum value: 50, default value: 10.
# This tag requires that the tag GENERATE_HTML is set to YES.
FORMULA_FONTSIZE = 10
# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands
# to create new LaTeX commands to be used in formulas as building blocks. See
# the section "Including formulas" for details.
FORMULA_MACROFILE =
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
# https://www.mathjax.org) which uses client side JavaScript for the rendering
# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
# installed or if you want to formulas look prettier in the HTML output. When
# enabled you may also need to install MathJax separately and configure the path
# to it using the MATHJAX_RELPATH option.
# The default value is: NO.
# This tag requires that the tag GENERATE_HTML is set to YES.
USE_MATHJAX = NO
# With MATHJAX_VERSION it is possible to specify the MathJax version to be used.
# Note that the different versions of MathJax have different requirements with
# regards to the different settings, so it is possible that also other MathJax
# settings have to be changed when switching between the different MathJax
# versions.
# Possible values are: MathJax_2 and MathJax_3.
# The default value is: MathJax_2.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_VERSION = MathJax_2
# When MathJax is enabled you can set the default output format to be used for
# the MathJax output. For more details about the output format see MathJax
# version 2 (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3
# (see:
# http://docs.mathjax.org/en/latest/web/components/output.html).
# Possible values are: HTML-CSS (which is slower, but has the best
# compatibility. This is the name for Mathjax version 2, for MathJax version 3
# this will be translated into chtml), NativeMML (i.e. MathML. Only supported
# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This
# is the name for Mathjax version 3, for MathJax version 2 this will be
# translated into HTML-CSS) and SVG.
# The default value is: HTML-CSS.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_FORMAT = HTML-CSS
# When MathJax is enabled you need to specify the location relative to the HTML
# output directory using the MATHJAX_RELPATH option. The destination directory
# should contain the MathJax.js script. For instance, if the mathjax directory
# is located at the same level as the HTML output directory, then
# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
# Content Delivery Network so you can quickly see the result without installing
# MathJax. However, it is strongly recommended to install a local copy of
# MathJax from https://www.mathjax.org before deployment. The default value is:
# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2
# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
# extension names that should be enabled during MathJax rendering. For example
# for MathJax version 2 (see
# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions):
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
# For example for MathJax version 3 (see
# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html):
# MATHJAX_EXTENSIONS = ams
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_EXTENSIONS =
# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
# of code that will be used on startup of the MathJax code. See the MathJax site
# (see:
# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an
# example see the documentation.
# This tag requires that the tag USE_MATHJAX is set to YES.
MATHJAX_CODEFILE =
# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
# the HTML output. The underlying search engine uses javascript and DHTML and
# should work on any modern browser. Note that when using HTML help
# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
# there is already a search function so this one should typically be disabled.
# For large projects the javascript based search engine can be slow, then
# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
# search using the keyboard; to jump to the search box use <access key> + S
# (what the <access key> is depends on the OS and browser, but it is typically
# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
# key> to jump into the search results window, the results can be navigated
# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
# the search. The filter options can be selected when the cursor is inside the
# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
# to select a filter and <Enter> or <escape> to activate or cancel the filter
# option.
# The default value is: YES.
# This tag requires that the tag GENERATE_HTML is set to YES.
SEARCHENGINE = NO
# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
# implemented using a web server instead of a web client using JavaScript. There
# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
# setting. When disabled, doxygen will generate a PHP script for searching and
# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
# and searching needs to be provided by external tools. See the section
# "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
SERVER_BASED_SEARCH = NO
# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
# script for searching. Instead the search results are written to an XML file
# which needs to be processed by an external indexer. Doxygen will invoke an
# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
# search results.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/).
#
# See the section "External Indexing and Searching" for details.
# The default value is: NO.
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTERNAL_SEARCH = NO
# The SEARCHENGINE_URL should point to a search engine hosted by a web server
# which will return the search results when EXTERNAL_SEARCH is enabled.
#
# Doxygen ships with an example indexer (doxyindexer) and search engine
# (doxysearch.cgi) which are based on the open source search engine library
# Xapian (see:
# https://xapian.org/). See the section "External Indexing and Searching" for
# details.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHENGINE_URL =
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
# search data is written to a file for indexing by an external tool. With the
# SEARCHDATA_FILE tag the name of this file can be specified.
# The default file is: searchdata.xml.
# This tag requires that the tag SEARCHENGINE is set to YES.
SEARCHDATA_FILE = searchdata.xml
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
# projects and redirect the results back to the right project.
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTERNAL_SEARCH_ID =
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
# projects other than the one defined by this configuration file, but that are
# all added to the same external search index. Each project needs to have a
# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
# to a relative location where the documentation can be found. The format is:
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
# This tag requires that the tag SEARCHENGINE is set to YES.
EXTRA_SEARCH_MAPPINGS =
#---------------------------------------------------------------------------
# Configuration options related to the LaTeX output
#---------------------------------------------------------------------------
# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
# The default value is: YES.
GENERATE_LATEX = YES
# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: latex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_OUTPUT = latex
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
# invoked.
#
# Note that when not enabling USE_PDFLATEX the default is latex when enabling
# USE_PDFLATEX the default is pdflatex and when in the later case latex is
# chosen this is overwritten by pdflatex. For specific output languages the
# default can have been set differently, this depends on the implementation of
# the output language.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_CMD_NAME = latex
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
# index for LaTeX.
# Note: This tag is used in the Makefile / make.bat.
# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
# (.tex).
# The default file is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
MAKEINDEX_CMD_NAME = makeindex
# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
# generate index for LaTeX. In case there is no backslash (\) as first character
# it will be automatically added in the LaTeX code.
# Note: This tag is used in the generated output file (.tex).
# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
# The default value is: makeindex.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_MAKEINDEX_CMD = makeindex
# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
COMPACT_LATEX = NO
# The PAPER_TYPE tag can be used to set the paper type that is used by the
# printer.
# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
# 14 inches) and executive (7.25 x 10.5 inches).
# The default value is: a4.
# This tag requires that the tag GENERATE_LATEX is set to YES.
PAPER_TYPE = a4wide
# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
# that should be included in the LaTeX output. The package can be specified just
# by its name or with the correct syntax as to be used with the LaTeX
# \usepackage command. To get the times font for instance you can specify :
# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
# To use the option intlimits with the amsmath package you can specify:
# EXTRA_PACKAGES=[intlimits]{amsmath}
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
EXTRA_PACKAGES =
# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for
# the generated LaTeX document. The header should contain everything until the
# first chapter. If it is left blank doxygen will generate a standard header. It
# is highly recommended to start with a default header using
# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty
# and then modify the file new_header.tex. See also section "Doxygen usage" for
# information on how to generate the default header that doxygen normally uses.
#
# Note: Only use a user-defined header if you know what you are doing!
# Note: The header is subject to change so you typically have to regenerate the
# default header when upgrading to a newer version of doxygen. The following
# commands have a special meaning inside the header (and footer): For a
# description of the possible markers and block names see the documentation.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HEADER =
# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for
# the generated LaTeX document. The footer should contain everything after the
# last chapter. If it is left blank doxygen will generate a standard footer. See
# LATEX_HEADER for more information on how to generate a default footer and what
# special commands can be used inside the footer. See also section "Doxygen
# usage" for information on how to generate the default footer that doxygen
# normally uses. Note: Only use a user-defined footer if you know what you are
# doing!
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_FOOTER =
# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
# LaTeX style sheets that are included after the standard style sheets created
# by doxygen. Using this option one can overrule certain style aspects. Doxygen
# will copy the style sheet files to the output directory.
# Note: The order of the extra style sheet files is of importance (e.g. the last
# style sheet in the list overrules the setting of the previous ones in the
# list).
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EXTRA_STYLESHEET =
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
# other source files which should be copied to the LATEX_OUTPUT output
# directory. Note that the files will be copied as-is; there are no commands or
# markers available.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EXTRA_FILES =
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
# contain links (just like the HTML output) instead of page references. This
# makes the output suitable for online browsing using a PDF viewer.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
PDF_HYPERLINKS = NO
# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as
# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX
# files. Set this option to YES, to get a higher quality PDF documentation.
#
# See also section LATEX_CMD_NAME for selecting the engine.
# The default value is: YES.
# This tag requires that the tag GENERATE_LATEX is set to YES.
USE_PDFLATEX = NO
# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error.
# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch
# mode nothing is printed on the terminal, errors are scrolled as if <return> is
# hit at every error; missing files that TeX tries to input or request from
# keyboard input (\read on a not open input stream) cause the job to abort,
# NON_STOP In nonstop mode the diagnostic message will appear on the terminal,
# but there is no possibility of user interaction just like in batch mode,
# SCROLL In scroll mode, TeX will stop only for missing files to input or if
# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at
# each error, asking for user intervention.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BATCHMODE = NO
# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
# index chapters (such as File Index, Compound Index, etc.) in the output.
# The default value is: NO.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_HIDE_INDICES = NO
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
# bibliography, e.g. plainnat, or ieeetr. See
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
# The default value is: plain.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_BIB_STYLE = plain
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
# path from which the emoji images will be read. If a relative path is entered,
# it will be relative to the LATEX_OUTPUT directory. If left blank the
# LATEX_OUTPUT directory will be used.
# This tag requires that the tag GENERATE_LATEX is set to YES.
LATEX_EMOJI_DIRECTORY =
#---------------------------------------------------------------------------
# Configuration options related to the RTF output
#---------------------------------------------------------------------------
# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
# RTF output is optimized for Word 97 and may not look too pretty with other RTF
# readers/editors.
# The default value is: NO.
GENERATE_RTF = NO
# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: rtf.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_OUTPUT = rtf
# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
# documents. This may be useful for small projects and may help to save some
# trees in general.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
COMPACT_RTF = NO
# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
# contain hyperlink fields. The RTF file will contain links (just like the HTML
# output) instead of page references. This makes the output suitable for online
# browsing using Word or some other Word compatible readers that support those
# fields.
#
# Note: WordPad (write) and others do not support links.
# The default value is: NO.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_HYPERLINKS = NO
# Load stylesheet definitions from file. Syntax is similar to doxygen's
# configuration file, i.e. a series of assignments. You only have to provide
# replacements, missing definitions are set to their default value.
#
# See also section "Doxygen usage" for information on how to generate the
# default style sheet that doxygen normally uses.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_STYLESHEET_FILE =
# Set optional variables used in the generation of an RTF document. Syntax is
# similar to doxygen's configuration file. A template extensions file can be
# generated using doxygen -e rtf extensionFile.
# This tag requires that the tag GENERATE_RTF is set to YES.
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# Configuration options related to the man page output
#---------------------------------------------------------------------------
# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
# classes and files.
# The default value is: NO.
GENERATE_MAN = NO
# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it. A directory man3 will be created inside the directory specified by
# MAN_OUTPUT.
# The default directory is: man.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_OUTPUT = man
# The MAN_EXTENSION tag determines the extension that is added to the generated
# man pages. In case the manual section does not start with a number, the number
# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
# optional.
# The default value is: .3.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_EXTENSION = .3
# The MAN_SUBDIR tag determines the name of the directory created within
# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
# MAN_EXTENSION with the initial . removed.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_SUBDIR =
# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
# will generate one additional man file for each entity documented in the real
# man page(s). These additional files only source the real man page, but without
# them the man command would be unable to find the correct page.
# The default value is: NO.
# This tag requires that the tag GENERATE_MAN is set to YES.
MAN_LINKS = NO
#---------------------------------------------------------------------------
# Configuration options related to the XML output
#---------------------------------------------------------------------------
# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
# captures the structure of the code including all documentation.
# The default value is: NO.
GENERATE_XML = NO
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
# it.
# The default directory is: xml.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_OUTPUT = xml
# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
# listings (including syntax highlighting and cross-referencing information) to
# the XML output. Note that enabling this will significantly increase the size
# of the XML output.
# The default value is: YES.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_PROGRAMLISTING = YES
# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
# namespace members in file scope as well, matching the HTML output.
# The default value is: NO.
# This tag requires that the tag GENERATE_XML is set to YES.
XML_NS_MEMB_FILE_SCOPE = NO
#---------------------------------------------------------------------------
# Configuration options related to the DOCBOOK output
#---------------------------------------------------------------------------
# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
# that can be used to generate PDF.
# The default value is: NO.
GENERATE_DOCBOOK = NO
# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
# front of it.
# The default directory is: docbook.
# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
DOCBOOK_OUTPUT = docbook
#---------------------------------------------------------------------------
# Configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures
# the structure of the code including all documentation. Note that this feature
# is still experimental and incomplete at the moment.
# The default value is: NO.
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# Configuration options related to Sqlite3 output
#---------------------------------------------------------------------------
# If the GENERATE_SQLITE3 tag is set to YES doxygen will generate a Sqlite3
# database with symbols found by doxygen stored in tables.
# The default value is: NO.
GENERATE_SQLITE3 = NO
# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be
# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put
# in front of it.
# The default directory is: sqlite3.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_OUTPUT = sqlite3
# The SQLITE3_OVERWRITE_DB tag is set to YES, the existing doxygen_sqlite3.db
# database file will be recreated with each doxygen run. If set to NO, doxygen
# will warn if an a database file is already found and not modify it.
# The default value is: YES.
# This tag requires that the tag GENERATE_SQLITE3 is set to YES.
SQLITE3_RECREATE_DB = YES
#---------------------------------------------------------------------------
# Configuration options related to the Perl module output
#---------------------------------------------------------------------------
# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
# file that captures the structure of the code including all documentation.
#
# Note that this feature is still experimental and incomplete at the moment.
# The default value is: NO.
GENERATE_PERLMOD = NO
# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
# output from the Perl module output.
# The default value is: NO.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_LATEX = NO
# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
# formatted so it can be parsed by a human reader. This is useful if you want to
# understand what is going on. On the other hand, if this tag is set to NO, the
# size of the Perl module output will be much smaller and Perl will parse it
# just the same.
# The default value is: YES.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_PRETTY = YES
# The names of the make variables in the generated doxyrules.make file are
# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
# so different doxyrules.make files included by the same Makefile don't
# overwrite each other's variables.
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
# C-preprocessor directives found in the sources and include files.
# The default value is: YES.
ENABLE_PREPROCESSING = YES
# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
# in the source code. If set to NO, only conditional compilation will be
# performed. Macro expansion can be done in a controlled way by setting
# EXPAND_ONLY_PREDEF to YES.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
MACRO_EXPANSION = NO
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
# the macro expansion is limited to the macros specified with the PREDEFINED and
# EXPAND_AS_DEFINED tags.
# The default value is: NO.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_ONLY_PREDEF = NO
# If the SEARCH_INCLUDES tag is set to YES, the include files in the
# INCLUDE_PATH will be searched if a #include is found.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SEARCH_INCLUDES = YES
# The INCLUDE_PATH tag can be used to specify one or more directories that
# contain include files that are not input files but should be processed by the
# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of
# RECURSIVE has no effect here.
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
INCLUDE_PATH =
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
# patterns (like *.h and *.hpp) to filter out the header-files in the
# directories. If left blank, the patterns specified with FILE_PATTERNS will be
# used.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
INCLUDE_FILE_PATTERNS =
# The PREDEFINED tag can be used to specify one or more macro names that are
# defined before the preprocessor is started (similar to the -D option of e.g.
# gcc). The argument of the tag is a list of macros of the form: name or
# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
# is assumed. To prevent a macro definition from being undefined via #undef or
# recursively expanded use the := operator instead of the = operator.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
PREDEFINED =
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
# tag can be used to specify a list of macro names that should be expanded. The
# macro definition that is found in the sources will be used. Use the PREDEFINED
# tag if you want to use a different macro definition that overrules the
# definition found in the source code.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
EXPAND_AS_DEFINED =
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
# remove all references to function-like macros that are alone on a line, have
# an all uppercase name, and do not end with a semicolon. Such function macros
# are typically used for boiler-plate code, and will confuse the parser if not
# removed.
# The default value is: YES.
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration options related to external references
#---------------------------------------------------------------------------
# The TAGFILES tag can be used to specify one or more tag files. For each tag
# file the location of the external documentation should be added. The format of
# a tag file without this location is as follows:
# TAGFILES = file1 file2 ...
# Adding location for the tag files is done as follows:
# TAGFILES = file1=loc1 "file2 = loc2" ...
# where loc1 and loc2 can be relative or absolute paths or URLs. See the
# section "Linking to external documentation" for more information about the use
# of tag files.
# Note: Each tag file must have a unique name (where the name does NOT include
# the path). If a tag file is not located in the directory in which doxygen is
# run, you must also specify the path to the tagfile here.
TAGFILES =
# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
# tag file that is based on the input files it reads. See section "Linking to
# external documentation" for more information about the usage of tag files.
GENERATE_TAGFILE =
# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces
# will be listed in the class and namespace index. If set to NO, only the
# inherited external classes will be listed.
# The default value is: NO.
ALLEXTERNALS = NO
# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
# in the topic index. If set to NO, only the current project's groups will be
# listed.
# The default value is: YES.
EXTERNAL_GROUPS = YES
# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
# the related pages index. If set to NO, only the current project's pages will
# be listed.
# The default value is: YES.
EXTERNAL_PAGES = YES
#---------------------------------------------------------------------------
# Configuration options related to diagram generator tools
#---------------------------------------------------------------------------
# If set to YES the inheritance and collaboration graphs will hide inheritance
# and usage relations if the target is undocumented or is not a class.
# The default value is: YES.
HIDE_UNDOC_RELATIONS = NO
# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
# available from the path. This tool is part of Graphviz (see:
# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
# Bell Labs. The other options in this section have no effect if this option is
# set to NO
# The default value is: NO.
HAVE_DOT = YES
# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
# to run in parallel. When set to 0 doxygen will base this on the number of
# processors available in the system. You can set it explicitly to a value
# larger than 0 to get control over the balance between CPU load and processing
# speed.
# Minimum value: 0, maximum value: 32, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NUM_THREADS = 0
# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of
# subgraphs. When you want a differently looking font in the dot files that
# doxygen generates you can specify fontname, fontcolor and fontsize attributes.
# For details please see <a href=https://graphviz.org/doc/info/attrs.html>Node,
# Edge and Graph Attributes specification</a> You need to make sure dot is able
# to find the font, which can be done by putting it in a standard location or by
# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
# directory containing the font. Default graphviz fontsize is 14.
# The default value is: fontname=Helvetica,fontsize=10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10"
# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can
# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. <a
# href=https://graphviz.org/doc/info/arrows.html>Complete documentation about
# arrows shapes.</a>
# The default value is: labelfontname=Helvetica,labelfontsize=10.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10"
# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes
# around nodes set 'shape=plain' or 'shape=plaintext' <a
# href=https://www.graphviz.org/doc/info/shapes.html>Shapes specification</a>
# The default value is: shape=box,height=0.2,width=0.4.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4"
# You can set the path where dot can find font specified with fontname in
# DOT_COMMON_ATTR and others dot attributes.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_FONTPATH =
# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then doxygen will
# generate a graph for each documented class showing the direct and indirect
# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and
# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case
# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the
# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used.
# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance
# relations will be shown as texts / links.
# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN.
# The default value is: YES.
CLASS_GRAPH = YES
# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
# graph for each documented class showing the direct and indirect implementation
# dependencies (inheritance, containment, and class references variables) of the
# class with other documented classes. Explicit enabling a collaboration graph,
# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the
# command \collaborationgraph. Disabling a collaboration graph can be
# accomplished by means of the command \hidecollaborationgraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
COLLABORATION_GRAPH = YES
# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
# groups, showing the direct groups dependencies. Explicit enabling a group
# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means
# of the command \groupgraph. Disabling a directory graph can be accomplished by
# means of the command \hidegroupgraph. See also the chapter Grouping in the
# manual.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GROUP_GRAPHS = YES
# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
# collaboration diagrams in a style similar to the OMG's Unified Modeling
# Language.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
UML_LOOK = YES
# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
# class node. If there are many fields or methods and many nodes the graph may
# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
# number of items for each type to make the size more manageable. Set this to 0
# for no limit. Note that the threshold may be exceeded by 50% before the limit
# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
# but if the number exceeds 15, the total amount of fields shown is limited to
# 10.
# Minimum value: 0, maximum value: 100, default value: 10.
# This tag requires that the tag UML_LOOK is set to YES.
UML_LIMIT_NUM_FIELDS = 10
# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and
# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS
# tag is set to YES, doxygen will add type and arguments for attributes and
# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen
# will not generate fields with class member information in the UML graphs. The
# class diagrams will look similar to the default class diagrams but using UML
# notation for the relationships.
# Possible values are: NO, YES and NONE.
# The default value is: NO.
# This tag requires that the tag UML_LOOK is set to YES.
DOT_UML_DETAILS = NO
# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters
# to display on a single line. If the actual line length exceeds this threshold
# significantly it will wrapped across multiple lines. Some heuristics are apply
# to avoid ugly line breaks.
# Minimum value: 0, maximum value: 1000, default value: 17.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_WRAP_THRESHOLD = 17
# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
# collaboration graphs will show the relations between templates and their
# instances.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
TEMPLATE_RELATIONS = YES
# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
# YES then doxygen will generate a graph for each documented file showing the
# direct and indirect include dependencies of the file with other documented
# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO,
# can be accomplished by means of the command \includegraph. Disabling an
# include graph can be accomplished by means of the command \hideincludegraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDE_GRAPH = YES
# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
# set to YES then doxygen will generate a graph for each documented file showing
# the direct and indirect include dependencies of the file with other documented
# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set
# to NO, can be accomplished by means of the command \includedbygraph. Disabling
# an included by graph can be accomplished by means of the command
# \hideincludedbygraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
INCLUDED_BY_GRAPH = YES
# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable call graphs for selected
# functions only using the \callgraph command. Disabling a call graph can be
# accomplished by means of the command \hidecallgraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
CALL_GRAPH = YES
# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
# dependency graph for every global function or class method.
#
# Note that enabling this option will significantly increase the time of a run.
# So in most cases it will be better to enable caller graphs for selected
# functions only using the \callergraph command. Disabling a caller graph can be
# accomplished by means of the command \hidecallergraph.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
CALLER_GRAPH = YES
# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
# hierarchy of all classes instead of a textual one.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GRAPHICAL_HIERARCHY = YES
# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
# dependencies a directory has on other directories in a graphical way. The
# dependency relations are determined by the #include relations between the
# files in the directories. Explicit enabling a directory graph, when
# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command
# \directorygraph. Disabling a directory graph can be accomplished by means of
# the command \hidedirectorygraph.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
DIRECTORY_GRAPH = YES
# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels
# of child directories generated in directory dependency graphs by dot.
# Minimum value: 1, maximum value: 25, default value: 1.
# This tag requires that the tag DIRECTORY_GRAPH is set to YES.
DIR_GRAPH_MAX_DEPTH = 1
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
# generated by dot. For an explanation of the image formats see the section
# output formats in the documentation of the dot tool (Graphviz (see:
# https://www.graphviz.org/)).
# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
# to make the SVG files visible in IE 9+ (other browsers do not have this
# requirement).
# Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo,
# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
# png:gdiplus:gdiplus.
# The default value is: png.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_IMAGE_FORMAT = png
# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
# enable generation of interactive SVG images that allow zooming and panning.
#
# Note that this requires a modern browser other than Internet Explorer. Tested
# and working are Firefox, Chrome, Safari, and Opera.
# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
# the SVG files visible. Older versions of IE do not have SVG support.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
INTERACTIVE_SVG = NO
# The DOT_PATH tag can be used to specify the path where the dot tool can be
# found. If left blank, it is assumed the dot tool can be found in the path.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_PATH =
# The DOTFILE_DIRS tag can be used to specify one or more directories that
# contain dot files that are included in the documentation (see the \dotfile
# command).
# This tag requires that the tag HAVE_DOT is set to YES.
DOTFILE_DIRS =
# You can include diagrams made with dia in doxygen documentation. Doxygen will
# then run dia to produce the diagram and insert it in the documentation. The
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
# If left empty dia is assumed to be found in the default search path.
DIA_PATH =
# The DIAFILE_DIRS tag can be used to specify one or more directories that
# contain dia files that are included in the documentation (see the \diafile
# command).
DIAFILE_DIRS =
# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
# path where java can find the plantuml.jar file or to the filename of jar file
# to be used. If left blank, it is assumed PlantUML is not used or called during
# a preprocessing step. Doxygen will generate a warning when it encounters a
# \startuml command in this case and will not generate output for the diagram.
PLANTUML_JAR_PATH =
# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
# configuration file for plantuml.
PLANTUML_CFG_FILE =
# When using plantuml, the specified paths are searched for files specified by
# the !include statement in a plantuml block.
PLANTUML_INCLUDE_PATH =
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
# that will be shown in the graph. If the number of nodes in a graph becomes
# larger than this value, doxygen will truncate the graph, which is visualized
# by representing a node as a red box. Note that doxygen if the number of direct
# children of the root node in a graph is already larger than
# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
# Minimum value: 0, maximum value: 10000, default value: 50.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_GRAPH_MAX_NODES = 1000
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
# generated by dot. A depth value of 3 means that only nodes reachable from the
# root by following a path via at most 3 edges will be shown. Nodes that lay
# further from the root node will be omitted. Note that setting this option to 1
# or 2 may greatly reduce the computation time needed for large code bases. Also
# note that the size of a graph can be further restricted by
# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
# Minimum value: 0, maximum value: 1000, default value: 0.
# This tag requires that the tag HAVE_DOT is set to YES.
MAX_DOT_GRAPH_DEPTH = 50
# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
# files in one run (i.e. multiple -o and -T options on the command line). This
# makes dot run faster, but since only newer versions of dot (>1.8.10) support
# this, this feature is disabled by default.
# The default value is: NO.
# This tag requires that the tag HAVE_DOT is set to YES.
DOT_MULTI_TARGETS = YES
# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
# explaining the meaning of the various boxes and arrows in the dot generated
# graphs.
# Note: This tag requires that UML_LOOK isn't set, i.e. the doxygen internal
# graphical representation for inheritance and collaboration diagrams is used.
# The default value is: YES.
# This tag requires that the tag HAVE_DOT is set to YES.
GENERATE_LEGEND = YES
# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate
# files that are used to generate the various graphs.
#
# Note: This setting is not only used for dot files but also for msc temporary
# files.
# The default value is: YES.
DOT_CLEANUP = NO
# You can define message sequence charts within doxygen comments using the \msc
# command. If the MSCGEN_TOOL tag is left empty (the default), then doxygen will
# use a built-in version of mscgen tool to produce the charts. Alternatively,
# the MSCGEN_TOOL tag can also specify the name an external tool. For instance,
# specifying prog as the value, doxygen will call the tool as prog -T
# <outfile_format> -o <outputfile> <inputfile>. The external tool should support
# output file formats "png", "eps", "svg", and "ismap".
MSCGEN_TOOL =
# The MSCFILE_DIRS tag can be used to specify one or more directories that
# contain msc files that are included in the documentation (see the \mscfile
# command).
MSCFILE_DIRS =
================================================
FILE: cola/INSTALL
================================================
from svn
autoreconf
./configure
make
make install
================================================
FILE: cola/LICENSE
================================================
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
================================================
FILE: cola/Makefile-swig-java
================================================
OSNAME:=$(shell uname -s | sed 's/_.*//')
ifeq ($(OSNAME),Darwin)
CPPFLAGS =
CXXFLAGS += -std=c++11
# Change path to JDK
# JAVA_INCLUDE = -I/System/Library/Frameworks/JavaVM.framework/Headers
JAVA_INCLUDE = -I/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/include \
-I/Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home/include/darwin
# LINK = $(CXX) $(CXXFLAGS) -dynamiclib -framework JavaVM -o adaptagrams.dylib
LINK = $(CXX) $(CXXFLAGS) -dynamiclib -o adaptagrams.dylib
else
# Some make versions say only one else per if statment.
ifeq ($(OSNAME),Linux)
CPPFLAGS = -fPIC
# Change path to JDK
JAVA_INCLUDE = -I/usr/lib/jvm/java-8-openjdk-amd64/include \
-I/usr/lib/jvm/java-8-openjdk-amd64/include/linux
LINK = $(CXX) $(CXXFLAGS) -shared -o adaptagrams.so
else
ifeq ($(OSNAME),MINGW32)
CPPFLAGS =
# Change path to JDK
JAVA_INCLUDE = -I"/c/Program Files/Java/jdk-1.8/include" \
-I"/c/Program File/Java/jdk-1.8/include/win32"
# Building with MinGW
LINK = $(CXX) $(CXXFLAGS) -Wl,--add-stdcall-alias -shared -o adaptagrams.dll
else
ifeq ($(OSNAME),MINGW64)
CPPFLAGS =
# Change path to JDK
JAVA_INCLUDE = -I"/c/Program Files/Java/jdk-1.8/include" \
-I"/c/Program Files/Java/jdk-1.8/include/win32"
# Building with MSYS2
LINK = $(CXX) $(CXXFLAGS) -Wl,--add-stdcall-alias -static-libgcc -static-libstdc++ -static -lpthread -shared -o adaptagrams.dll
endif
endif
endif
endif
all: adaptagrams jar
swig-worked: clean adaptagrams.i
mkdir -p java/src/org/adaptagrams
mkdir -p java/build/org/adaptagrams
# Use Swig version 3
swig -DUSE_ASSERT_EXCEPTIONS -c++ -java -package org.adaptagrams -outdir java/src/org/adaptagrams adaptagrams.i
touch swig-worked
adaptagrams_wrap.o: swig-worked
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -I. $(JAVA_INCLUDE) -c adaptagrams_wrap.cxx
adaptagrams: adaptagrams_wrap.o
$(LINK) adaptagrams_wrap.o libcola/.libs/libcola.a libtopology/.libs/libtopology.a libavoid/.libs/libavoid.a libvpsc/.libs/libvpsc.a libdialect/.libs/libdialect.a
jar: swig-worked
javac -d java/build/ java/src/org/adaptagrams/*.java
jar cf adaptagrams.jar -C java/build/ .
jar uf adaptagrams.jar -C java/src/ .
realclean: clean
clean: mostlyclean
rm -f adaptagrams.so adaptagrams.dylib adaptagrams.so
mostlyclean:
rm -f swig-worked
rm -f adaptagrams_wrap.o adaptagrams_wrap.cxx adaptagrams.jar
rm -rf java/*
.PHONY: all clean mostlyclean realclean
================================================
FILE: cola/Makefile-swig-python
================================================
OSNAME:=$(shell uname -s | sed 's/_.*//')
COMPILER =
# to get a list of available compilers run
# python swig-python-setup.py build_ext --help-compiler
# no changes necessary on Linux and MacOS
# change compiler to mingw32 on MinGW (but not on MSYS2)
ifeq ($(OSNAME),MINGW32)
COMPILER = --compiler=mingw32
endif
all: adaptagrams
adaptagrams_wrap.cxx: clean adaptagrams.i
# use Swig version 3
swig -DNDEBUG -c++ -python adaptagrams.i
adaptagrams: adaptagrams_wrap.cxx
# change to 'python' on Windows
python3 swig-python3-setup.py build_ext --inplace $(COMPILER)
realclean: clean
clean: mostlyclean
rm -f _adaptagrams.so _adaptagrams.dylib _adaptagrams.dll
rm -f adaptagrams.py
mostlyclean:
rm -f swig-worked
rm -f adaptagrams_wrap.o adaptagrams_wrap.cxx
.PHONY: all clean mostlyclean realclean
================================================
FILE: cola/Makefile.am
================================================
ACLOCAL_AMFLAGS = -I m4
AUTOMAKE_OPTIONS = gnu
SUBDIRS = libavoid libvpsc libcola libtopology libdialect
================================================
FILE: cola/NEWS
================================================
================================================
FILE: cola/README
================================================
See README.md in the parent directory.
================================================
FILE: cola/__init__.py
================================================
================================================
FILE: cola/adaptagrams.i
================================================
/* This is a SWIG interface file for generating interfaces to the Adpatagrams
* libraries for languages other than C++. It has currently been tested from
* Java and Python, but could be adapted for other languages.
*/
/* File : adaptagrams.i */
%module(directors="1") adaptagrams
/* Allow target language to subclass and implement virtual methods for
* these classes.
*/
%feature("director") Avoid::Router;
%feature("director") cola::TestConvergence;
#ifdef SWIGJAVA
/* Allow enum values to be logically ORed together as flags. */
%include "enumtypeunsafe.swg"
#endif
%{
#ifdef SWIGPYTHON
#define SWIG_FILE_WITH_INIT
#endif
#include <vector>
#include <libvpsc/rectangle.h>
#include <libvpsc/assertions.h>
#include <libcola/cola.h>
#include <libcola/cluster.h>
#include <libcola/convex_hull.h>
#include <libcola/compound_constraints.h>
#include <libcola/exceptions.h>
#include <libtopology/topology_graph.h>
#include <libtopology/cola_topology_addon.h>
#include <libavoid/libavoid.h>
#include <libtopology/orthogonal_topology.h>
#include <libdialect/aca.h>
#include <libdialect/chains.h>
#include <libdialect/commontypes.h>
#include <libdialect/constraints.h>
#include <libdialect/faces.h>
#include <libdialect/graphs.h>
#include <libdialect/hola.h>
#include <libdialect/io.h>
#include <libdialect/nearalign.h>
#include <libdialect/nodeconfig.h>
#include <libdialect/opts.h>
#include <libdialect/ortho.h>
#include <libdialect/peeling.h>
#include <libdialect/planarise.h>
#include <libdialect/routing.h>
#include <libdialect/treeplacement.h>
#include <libdialect/trees.h>
/* Includes the header in the wrapper code */
using namespace Avoid;
using namespace cola;
using namespace hull;
using namespace vpsc;
using namespace topology;
using namespace dialect;
%}
%ignore Avoid::XDIM;
%ignore Avoid::YDIM;
%ignore Avoid::Point::operator[];
%ignore cola::PreIteration::operator();
%ignore cola::PreIteration::locksNotUsed;
//%ignore cola::TestConvergence::operator();
%ignore operator<<(std::ostream &os, vpsc::Rectangle const &r);
%ignore vpsc::Rectangle::setXBorder(double);
%ignore vpsc::Rectangle::setYBorder(double);
%ignore vpsc::assertNoOverlaps(const Rectangles& rs);
%ignore Avoid::Point::operator==(const Point&) const;
%ignore Avoid::Point::operator!=(const Point&) const;
%ignore Avoid::Point::operator<(const Point&) const;
%ignore Avoid::Point::operator-(const Point&) const;
%ignore Avoid::Point::operator+(const Point&) const;
%ignore Avoid::ShapeConnectionPin::operator<(const ShapeConnectionPin& rhs) const;
%ignore Avoid::ShapeConnectionPin::operator==(const ShapeConnectionPin& rhs) const;
%ignore Avoid::CmpConnPinPtr::operator()(const ShapeConnectionPin *lhs, const ShapeConnectionPin *rhs) const;
%ignore cola::SubConstraint;
%ignore cola::SubConstraintAlternatives;
%ignore cola::SubConstraintInfo;
%ignore std::vector<cola::SubConstraintInfo>;
%ignore cola::NonOverlapConstraints;
%ignore cola::Resize::Resize();
%ignore vpsc::Constraint::Constraint();
%ignore topology::Segment;
%ignore topology::EdgePoint::inSegment;
%ignore topology::EdgePoint::outSegment;
%ignore topology::EdgePoint::bendConstraint;
%ignore topology::EdgePoint::prune();
%ignore topology::EdgePoint::getBendConstraint(std::vector<TopologyConstraint*>* ts);
%ignore topology::EdgePoint::createBendConstraint();
%ignore topology::EdgePoint::deleteBendConstraint();
%ignore topology::Edge::firstSegment;
%ignore topology::Edge::lastSegment;
%ignore topology::Edge::getTopologyConstraints(std::vector<TopologyConstraint*>* ts) const;
%ignore topology::Edge::getRoute() const;
%ignore topology::Edge::toString() const;
%ignore topology::Edge::toString() const;
%ignore topology::assertConvexBends(const Edges&);
%ignore topology::assertNoSegmentRectIntersection(const Nodes&, const Edges&);
%ignore topology::assertNoZeroLengthEdgeSegments(const Edges& es);
%ignore topology::compute_stress(const Edges&);
%ignore topology::printEdges(const Edges&);
%ignore dialect::Node::operator=(const dialect::Node&);
%ignore dialect::Edge::operator=(const dialect::Edge&);
%ignore dialect::Graph::operator=(const Graph);
%ignore dialect::PeeledNode::operator=(const PeeledNode&);
%ignore operator+(const dialect::BoundingBox&, const dialect::BoundingBox&);
%ignore operator+(const dialect::ProjSeq&, const dialect::ProjSeq&);
%ignore operator==(const dialect::BoundingBox&, const dialect::BoundingBox&);
%ignore operator!=(const dialect::BoundingBox&, const dialect::BoundingBox&);
%ignore dialect::identifyRootNode(const Graph&);
%ignore dialect::negateSepDir(SepDir);
%ignore dialect::swap(Graph&, Graph&);
%ignore dialect::ProjSeq::operator+=(const ProjSeq&);
%ignore dialect::BoundingBox::operator+=(const BoundingBox&);
%ignore dialect::NodeIdCmp::operator()(id_type, const std::pair<id_type, Node_SP>&) const;
%ignore dialect::NodeIdCmp::operator()(const std::pair<id_type, Node_SP>&, id_type) const;
%ignore dialect::operator&(AlignmentFlag, AlignmentFlag);
%ignore dialect::operator|=(AlignmentFlag&, AlignmentFlag);
%include "std_string.i"
%include "std_vector.i"
%include "std_deque.i"
%include "std_pair.i"
%include "std_map.i"
%include "std_shared_ptr.i"
#ifdef SWIGJAVA
/* Wrap every C++ action in try/catch statement so we convert all
* possible C++ exceptions (generated from C++ assertion failures)
* into Java exceptions.
*/
%exception {
try {
$action
} catch(vpsc::CriticalFailure cf) {
jclass excep = jenv->FindClass("org/adaptagrams/ColaException");
if (excep)
jenv->ThrowNew(excep, cf.what().c_str());
} catch(cola::InvalidVariableIndexException ivi) {
jclass excep = jenv->FindClass("org/adaptagrams/ColaException");
if (excep)
jenv->ThrowNew(excep, ivi.what().c_str());
}
}
/* Define a Java ColaException class.
*/
%typemap(javabase) cola::ColaException "java.lang.Exception";
%inline %{
namespace cola {
class ColaException {
public:
ColaException(const std::string& msg) : message(msg) {}
std::string getMessage() {
return message;
}
private:
std::string message;
};
}
%}
#endif
/* We have a problem where in garbage collected languages like Java and Python,
* objects that appear to no longer be used and go out of scope can cause
* their corresponding internal C++ instances to be freed prematurely.
* For this reason we generate empty finialise methods for the following
* classes and clean them up later.
*
* For libavoid, the Router instance takes ownership of these objects and
* deletes them when it is freed. For the cola/vpsc classes, a Java/Python
* user can call ConstrainedFDLayout::freeAssociatedObjects() to free this
* memory.
*/
%nodefaultdtor vpsc::Rectangle;
%nodefaultdtor cola::CompoundConstraint;
%nodefaultdtor cola::AlignmentConstraint;
%nodefaultdtor cola::BoundaryConstraint;
%nodefaultdtor cola::DistributionConstraint;
%nodefaultdtor cola::MultiSeparationConstraint;
%nodefaultdtor cola::PageBoundaryConstraints;
%nodefaultdtor cola::SeparationConstraint;
%nodefaultdtor cola::OrthogonalEdgeConstraint;
%nodefaultdtor cola::FixedRelativeConstraint;
%nodefaultdtor cola::Cluster;
%nodefaultdtor cola::RootCluster;
%nodefaultdtor cola::ConvexCluster;
%nodefaultdtor cola::RectangularCluster;
%nodefaultdtor Avoid::ShapeRef;
%nodefaultdtor Avoid::ConnRef;
%nodefaultdtor Avoid::ClusterRef;
%nodefaultdtor Avoid::JunctionRef;
%nodefaultdtor Avoid::Obstacle;
%nodefaultdtor Avoid::ShapeConnectionPin;
%nodefaultdtor cola::PreIteration;
%nodefaultdtor cola::TestConvergence;
%nodefaultdtor cola::Lock;
%nodefaultdtor cola::Resize;
%nodefaultdtor topology::Node;
%nodefaultdtor topology::Edge;
%nodefaultdtor topology::EdgePoint;
%nodefaultdtor topology::ColaTopologyAddon;
%nodefaultdtor dialect::ACALayout;
%nodefaultdtor dialect::Graph;
%nodefaultdtor dialect::Node;
%nodefaultdtor dialect::Edge;
%include "libdialect/commontypes.h"
%template(Chars) std::vector<char>;
%template(Unsigneds) std::vector<unsigned>;
%template(Doubles) std::vector<double>;
%template(UnsatisfiableConstraintInfoPtrs) std::vector<cola::UnsatisfiableConstraintInfo *>;
%template(ColaEdge) std::pair<unsigned,unsigned>;
%template(ColaEdges) std::vector< std::pair<unsigned,unsigned> >;
%template(RectanglePtrs) std::vector<vpsc::Rectangle*>;
%template(CompoundConstraintPtrs) std::vector<cola::CompoundConstraint*>;
%template(ColaLocks) std::vector<cola::Lock>;
%template(ColaResizes) std::vector<cola::Resize>;
%template(ColaDesiredPositions) std::vector<cola::DesiredPosition>;
%template(TopologyEdgePointPtrs) std::vector<topology::EdgePoint*>;
%template(TopologyEdgePointConstPtrs) std::vector<const topology::EdgePoint*>;
%template(TopologyEdgePtrs) std::vector<topology::Edge*>;
%template(TopologyNodePtrs) std::vector<topology::Node*>;
%template(ColaClusters) std::vector<cola::Cluster*>;
%template(AvoidPoints) std::vector<Avoid::Point>;
%template(AvoidCheckpoints) std::vector<Avoid::Checkpoint>;
%template(OrderedAlignmentPtrs) std::vector<dialect::OrderedAlignment*>;
%template(TreePtrs) std::vector<std::shared_ptr<dialect::Tree>>;
%template(ChainPtrs) std::vector<std::shared_ptr<dialect::Chain>>;
%template(DialectNodes) std::vector<std::shared_ptr<dialect::Node>>;
%template(DialectNodeLookup) std::map<dialect::id_type, std::shared_ptr<dialect::Node>>;
%template(DialectNodeDeques) std::vector<std::deque<std::shared_ptr<dialect::Node>>>;
%inline %{
void doubleArraySet(double *a, int i, double val) {
a[i] = val;
}
double doubleArrayGet(const double *a, int i) {
return a[i];
}
double *newDoubleArray(int size) {
return new double[size];
}
void deleteDoubleArray(double* a) {
delete a;
}
%}
%rename(ColaTestConvergenceOperator) cola::TestConvergence::operator();
%rename(AvoidBox) Avoid::Box;
%rename(AvoidEdge) Avoid::Edge;
%rename(AvoidRectangle) Avoid::Rectangle;
%rename(AvoidTopologyAddonInterface) Avoid::TopologyAddonInterface;
%rename(getVarConst) topology::Node::getVar() const;
%rename(DialectNode) dialect::Node;
%rename(DialectEdge) dialect::Edge;
%rename(X1) dialect::BoundingBox::x;
%rename(Y1) dialect::BoundingBox::y;
%rename(X2) dialect::BoundingBox::X;
%rename(Y2) dialect::BoundingBox::Y;
%shared_ptr(dialect::Node)
%shared_ptr(dialect::GhostNode)
%shared_ptr(dialect::PeeledNode)
%shared_ptr(dialect::Graph)
%shared_ptr(dialect::Tree)
%shared_ptr(dialect::Side)
%shared_ptr(dialect::Nexus)
%shared_ptr(dialect::Face)
%shared_ptr(dialect::FaceSet)
%shared_ptr(dialect::TreePlacement)
%shared_ptr(dialect::Chain)
/* %warnfilter(315) dialect::Edge; */
%ignore dialect::Edge::m_tgt;
/* Parse the header file to generate wrappers */
%include "libvpsc/rectangle.h"
%include "libvpsc/assertions.h"
%include "libcola/compound_constraints.h"
%include "libcola/cola.h"
%include "libcola/cluster.h"
%include "libcola/convex_hull.h"
%include "libcola/exceptions.h"
%include "libavoid/dllexport.h"
%include "libavoid/geometry.h"
%include "libavoid/geomtypes.h"
%include "libavoid/connend.h"
%include "libavoid/router.h"
%include "libavoid/connector.h"
%include "libavoid/obstacle.h"
%include "libavoid/shape.h"
%include "libavoid/junction.h"
%include "libavoid/viscluster.h"
%include "libavoid/connectionpin.h"
%include "libtopology/topology_graph.h"
%include "libtopology/cola_topology_addon.h"
%include "libtopology/orthogonal_topology.h"
%include "libdialect/aca.h"
%include "libdialect/chains.h"
%include "libdialect/constraints.h"
%include "libdialect/faces.h"
%include "libdialect/graphs.h"
%include "libdialect/hola.h"
%include "libdialect/io.h"
%include "libdialect/nearalign.h"
%include "libdialect/nodeconfig.h"
%include "libdialect/opts.h"
%include "libdialect/ortho.h"
%include "libdialect/peeling.h"
%include "libdialect/planarise.h"
%include "libdialect/routing.h"
%include "libdialect/treeplacement.h"
%include "libdialect/trees.h"
================================================
FILE: cola/autogen.sh
================================================
#!/bin/sh -xe
#
# We use gnu automake to build. I've tried to make the contents of the
# repository as platform agnostic as possible, so you'll need to call
# autoreconf before configure.
# Make m4 directory, otherwise autoreconf fails when it doesn't exist.
mkdir -p m4
autoreconf --install --verbose
# The following sequence gives the manual steps if autoreconf isn't available.
#
#aclocal $ACLOCAL_FLAGS
#glibtoolize
#autoheader
#autoconf
#automake -a --add-missing
# Configure.
./configure
# Compile with CXXFLAGS="-std=c++11" when using g++ 14 or newer
# ./configure CXXFLAGS="-std=c++11"
# Instead, use this line if building for SWIG Java or SWIG Python 3:
# ./configure CPPFLAGS="-DUSE_ASSERT_EXCEPTIONS"
# Compile with CXXFLAGS="-std=c++11" when using g++ 14 or newer
# ./configure CXXFLAGS="-std=c++11" CPPFLAGS="-DUSE_ASSERT_EXCEPTIONS"
# Instead, use this line if building for SWIG Python:
# (this line doesn't seem to work anymore, it's causing problems in particular with
# libdialect and "-O3 -DNDEBUG")
# ./configure CXXFLAGS="-O3 -DNDEBUG -arch x86_64 -arch i386" LDFLAGS="-arch x86_64 -arch i386"
# Instead, use this line for development and for debugging the tests:
#./configure --disable-shared CXXFLAGS="-g -O0"
make
# The following builds examples and tests for each of the libraries.
# Please look at these before sending me questions.
make check
================================================
FILE: cola/buildPythonSWIG.sh
================================================
#!/bin/sh
make -f Makefile-swig-python CPPFLAGS="-Wno-c++11-extensions"
================================================
FILE: cola/buildSWIGVersionForMac.sh
================================================
#!/bin/sh
# Builds a universeral 32/64-bet Mac Java version of the Adaptagrams libraries.
FATFLAGS="-arch i386 -arch x86_64"
mkdir -p m4
autoreconf --install --verbose
./configure --disable-dependency-tracking CPPFLAGS="-DNDEBUG -O3 -DUSE_ASSERT_EXCEPTIONS" CXXFLAGS="$FATFLAGS" LDFLAGS="$FATFLAGS"
make clean
make -j8
make -f Makefile-swig-java CXXFLAGS="$FATFLAGS" LDFLAGS="$FATFLAGS"
make -f Makefile-swig-python
================================================
FILE: cola/configure.ac
================================================
AC_INIT([libcola],[0.1])
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR(libcola/cola.h)
AC_CONFIG_HEADERS([libcola/config.h])
AM_INIT_AUTOMAKE
# able to choose or disable these two at configure time:
AC_ENABLE_STATIC
AC_ENABLE_SHARED
AC_PROG_CXX
AC_PROG_CC
AC_PROG_LIBTOOL
LT_INIT
AC_PROG_INSTALL
#AC_DEFINE(TRACE_LOGGING)
dnl ******************************
dnl Compilation warnings
dnl ******************************
if test "$GXX" = "yes"; then
# Use C++11 Extensions
CXXFLAGS="-std=gnu++11 $CXXFLAGS"
dnl Alternatively (https://askubuntu.com/a/773293),
dnl CXXFLAGS="-std=c++11 $CXXFLAGS"
case "$host_os" in
darwin*)
dnl See https://stackoverflow.com/a/14657009
CXXFLAGS="-stdlib=libc++ $CXXFLAGS"
;;
esac
# Enable some warnings from g++.
CXXFLAGS="-Wall -W -Wpointer-arith -Wcast-align -Wsign-compare -Woverloaded-virtual -Wswitch $CXXFLAGS"
dnl Test for arch-specific situations.
case "$host_cpu" in
mips|mipsel)
dnl Symbol tables can get too large: this uses alternate tables
dnl See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=283476
CXXFLAGS="$CXXFLAGS -Wa,-xgot"
CFLAGS="$CFLAGS -Wa,-xgot"
;;
esac
fi
# If we are on a Windows OS using MinGW, extend the linker flags by '-no-undefined'
# to avoid linker warnings
if test "x$host_os" = "xmingw32"; then
AM_LDFLAGS="$AM_LDFLAGS -no-undefined"
fi
# Distribute the changed linker flags among the Makefiles
AC_SUBST(AM_LDFLAGS)
#AC_CHECK_LIB(cairomm-1.0,cairo_create)
PKG_CHECK_MODULES(CAIROMM,cairomm-1.0,cairomm=yes,cairomm=no)
if test "x$cairomm" = "xyes"; then
AC_DEFINE(HAVE_CAIROMM, 1, [Enable CairoMM code])
fi
AC_SUBST(CAIROMM_CFLAGS)
AC_SUBST(CAIROMM_LIBS)
AH_BOTTOM([
])
AC_CONFIG_FILES([Makefile libcola/Makefile libcola/tests/Makefile libvpsc/Makefile libvpsc/tests/Makefile libtopology/Makefile libtopology/tests/Makefile libavoid/Makefile libavoid/tests/Makefile libdialect/Makefile libdialect/tests/Makefile libcola/libcola.pc libavoid/libavoid.pc libvpsc/libvpsc.pc libtopology/libtopology.pc libdialect/libdialect.pc])
AC_OUTPUT
================================================
FILE: cola/libavoid/Doxyfile
================================================
# Doxyfile 1.9.8
# This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for a project.
#
# All text after a double hash (##) is considered a comment and is placed in
# front of the TAG it is preceding.
#
# All text after a single hash (#) is considered a comment and will be ignored.
# The format is:
# TAG = value [value, ...]
# For lists, items can also be appended using:
# TAG += value [value, ...]
# Values that contain spaces should be placed between quotes (\" \").
#
# Note:
#
# Use doxygen to compare the used configuration file with the template
# configuration file:
# doxygen -x [configFile]
# Use doxygen to compare the used configuration file with the template
# configuration file without replacing the environment variables or CMake type
# replacement variables:
# doxygen -x_noenv [configFile]
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
# This tag specifies the encoding used for all characters in the configuration
# file that follow. The default is UTF-8 which is also the encoding used for all
# text before the first occurrence of this tag. Doxygen uses libiconv (or the
# iconv built into libc) for the transcoding. See
# https://www.gnu.org/software/libiconv/ for the list of possible encodings.
# The default value is: UTF-8.
DOXYFILE_ENCODING = UTF-8
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
# double-quotes, unless you are using Doxywizard) that should identify the
# project for which the documentation is generated. This name is used in the
# title of most generated pages and in a few other places.
# The default value is: My Project.
PROJECT_NAME = libavoid
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version
# control system is used.
PROJECT_NUMBER =
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
# quick idea about the purpose of the project. Keep the description short.
PROJECT_BRIEF =
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
# in the documentation. The maximum height of the logo should not exceed 55
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
# the logo to the output directory.
PROJECT_LOGO =
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
# into which the generated documentation will be written. If a relative path is
# entered, it will be relative to the location where doxygen was started. If
# left blank the current directory will be used.
OUTPUT_DIRECTORY = doc
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096
# sub-directories (in 2 levels) under the output directory of each output format
# and will distribute the generated files over these directories. Enabling this
# option can be useful when feeding doxygen a huge amount of source files, where
# putting all generated files in the same directory would otherwise causes
# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to
# control the number of sub-directories.
# The default value is: NO.
CREATE_SUBDIRS = NO
# Controls the number of sub-directories that will be created when
# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every
# level increment doubles the number of directories, resulting in 4096
# directories at level 8 which is the default and also the maximum value. The
# sub-directories are organized in 2 levels, the first level always has a fixed
# number of 16 directories.
# Minimum value: 0, maximum value: 8, default value: 8.
# This tag requires that the tag CREATE_SUBDIRS is set to YES.
CREATE_SUBDIRS_LEVEL = 8
# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
# characters to appear in the names of generated files. If set to NO, non-ASCII
# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
# U+3044.
# The default value is: NO.
ALLOW_UNICODE_NAMES = NO
# The OUTPUT_LANGUAGE tag is used to specify the language in which all
# documentation generated by doxygen is written. Doxygen will use this
# information to generate all constant output in the proper language.
# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian,
# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English
# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek,
# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with
# English messages), Korean, Korean-en (Korean with English messages), Latvian,
# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese,
# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish,
# Swedish, Turkish, Ukrainian and Vietnamese.
# The default value is: English.
OUTPUT_LANGUAGE = English
# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
# descriptions after the members that are listed in the file and class
# documentation (similar to Javadoc). Set to NO to disable this.
# The default value is: YES.
BRIEF_MEMBER_DESC = YES
# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
# description of a member or function before the detailed description
#
# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
# brief descriptions will be completely suppressed.
# The default value is: YES.
REPEAT_BRIEF = YES
# This tag implements a quasi-intelligent brief description abbreviator that is
# used to form the text in various listings. Each string in this list, if found
# as the leading text of the brief description, will be stripped from the text
# and the result, after processing the whole list, is used as the annotated
# text. Otherwise, the brief description is used as-is. If left blank, the
# following values are used ($name is automatically replaced with the name of
# the entity):The $name class, The $name widget, The $name file, is, provides,
# specifies, contains, represents, a, an and the.
ABBREVIATE_BRIEF =
# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
# doxygen will generate a detailed section even if there is only a brief
# description.
# The default value is: NO.
ALWAYS_DETAILED_SEC = NO
# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
# inherited members of a class in the documentation of that class as if those
# members were ordinary class members. Constructors, destructors and assignment
# operators of the base classes will not be shown.
# The default value is: NO.
INLINE_INHERITED_MEMB = YES
# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
# before files name in the file list and in the header files. If set to NO the
# shortest path that makes the file name unique will be used
# The default value is: YES.
FULL_PATH_NAMES = YES
# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
# Stripping is only done if one of the specified strings matches the left-hand
# part of the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the path to
# strip.
#
# Note that you can specify absolute paths here, but also relative paths, which
# will be relative from the directory where doxygen is started.
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
STRIP_FROM_PATH =
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
# path mentioned in the documentation of a class, which tells the reader which
# header file to include in order to use a class. If left blank only the name of
# the header file containing the class definition is used. Otherwise one should
# specify the list of include paths that are normally passed to the compiler
# using the -I flag.
STRIP_FROM_INC_PATH =
# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
# less readable) file names. This can be useful is your file systems doesn't
# support long names like on DOS, Mac, or CD-ROM.
# The default value is: NO.
SHORT_NAMES = NO
# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
# first line (until the first dot) of a Javadoc-style comment as the brief
# description. If set to NO, the Javadoc-style will behave just like regular Qt-
# style comments (thus requiring an explicit @brief command for a brief
# description.)
# The default value is: NO.
JAVADOC_AUTOBRIEF = NO
# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line
# such as
# /***************
# as being the beginning of a Javadoc-style comment "banner". If set to NO, the
# Javadoc-style will behave just like regular comments and it will not be
# interpreted by doxygen.
# The default value is: NO.
JAVADOC_BANNER = NO
# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
# line (until the first dot) of a Qt-style comment as the brief description. If
# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
# requiring an explicit \brief command for a brief description.)
# The default value is: NO.
QT_AUTOBRIEF = NO
# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
# a brief description. This used to be the default behavior. The new default is
# to treat a multi-line C++ comment block as a detailed description. Set this
# tag to YES if you prefer the old behavior instead.
#
# Note that setting this tag to YES also means that rational rose comments are
# not recognized any more.
# The default value is: NO.
MULTILINE_CPP_IS_BRIEF = NO
# By default Python docstrings are displayed as preformatted text and doxygen's
# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the
# doxygen's special commands can be used and the contents of the docstring
# documentation blocks is shown as doxygen documentation.
# The default value is: YES.
PYTHON_DOCSTRING = YES
# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
# documentation from any documented member that it re-implements.
# The default value is: YES.
INHERIT_DOCS = YES
# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
# page for each member. If set to NO, the documentation of a member will be part
# of the file/class/namespace that contains it.
# The default value is: NO.
SEPARATE_MEMBER_PAGES = NO
# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
# uses this value to replace tabs by spaces in code fragments.
# Minimum value: 1, maximum value: 16, default value: 4.
TAB_SIZE = 8
# This tag can be used to specify a number of aliases that act as commands in
# the documentation. An alias has the form:
# name=value
# For example adding
# "sideeffect=@par Side Effects:^^"
# will allow you to put the command \sideeffect (or @sideeffect) in the
# documentation, which will result in a user-defined paragraph with heading
# "Side Effects:". Note that you cannot put \n's in the value part of an alias
# to insert newlines (in the resulting output). You can put ^^ in the value part
# of an alias to insert a newline as if a physical newline was in the original
# file. When you need a literal { or } or , in the value part of an alias you
# have to escape them by means of a backslash (\), this can lead to conflicts
# with the commands \{ and \} for these it is advised to use the version @{ and
# @} or use a double escape (\\{ and \\})
ALIASES =
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
# only. Doxygen will then generate output that is more tailored for C. For
# instance, some of the names that are used will be different. The list of all
# members will be omitted, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_FOR_C = NO
# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
# Python sources only. Doxygen will then generate output that is more tailored
# for that language. For instance, namespaces will be presented as packages,
# qualified scopes will look different, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_JAVA = NO
# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
# sources. Doxygen will then generate output that is tailored for Fortran.
# The default value is: NO.
OPTIMIZE_FOR_FORTRAN = NO
# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
# sources. Doxygen will then generate output that is tailored for VHDL.
# The default value is: NO.
OPTIMIZE_OUTPUT_VHDL = NO
# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice
# sources only. Doxygen will then generate output that is more tailored for that
# language. For instance, namespaces will be presented as modules, types will be
# separated into more groups, etc.
# The default value is: NO.
OPTIMIZE_OUTPUT_SLICE = NO
# Doxygen selects the parser to use depending on the extension of the files it
# parses. With this tag you can assign which parser to use for a given
# extension. Doxygen has a built-in mapping, but you can override or extend it
# using this tag. The format is ext=language, where ext is a file extension, and
# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,
# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice,
# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:
# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser
# tries to guess whether the code is fixed or free formatted code, this is the
# default for Fortran type files). For instance to make doxygen treat .inc files
# as Fortran files (default is PHP), and .f files as C (default is Fortran),
# use: inc=Fortran f=C.
#
# Note: For files without extension you can use no_extension as a placeholder.
#
# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
# the files are not read by doxygen. When specifying no_extension you should add
# * to the FILE_PATTERNS.
#
# Note see also the list of default file extension mappings.
EXTENSION_MAPPING =
# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
# according to the Markdown format, which allows for more readable
# documentation. See https://daringfireball.net/projects/markdown/ for details.
# The output of markdown processing is further processed by doxygen, so you can
# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
# case of backward compatibilities issues.
# The default value is: YES.
MARKDOWN_SUPPORT = YES
# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
# to that level are automatically included in the table of contents, even if
# they do not have an id attribute.
# Note: This feature currently applies only to Markdown headings.
# Minimum value: 0, maximum value: 99, default value: 5.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
TOC_INCLUDE_HEADINGS = 0
# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to
# generate identifiers for the Markdown headings. Note: Every identifier is
# unique.
# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a
# sequence number starting at 0 and GITHUB use the lower case version of title
# with any whitespace replaced by '-' and punctuation characters removed.
# The default value is: DOXYGEN.
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
MARKDOWN_ID_STYLE = DOXYGEN
# When enabled doxygen tries to link words that correspond to documented
# classes, or namespaces to their corresponding documentation. Such a link can
# be prevented in individual cases by putting a % sign in front of the word or
# globally by setting AUTOLINK_SUPPORT to NO.
# The default value is: YES.
AUTOLINK_SUPPORT = YES
# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
# to include (a tag file for) the STL sources as input, then you should set this
# tag to YES in order to let doxygen match functions declarations and
# definitions whose arguments contain STL classes (e.g. func(std::string);
# versus func(std::string) {}). This also make the inheritance and collaboration
# diagrams that involve STL classes more complete and accurate.
# The default value is: NO.
BUILTIN_STL_SUPPORT = NO
# If you use Microsoft's C++/CLI language, you should set this option to YES to
# enable parsing support.
# The default value is: NO.
CPP_CLI_SUPPORT = NO
# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen
# will parse them like normal C++ but will assume all classes use public instead
# of private inheritance when no explicit protection keyword is present.
# The default value is: NO.
SIP_SUPPORT = NO
# For Microsoft's IDL there are propget and propput attributes to indicate
# getter and setter methods for a property. Setting this option to YES will make
# doxygen to replace the get and set methods by a property in the documentation.
# This will only work if the methods are indeed getting or setting a simple
# type. If this is not the case, or you want to show the methods anyway, you
# should set this option to NO.
# The default value is: YES.
IDL_PROPERTY_SUPPORT = YES
# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
# tag is set to YES then doxygen will reuse the documentation of the first
# member in the group (if any) for the other members of the group. By default
# all members of a group must be documented explicitly.
# The default value is: NO.
DISTRIBUTE_GROUP_DOC = NO
# If one adds a struct or class to a group and this option is enabled, then also
# any nested class or struct is added to the same group. By default this option
# is disabled and one has to add nested compounds explicitly via \ingroup.
# The default value is: NO.
GROUP_NESTED_COMPOUNDS = NO
# Set the SUBGROUPING tag to YES to allow class member groups of the same type
# (for instance a group of public functions) to be put as a subgroup of that
# type (e.g. under the Public Functions section). Set it to NO to prevent
# subgrouping. Alternatively, this can be done per class using the
# \nosubgrouping command.
# The default value is: YES.
SUBGROUPING = YES
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
# are shown inside the group in which they are included (e.g. using \ingroup)
# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
# and RTF).
#
# Note that this feature does not work in combination with
# SEPARATE_MEMBER_PAGES.
# The default value is: NO.
INLINE_GROUPED_CLASSES = NO
# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
# with only public data fields or simple typedef fields will be shown inline in
# the documentation of the scope in which they are defined (i.e. file,
# namespace, or grou
gitextract_8ysjozhi/
├── .github/
│ └── workflows/
│ └── build-and-test.yml
├── .gitignore
├── README.md
├── cola/
│ ├── .gitignore
│ ├── AUTHORS
│ ├── COPYING
│ ├── ChangeLog
│ ├── Doxyfile
│ ├── INSTALL
│ ├── LICENSE
│ ├── Makefile-swig-java
│ ├── Makefile-swig-python
│ ├── Makefile.am
│ ├── NEWS
│ ├── README
│ ├── __init__.py
│ ├── adaptagrams.i
│ ├── autogen.sh
│ ├── buildPythonSWIG.sh
│ ├── buildSWIGVersionForMac.sh
│ ├── configure.ac
│ ├── libavoid/
│ │ ├── Doxyfile
│ │ ├── LICENSE.LGPL
│ │ ├── Makefile.am
│ │ ├── README
│ │ ├── actioninfo.cpp
│ │ ├── actioninfo.h
│ │ ├── assertions.h
│ │ ├── connectionpin.cpp
│ │ ├── connectionpin.h
│ │ ├── connector.cpp
│ │ ├── connector.h
│ │ ├── connend.cpp
│ │ ├── connend.h
│ │ ├── debug.h
│ │ ├── debughandler.h
│ │ ├── dllexport.h
│ │ ├── doc/
│ │ │ ├── description.doc
│ │ │ └── example.doc
│ │ ├── geometry.cpp
│ │ ├── geometry.h
│ │ ├── geomtypes.cpp
│ │ ├── geomtypes.h
│ │ ├── graph.cpp
│ │ ├── graph.h
│ │ ├── hyperedge.cpp
│ │ ├── hyperedge.h
│ │ ├── hyperedgeimprover.cpp
│ │ ├── hyperedgeimprover.h
│ │ ├── hyperedgetree.cpp
│ │ ├── hyperedgetree.h
│ │ ├── junction.cpp
│ │ ├── junction.h
│ │ ├── libavoid.h
│ │ ├── libavoid.pc.in
│ │ ├── libavoid.sln
│ │ ├── libavoid.vcxproj
│ │ ├── makepath.cpp
│ │ ├── makepath.h
│ │ ├── mtst.cpp
│ │ ├── mtst.h
│ │ ├── obstacle.cpp
│ │ ├── obstacle.h
│ │ ├── orthogonal.cpp
│ │ ├── orthogonal.h
│ │ ├── router.cpp
│ │ ├── router.h
│ │ ├── scanline.cpp
│ │ ├── scanline.h
│ │ ├── shape.cpp
│ │ ├── shape.h
│ │ ├── tests/
│ │ │ ├── 2junctions.cpp
│ │ │ ├── Makefile.am
│ │ │ ├── buildOrthogonalChannelInfo1.cpp
│ │ │ ├── checkpointNudging1.cpp
│ │ │ ├── checkpointNudging2.cpp
│ │ │ ├── checkpointNudging3.cpp
│ │ │ ├── checkpoints01.cpp
│ │ │ ├── checkpoints02.cpp
│ │ │ ├── checkpoints03.cpp
│ │ │ ├── complex.cpp
│ │ │ ├── connectionpin01.cpp
│ │ │ ├── connectionpin02.cpp
│ │ │ ├── connectionpin03.cpp
│ │ │ ├── connendmove.cpp
│ │ │ ├── corneroverlap01.cpp
│ │ │ ├── endlessLoop01.cpp
│ │ │ ├── example.cpp
│ │ │ ├── finalSegmentNudging1.cpp
│ │ │ ├── finalSegmentNudging2.cpp
│ │ │ ├── finalSegmentNudging3.cpp
│ │ │ ├── forwardFlowingConnectors01.cpp
│ │ │ ├── freeFloatingDirection01.cpp
│ │ │ ├── hola01.cpp
│ │ │ ├── hyperedge01.cpp
│ │ │ ├── hyperedge02.cpp
│ │ │ ├── hyperedgeLoop1.cpp
│ │ │ ├── hyperedgeRerouting01.cpp
│ │ │ ├── improveHyperedge01.cpp
│ │ │ ├── improveHyperedge02.cpp
│ │ │ ├── improveHyperedge03.cpp
│ │ │ ├── improveHyperedge04.cpp
│ │ │ ├── improveHyperedge05.cpp
│ │ │ ├── improveHyperedge06.cpp
│ │ │ ├── infinity.cpp
│ │ │ ├── inline.cpp
│ │ │ ├── inlineOverlap09.cpp
│ │ │ ├── inlineOverlap10.cpp
│ │ │ ├── inlineOverlap11.cpp
│ │ │ ├── inlineShapes.cpp
│ │ │ ├── inlineoverlap01.cpp
│ │ │ ├── inlineoverlap02.cpp
│ │ │ ├── inlineoverlap03.cpp
│ │ │ ├── inlineoverlap04.cpp
│ │ │ ├── inlineoverlap05.cpp
│ │ │ ├── inlineoverlap06.cpp
│ │ │ ├── inlineoverlap07.cpp
│ │ │ ├── inlineoverlap08.cpp
│ │ │ ├── junction01.cpp
│ │ │ ├── junction02.cpp
│ │ │ ├── junction03.cpp
│ │ │ ├── junction04.cpp
│ │ │ ├── latesetup.cpp
│ │ │ ├── lineSegWrapperCrash1.cpp
│ │ │ ├── lineSegWrapperCrash2.cpp
│ │ │ ├── lineSegWrapperCrash3.cpp
│ │ │ ├── lineSegWrapperCrash4.cpp
│ │ │ ├── lineSegWrapperCrash5.cpp
│ │ │ ├── lineSegWrapperCrash6.cpp
│ │ │ ├── lineSegWrapperCrash7.cpp
│ │ │ ├── lineSegWrapperCrash8.cpp
│ │ │ ├── msctests/
│ │ │ │ ├── 2junctions.vcxproj
│ │ │ │ ├── buildOrthogonalChannelInfo1.vcxproj
│ │ │ │ ├── checkpointNudging1.vcxproj
│ │ │ │ ├── checkpointNudging2.vcxproj
│ │ │ │ ├── checkpoints01.vcxproj
│ │ │ │ ├── connectionpin01.vcxproj
│ │ │ │ ├── connectionpin02.vcxproj
│ │ │ │ ├── connectionpin03.vcxproj
│ │ │ │ ├── connendmove.vcxproj
│ │ │ │ ├── corneroverlap01.vcxproj
│ │ │ │ ├── example.vcxproj
│ │ │ │ ├── finalSegmentNudging1.vcxproj
│ │ │ │ ├── finalSegmentNudging2.vcxproj
│ │ │ │ ├── finalSegmentNudging3.vcxproj
│ │ │ │ ├── freeFloatingDirection01.vcxproj
│ │ │ │ └── junction01.vcxproj
│ │ │ ├── multiconnact.cpp
│ │ │ ├── node1.cpp
│ │ │ ├── nudgeCrossing01.cpp
│ │ │ ├── nudgeintobug.cpp
│ │ │ ├── nudgeold.cpp
│ │ │ ├── nudgingSkipsCheckpoint01.cpp
│ │ │ ├── nudgingSkipsCheckpoint02.cpp
│ │ │ ├── orderassertion.cpp
│ │ │ ├── orthordering01.cpp
│ │ │ ├── orthordering02.cpp
│ │ │ ├── output/
│ │ │ │ └── README.txt
│ │ │ ├── overlappingRects.cpp
│ │ │ ├── penaltyRerouting01.cpp
│ │ │ ├── performance01.cpp
│ │ │ ├── reallyslowrouting.cpp
│ │ │ ├── removeJunctions01.cpp
│ │ │ ├── restrictedNudging.cpp
│ │ │ ├── slowrouting.cpp
│ │ │ ├── tjunct.cpp
│ │ │ ├── treeRootCrash01.cpp
│ │ │ ├── treeRootCrash02.cpp
│ │ │ ├── unsatisfiableRangeAssertion.cpp
│ │ │ ├── validPaths01.cpp
│ │ │ ├── validPaths02.cpp
│ │ │ └── vertlineassertion.cpp
│ │ ├── timer.cpp
│ │ ├── timer.h
│ │ ├── vertices.cpp
│ │ ├── vertices.h
│ │ ├── viscluster.cpp
│ │ ├── viscluster.h
│ │ ├── visibility.cpp
│ │ ├── visibility.h
│ │ ├── vpsc.cpp
│ │ └── vpsc.h
│ ├── libcola/
│ │ ├── Makefile.am
│ │ ├── box.cpp
│ │ ├── box.h
│ │ ├── cc_clustercontainmentconstraints.cpp
│ │ ├── cc_clustercontainmentconstraints.h
│ │ ├── cc_nonoverlapconstraints.cpp
│ │ ├── cc_nonoverlapconstraints.h
│ │ ├── cluster.cpp
│ │ ├── cluster.h
│ │ ├── cola.cpp
│ │ ├── cola.h
│ │ ├── cola_log.h
│ │ ├── colafd.cpp
│ │ ├── commondefs.h
│ │ ├── compound_constraints.cpp
│ │ ├── compound_constraints.h
│ │ ├── conjugate_gradient.cpp
│ │ ├── conjugate_gradient.h
│ │ ├── connected_components.cpp
│ │ ├── connected_components.h
│ │ ├── convex_hull.cpp
│ │ ├── convex_hull.h
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── exceptions.h
│ │ ├── gradient_projection.cpp
│ │ ├── gradient_projection.h
│ │ ├── libcola.pc.in
│ │ ├── output_svg.cpp
│ │ ├── output_svg.h
│ │ ├── pseudorandom.cpp
│ │ ├── pseudorandom.h
│ │ ├── shapepair.cpp
│ │ ├── shapepair.h
│ │ ├── shortest_paths.h
│ │ ├── sparse_matrix.h
│ │ ├── straightener.cpp
│ │ ├── straightener.h
│ │ ├── tests/
│ │ │ ├── FixedRelativeConstraint01.cpp
│ │ │ ├── Makefile.am
│ │ │ ├── StillOverlap01.cpp
│ │ │ ├── StillOverlap02.cpp
│ │ │ ├── boundary.cpp
│ │ │ ├── connected_components.cpp
│ │ │ ├── constrained.cpp
│ │ │ ├── containment.cpp
│ │ │ ├── containment2.cpp
│ │ │ ├── convex_hull.cpp
│ │ │ ├── cycle_detector.cpp
│ │ │ ├── data/
│ │ │ │ ├── 1138_bus.txt
│ │ │ │ └── uetzNetworkGSC-all.gml
│ │ │ ├── gml_graph.cpp
│ │ │ ├── graphlayouttest.h
│ │ │ ├── initialOverlap.cpp
│ │ │ ├── invalid.cpp
│ │ │ ├── large_graph.cpp
│ │ │ ├── makefeasible.cpp
│ │ │ ├── makefeasible02.cpp
│ │ │ ├── makemovie.sh
│ │ │ ├── max_acyclic_subgraph.cpp
│ │ │ ├── overlappingClusters01.cpp
│ │ │ ├── overlappingClusters02.cpp
│ │ │ ├── overlappingClusters04.cpp
│ │ │ ├── page_bounds.cpp
│ │ │ ├── planar.cpp
│ │ │ ├── random_graph.cpp
│ │ │ ├── rectangularClusters01.cpp
│ │ │ ├── rectclustershapecontainment.cpp
│ │ │ ├── resize.cpp
│ │ │ ├── runtest.sh
│ │ │ ├── scale_free.cpp
│ │ │ ├── shortest_paths.cpp
│ │ │ ├── small_graph.cpp
│ │ │ ├── sparse_matrix.cpp
│ │ │ ├── test_cg.cpp
│ │ │ ├── topology.cpp
│ │ │ ├── trees.cpp
│ │ │ ├── unconstrained.cpp
│ │ │ ├── unsatisfiable.cpp
│ │ │ ├── view_cd_output.sh
│ │ │ └── view_mas_output.sh
│ │ └── unused.h
│ ├── libdialect/
│ │ ├── Makefile.am
│ │ ├── aca.cpp
│ │ ├── aca.h
│ │ ├── bendseqlookup.cpp
│ │ ├── chains.cpp
│ │ ├── chains.h
│ │ ├── commontypes.h
│ │ ├── constraints.cpp
│ │ ├── constraints.h
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── edges.cpp
│ │ ├── expansion.cpp
│ │ ├── expansion.h
│ │ ├── faces.cpp
│ │ ├── faces.h
│ │ ├── gen_bend_seq_lookup.py
│ │ ├── gen_qa_lookup.py
│ │ ├── graphs.cpp
│ │ ├── graphs.h
│ │ ├── hola.cpp
│ │ ├── hola.h
│ │ ├── io.cpp
│ │ ├── io.h
│ │ ├── libdialect.h
│ │ ├── libdialect.pc.in
│ │ ├── logging.cpp
│ │ ├── logging.h
│ │ ├── nearalign.cpp
│ │ ├── nearalign.h
│ │ ├── nexes.cpp
│ │ ├── nodeconfig.cpp
│ │ ├── nodeconfig.h
│ │ ├── nodes.cpp
│ │ ├── opts.h
│ │ ├── ortho.cpp
│ │ ├── ortho.h
│ │ ├── peeling.cpp
│ │ ├── peeling.h
│ │ ├── planarise.cpp
│ │ ├── planarise.h
│ │ ├── qalookup.cpp
│ │ ├── quadaction.cpp
│ │ ├── quadaction.h
│ │ ├── routing.cpp
│ │ ├── routing.h
│ │ ├── sides.cpp
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── aca.cpp
│ │ │ ├── assignments.cpp
│ │ │ ├── bbox.cpp
│ │ │ ├── bendcosts.cpp
│ │ │ ├── chainconfig01.cpp
│ │ │ ├── chainconfig02.cpp
│ │ │ ├── chainconfig03.cpp
│ │ │ ├── chainsandcycles.cpp
│ │ │ ├── cmplayout01.cpp
│ │ │ ├── collateralexpand01.cpp
│ │ │ ├── collateralexpand02.cpp
│ │ │ ├── conncomps.cpp
│ │ │ ├── containedsegment01.cpp
│ │ │ ├── destress.cpp
│ │ │ ├── destress02.cpp
│ │ │ ├── destress_aca.cpp
│ │ │ ├── expand01.cpp
│ │ │ ├── expand02.cpp
│ │ │ ├── expand03.cpp
│ │ │ ├── expand04.cpp
│ │ │ ├── expand05.cpp
│ │ │ ├── expand06.cpp
│ │ │ ├── expand07.cpp
│ │ │ ├── expand08.cpp
│ │ │ ├── expand09.cpp
│ │ │ ├── extrabdrygap.cpp
│ │ │ ├── faceset01.cpp
│ │ │ ├── faceset02.cpp
│ │ │ ├── graphs/
│ │ │ │ ├── metro/
│ │ │ │ │ ├── london.gml
│ │ │ │ │ ├── london.tglf
│ │ │ │ │ ├── melb.gml
│ │ │ │ │ ├── melb.tglf
│ │ │ │ │ ├── sydney.gml
│ │ │ │ │ ├── sydney.tglf
│ │ │ │ │ ├── wien-kurz.gml
│ │ │ │ │ └── wien-kurz.tglf
│ │ │ │ ├── random/
│ │ │ │ │ ├── makeCorpus.py
│ │ │ │ │ ├── randomGraph
│ │ │ │ │ ├── v100e100.gml
│ │ │ │ │ ├── v100e100.tglf
│ │ │ │ │ ├── v100e110.gml
│ │ │ │ │ ├── v100e110.tglf
│ │ │ │ │ ├── v100e120.gml
│ │ │ │ │ ├── v100e120.tglf
│ │ │ │ │ ├── v100e130.gml
│ │ │ │ │ ├── v100e130.tglf
│ │ │ │ │ ├── v100e140.gml
│ │ │ │ │ ├── v100e140.tglf
│ │ │ │ │ ├── v100e150.gml
│ │ │ │ │ ├── v100e150.tglf
│ │ │ │ │ ├── v10e10.gml
│ │ │ │ │ ├── v10e10.tglf
│ │ │ │ │ ├── v10e11.gml
│ │ │ │ │ ├── v10e11.tglf
│ │ │ │ │ ├── v10e12.gml
│ │ │ │ │ ├── v10e12.tglf
│ │ │ │ │ ├── v10e13.gml
│ │ │ │ │ ├── v10e13.tglf
│ │ │ │ │ ├── v10e14.gml
│ │ │ │ │ ├── v10e14.tglf
│ │ │ │ │ ├── v10e15.gml
│ │ │ │ │ ├── v10e15.tglf
│ │ │ │ │ ├── v110e110.gml
│ │ │ │ │ ├── v110e110.tglf
│ │ │ │ │ ├── v110e121.gml
│ │ │ │ │ ├── v110e121.tglf
│ │ │ │ │ ├── v110e132.gml
│ │ │ │ │ ├── v110e132.tglf
│ │ │ │ │ ├── v110e143.gml
│ │ │ │ │ ├── v110e143.tglf
│ │ │ │ │ ├── v110e154.gml
│ │ │ │ │ ├── v110e154.tglf
│ │ │ │ │ ├── v110e165.gml
│ │ │ │ │ ├── v110e165.tglf
│ │ │ │ │ ├── v120e120.gml
│ │ │ │ │ ├── v120e120.tglf
│ │ │ │ │ ├── v120e132.gml
│ │ │ │ │ ├── v120e132.tglf
│ │ │ │ │ ├── v120e144.gml
│ │ │ │ │ ├── v120e144.tglf
│ │ │ │ │ ├── v120e156.gml
│ │ │ │ │ ├── v120e156.tglf
│ │ │ │ │ ├── v120e168.gml
│ │ │ │ │ ├── v120e168.tglf
│ │ │ │ │ ├── v120e180.gml
│ │ │ │ │ ├── v120e180.tglf
│ │ │ │ │ ├── v130e130.gml
│ │ │ │ │ ├── v130e130.tglf
│ │ │ │ │ ├── v130e143.gml
│ │ │ │ │ ├── v130e143.tglf
│ │ │ │ │ ├── v130e156.gml
│ │ │ │ │ ├── v130e156.tglf
│ │ │ │ │ ├── v130e169.gml
│ │ │ │ │ ├── v130e169.tglf
│ │ │ │ │ ├── v130e182.gml
│ │ │ │ │ ├── v130e182.tglf
│ │ │ │ │ ├── v130e195.gml
│ │ │ │ │ ├── v130e195.tglf
│ │ │ │ │ ├── v140e140.gml
│ │ │ │ │ ├── v140e140.tglf
│ │ │ │ │ ├── v140e154.gml
│ │ │ │ │ ├── v140e154.tglf
│ │ │ │ │ ├── v140e168.gml
│ │ │ │ │ ├── v140e168.tglf
│ │ │ │ │ ├── v140e182.gml
│ │ │ │ │ ├── v140e182.tglf
│ │ │ │ │ ├── v140e196.gml
│ │ │ │ │ ├── v140e196.tglf
│ │ │ │ │ ├── v140e210.gml
│ │ │ │ │ ├── v140e210.tglf
│ │ │ │ │ ├── v150e150.gml
│ │ │ │ │ ├── v150e150.tglf
│ │ │ │ │ ├── v150e165.gml
│ │ │ │ │ ├── v150e165.tglf
│ │ │ │ │ ├── v150e180.gml
│ │ │ │ │ ├── v150e180.tglf
│ │ │ │ │ ├── v150e195.gml
│ │ │ │ │ ├── v150e195.tglf
│ │ │ │ │ ├── v150e210.gml
│ │ │ │ │ ├── v150e210.tglf
│ │ │ │ │ ├── v150e225.gml
│ │ │ │ │ ├── v150e225.tglf
│ │ │ │ │ ├── v160e160.gml
│ │ │ │ │ ├── v160e160.tglf
│ │ │ │ │ ├── v160e176.gml
│ │ │ │ │ ├── v160e176.tglf
│ │ │ │ │ ├── v160e192.gml
│ │ │ │ │ ├── v160e192.tglf
│ │ │ │ │ ├── v160e208.gml
│ │ │ │ │ ├── v160e208.tglf
│ │ │ │ │ ├── v160e224.gml
│ │ │ │ │ ├── v160e224.tglf
│ │ │ │ │ ├── v160e240.gml
│ │ │ │ │ ├── v160e240.tglf
│ │ │ │ │ ├── v170e170.gml
│ │ │ │ │ ├── v170e170.tglf
│ │ │ │ │ ├── v170e187.gml
│ │ │ │ │ ├── v170e187.tglf
│ │ │ │ │ ├── v170e204.gml
│ │ │ │ │ ├── v170e204.tglf
│ │ │ │ │ ├── v170e221.gml
│ │ │ │ │ ├── v170e221.tglf
│ │ │ │ │ ├── v170e238.gml
│ │ │ │ │ ├── v170e238.tglf
│ │ │ │ │ ├── v170e255.gml
│ │ │ │ │ ├── v170e255.tglf
│ │ │ │ │ ├── v180e180.gml
│ │ │ │ │ ├── v180e180.tglf
│ │ │ │ │ ├── v180e198.gml
│ │ │ │ │ ├── v180e198.tglf
│ │ │ │ │ ├── v180e216.gml
│ │ │ │ │ ├── v180e216.tglf
│ │ │ │ │ ├── v180e234.gml
│ │ │ │ │ ├── v180e234.tglf
│ │ │ │ │ ├── v180e252.gml
│ │ │ │ │ ├── v180e252.tglf
│ │ │ │ │ ├── v180e270.gml
│ │ │ │ │ ├── v180e270.tglf
│ │ │ │ │ ├── v190e190.gml
│ │ │ │ │ ├── v190e190.tglf
│ │ │ │ │ ├── v190e209.gml
│ │ │ │ │ ├── v190e209.tglf
│ │ │ │ │ ├── v190e228.gml
│ │ │ │ │ ├── v190e228.tglf
│ │ │ │ │ ├── v190e247.gml
│ │ │ │ │ ├── v190e247.tglf
│ │ │ │ │ ├── v190e266.gml
│ │ │ │ │ ├── v190e266.tglf
│ │ │ │ │ ├── v190e285.gml
│ │ │ │ │ ├── v190e285.tglf
│ │ │ │ │ ├── v200e200.gml
│ │ │ │ │ ├── v200e200.tglf
│ │ │ │ │ ├── v200e220.gml
│ │ │ │ │ ├── v200e220.tglf
│ │ │ │ │ ├── v200e240.gml
│ │ │ │ │ ├── v200e240.tglf
│ │ │ │ │ ├── v200e260.gml
│ │ │ │ │ ├── v200e260.tglf
│ │ │ │ │ ├── v200e280.gml
│ │ │ │ │ ├── v200e280.tglf
│ │ │ │ │ ├── v200e300.gml
│ │ │ │ │ ├── v200e300.tglf
│ │ │ │ │ ├── v20e20.gml
│ │ │ │ │ ├── v20e20.tglf
│ │ │ │ │ ├── v20e22.gml
│ │ │ │ │ ├── v20e22.tglf
│ │ │ │ │ ├── v20e24.gml
│ │ │ │ │ ├── v20e24.tglf
│ │ │ │ │ ├── v20e26.gml
│ │ │ │ │ ├── v20e26.tglf
│ │ │ │ │ ├── v20e28.gml
│ │ │ │ │ ├── v20e28.tglf
│ │ │ │ │ ├── v20e30.gml
│ │ │ │ │ ├── v20e30.tglf
│ │ │ │ │ ├── v30e30.gml
│ │ │ │ │ ├── v30e30.tglf
│ │ │ │ │ ├── v30e33.gml
│ │ │ │ │ ├── v30e33.tglf
│ │ │ │ │ ├── v30e36.gml
│ │ │ │ │ ├── v30e36.tglf
│ │ │ │ │ ├── v30e39.gml
│ │ │ │ │ ├── v30e39.tglf
│ │ │ │ │ ├── v30e42.gml
│ │ │ │ │ ├── v30e42.tglf
│ │ │ │ │ ├── v30e45.gml
│ │ │ │ │ ├── v30e45.tglf
│ │ │ │ │ ├── v40e40.gml
│ │ │ │ │ ├── v40e40.tglf
│ │ │ │ │ ├── v40e42.gml
│ │ │ │ │ ├── v40e42.tglf
│ │ │ │ │ ├── v40e44.gml
│ │ │ │ │ ├── v40e44.tglf
│ │ │ │ │ ├── v40e48.gml
│ │ │ │ │ ├── v40e48.tglf
│ │ │ │ │ ├── v40e52.gml
│ │ │ │ │ ├── v40e52.tglf
│ │ │ │ │ ├── v40e56.gml
│ │ │ │ │ ├── v40e56.tglf
│ │ │ │ │ ├── v40e60.gml
│ │ │ │ │ ├── v40e60.tglf
│ │ │ │ │ ├── v50e50.gml
│ │ │ │ │ ├── v50e50.tglf
│ │ │ │ │ ├── v50e55.gml
│ │ │ │ │ ├── v50e55.tglf
│ │ │ │ │ ├── v50e60.gml
│ │ │ │ │ ├── v50e60.tglf
│ │ │ │ │ ├── v50e65.gml
│ │ │ │ │ ├── v50e65.tglf
│ │ │ │ │ ├── v50e70.gml
│ │ │ │ │ ├── v50e70.tglf
│ │ │ │ │ ├── v50e75.gml
│ │ │ │ │ ├── v50e75.tglf
│ │ │ │ │ ├── v60e60.gml
│ │ │ │ │ ├── v60e60.tglf
│ │ │ │ │ ├── v60e66.gml
│ │ │ │ │ ├── v60e66.tglf
│ │ │ │ │ ├── v60e72.gml
│ │ │ │ │ ├── v60e72.tglf
│ │ │ │ │ ├── v60e78.gml
│ │ │ │ │ ├── v60e78.tglf
│ │ │ │ │ ├── v60e84.gml
│ │ │ │ │ ├── v60e84.tglf
│ │ │ │ │ ├── v60e90.gml
│ │ │ │ │ ├── v60e90.tglf
│ │ │ │ │ ├── v70e105.gml
│ │ │ │ │ ├── v70e105.tglf
│ │ │ │ │ ├── v70e70.gml
│ │ │ │ │ ├── v70e70.tglf
│ │ │ │ │ ├── v70e77.gml
│ │ │ │ │ ├── v70e77.tglf
│ │ │ │ │ ├── v70e84.gml
│ │ │ │ │ ├── v70e84.tglf
│ │ │ │ │ ├── v70e91.gml
│ │ │ │ │ ├── v70e91.tglf
│ │ │ │ │ ├── v70e98.gml
│ │ │ │ │ ├── v70e98.tglf
│ │ │ │ │ ├── v80e104.gml
│ │ │ │ │ ├── v80e104.tglf
│ │ │ │ │ ├── v80e112.gml
│ │ │ │ │ ├── v80e112.tglf
│ │ │ │ │ ├── v80e120.gml
│ │ │ │ │ ├── v80e120.tglf
│ │ │ │ │ ├── v80e80.gml
│ │ │ │ │ ├── v80e80.tglf
│ │ │ │ │ ├── v80e88.gml
│ │ │ │ │ ├── v80e88.tglf
│ │ │ │ │ ├── v80e96.gml
│ │ │ │ │ ├── v80e96.tglf
│ │ │ │ │ ├── v90e108.gml
│ │ │ │ │ ├── v90e108.tglf
│ │ │ │ │ ├── v90e117.gml
│ │ │ │ │ ├── v90e117.tglf
│ │ │ │ │ ├── v90e126.gml
│ │ │ │ │ ├── v90e126.tglf
│ │ │ │ │ ├── v90e135.gml
│ │ │ │ │ ├── v90e135.tglf
│ │ │ │ │ ├── v90e90.gml
│ │ │ │ │ ├── v90e90.tglf
│ │ │ │ │ ├── v90e99.gml
│ │ │ │ │ └── v90e99.tglf
│ │ │ │ ├── sbgn/
│ │ │ │ │ ├── calvin.tglf
│ │ │ │ │ ├── glyco.tglf
│ │ │ │ │ ├── keratan.tglf
│ │ │ │ │ └── urea1.tglf
│ │ │ │ ├── special/
│ │ │ │ │ ├── 3cross4cross.gml
│ │ │ │ │ ├── 3cross4cross.tglf
│ │ │ │ │ ├── 3cross4cross_wTrees.gml
│ │ │ │ │ ├── 3cross4cross_wTrees.tglf
│ │ │ │ │ ├── Arpanet19728_input.tglf
│ │ │ │ │ ├── Belnet2004.tglf
│ │ │ │ │ ├── Cernet.tglf
│ │ │ │ │ ├── Claranet.tglf
│ │ │ │ │ ├── Garr201001.tglf
│ │ │ │ │ ├── GtsSlovakia_input.tglf
│ │ │ │ │ ├── Janetlense.tglf
│ │ │ │ │ ├── SepMatrixIter.tglf
│ │ │ │ │ ├── X_4.gml
│ │ │ │ │ ├── X_4.tglf
│ │ │ │ │ ├── Y_4.gml
│ │ │ │ │ ├── Y_4.tglf
│ │ │ │ │ ├── aspectratio01.gml
│ │ │ │ │ ├── bend_costs.tglf
│ │ │ │ │ ├── bundlecross.gml
│ │ │ │ │ ├── bundlecross.tglf
│ │ │ │ │ ├── bundlerouting.gml
│ │ │ │ │ ├── bundlerouting.tglf
│ │ │ │ │ ├── bundlerouting1.gml
│ │ │ │ │ ├── bundlerouting1.tglf
│ │ │ │ │ ├── bundlerouting2.gml
│ │ │ │ │ ├── bundlerouting2.tglf
│ │ │ │ │ ├── chainconfig01.gml
│ │ │ │ │ ├── chainconfig01.tglf
│ │ │ │ │ ├── chains_and_cycles.gml
│ │ │ │ │ ├── chains_and_cycles.tglf
│ │ │ │ │ ├── cmplayout01.tglf
│ │ │ │ │ ├── cmplayout02.tglf
│ │ │ │ │ ├── cmplayout03.tglf
│ │ │ │ │ ├── cmplayout04.tglf
│ │ │ │ │ ├── coincidentnodes.tglf
│ │ │ │ │ ├── column8.gml
│ │ │ │ │ ├── column8.tglf
│ │ │ │ │ ├── components.gml
│ │ │ │ │ ├── components.tglf
│ │ │ │ │ ├── core_with_trees.gml
│ │ │ │ │ ├── core_with_trees.tglf
│ │ │ │ │ ├── expand02.gml
│ │ │ │ │ ├── expand02.tglf
│ │ │ │ │ ├── expand03.gml
│ │ │ │ │ ├── expand03.tglf
│ │ │ │ │ ├── expand04.gml
│ │ │ │ │ ├── expand04.tglf
│ │ │ │ │ ├── expand04b.gml
│ │ │ │ │ ├── expand04b.tglf
│ │ │ │ │ ├── expand05.gml
│ │ │ │ │ ├── expand05.tglf
│ │ │ │ │ ├── expand07.tglf
│ │ │ │ │ ├── expand08.gml
│ │ │ │ │ ├── expand08.tglf
│ │ │ │ │ ├── expand09.gml
│ │ │ │ │ ├── expand09.tglf
│ │ │ │ │ ├── holasbgn01_layout.tglf
│ │ │ │ │ ├── lone_node.gml
│ │ │ │ │ ├── lone_node.tglf
│ │ │ │ │ ├── nearalign01.gml
│ │ │ │ │ ├── nearalign01.tglf
│ │ │ │ │ ├── octogon.gml
│ │ │ │ │ ├── octogon.tglf
│ │ │ │ │ ├── readconstraints.tglf
│ │ │ │ │ ├── rotate01.gml
│ │ │ │ │ ├── rotate01.tglf
│ │ │ │ │ ├── rotate02.gml
│ │ │ │ │ ├── rotate02.tglf
│ │ │ │ │ ├── routing01.gml
│ │ │ │ │ ├── routing01.tglf
│ │ │ │ │ ├── samesiderouting.gml
│ │ │ │ │ ├── samesiderouting.tglf
│ │ │ │ │ ├── straight_6.gml
│ │ │ │ │ ├── straight_6.tglf
│ │ │ │ │ ├── treeplacement2.gml
│ │ │ │ │ ├── treeplacement2.tglf
│ │ │ │ │ ├── treeplacement3.gml
│ │ │ │ │ ├── treeplacement3.tglf
│ │ │ │ │ ├── treeplacement4.gml
│ │ │ │ │ ├── treeplacement4.tglf
│ │ │ │ │ ├── treeplacement5.gml
│ │ │ │ │ └── treeplacement5.tglf
│ │ │ │ └── trees/
│ │ │ │ ├── tree01.gml
│ │ │ │ ├── tree01.tglf
│ │ │ │ ├── tree01m.gml
│ │ │ │ ├── tree01m.tglf
│ │ │ │ ├── tree02.gml
│ │ │ │ ├── tree02.tglf
│ │ │ │ ├── tree03.gml
│ │ │ │ └── tree03.tglf
│ │ │ ├── hola10.cpp
│ │ │ ├── hola11.cpp
│ │ │ ├── hola12.cpp
│ │ │ ├── holaRand.cpp
│ │ │ ├── hola_arpa.cpp
│ │ │ ├── hola_belnet.cpp
│ │ │ ├── hola_cernet.cpp
│ │ │ ├── hola_claranet.cpp
│ │ │ ├── hola_garr.cpp
│ │ │ ├── hola_janetlense.cpp
│ │ │ ├── hola_slovakia.cpp
│ │ │ ├── hola_tree.cpp
│ │ │ ├── holalonenode.cpp
│ │ │ ├── holametro01.cpp
│ │ │ ├── holasbgn01.cpp
│ │ │ ├── holasbgn02.cpp
│ │ │ ├── holasbgn03.cpp
│ │ │ ├── holasbgn04.cpp
│ │ │ ├── inserttrees01.cpp
│ │ │ ├── leaflessroute01.cpp
│ │ │ ├── leaflessroute02.cpp
│ │ │ ├── lookupqas.cpp
│ │ │ ├── nbroctal.cpp
│ │ │ ├── nearalign01.cpp
│ │ │ ├── nearalign02.cpp
│ │ │ ├── nearby.cpp
│ │ │ ├── negativesepco.cpp
│ │ │ ├── negativezero.cpp
│ │ │ ├── nodeconfig01.cpp
│ │ │ ├── nudgeopt.cpp
│ │ │ ├── output/
│ │ │ │ ├── README.txt
│ │ │ │ └── svg/
│ │ │ │ └── README.txt
│ │ │ ├── partition01.cpp
│ │ │ ├── peel.cpp
│ │ │ ├── planarise01.cpp
│ │ │ ├── planarise02.cpp
│ │ │ ├── projseq01.cpp
│ │ │ ├── readconstraints.cpp
│ │ │ ├── rotate01.cpp
│ │ │ ├── rotate02.cpp
│ │ │ ├── rotate03.cpp
│ │ │ ├── rotate04.cpp
│ │ │ ├── routing01.cpp
│ │ │ ├── sep_matrix_iter.cpp
│ │ │ ├── solidify.cpp
│ │ │ ├── swig_tests/
│ │ │ │ ├── aca.py
│ │ │ │ ├── chainconfig.py
│ │ │ │ ├── destress_aca.py
│ │ │ │ ├── expand.py
│ │ │ │ ├── faceset.py
│ │ │ │ ├── hola.py
│ │ │ │ ├── leafless.py
│ │ │ │ ├── nearalign.py
│ │ │ │ ├── orthohub.py
│ │ │ │ ├── output/
│ │ │ │ │ ├── README.txt
│ │ │ │ │ └── svg/
│ │ │ │ │ └── README.txt
│ │ │ │ ├── planarise.py
│ │ │ │ ├── run_tests
│ │ │ │ └── treeplacement.py
│ │ │ ├── symmtree.cpp
│ │ │ ├── tglf01.cpp
│ │ │ ├── treeboxes01.cpp
│ │ │ ├── treeplacement01.cpp
│ │ │ ├── treeplacement02.cpp
│ │ │ ├── treeplacement03.cpp
│ │ │ ├── trees.cpp
│ │ │ ├── trees2.cpp
│ │ │ └── vpsc01.cpp
│ │ ├── treeplacement.cpp
│ │ ├── treeplacement.h
│ │ ├── trees.cpp
│ │ ├── trees.h
│ │ └── util.h
│ ├── libproject/
│ │ ├── Makefile.am
│ │ ├── project.cpp
│ │ ├── project.h
│ │ ├── project_log.h
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── quadprogpp/
│ │ │ │ ├── LICENSE.txt
│ │ │ │ ├── QuadProg++.cc
│ │ │ │ ├── QuadProg++.h
│ │ │ │ └── main.cc
│ │ │ ├── random.cpp
│ │ │ ├── simple.cpp
│ │ │ ├── static.cpp
│ │ │ ├── testutil.cpp
│ │ │ ├── testutil.h
│ │ │ ├── treeqp.cpp
│ │ │ ├── treeqp.h
│ │ │ └── treeqptest.cpp
│ │ ├── util.cpp
│ │ ├── util.h
│ │ └── variable.h
│ ├── libtopology/
│ │ ├── Makefile.am
│ │ ├── cola_topology_addon.cpp
│ │ ├── cola_topology_addon.h
│ │ ├── compute_forces.cpp
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── libtopology.pc.in
│ │ ├── orthogonal_topology.cpp
│ │ ├── orthogonal_topology.h
│ │ ├── resize.cpp
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── beautify.cpp
│ │ │ ├── bend2.m
│ │ │ ├── kamada.cpp
│ │ │ ├── nodedragging.cpp
│ │ │ ├── nooverlap.cpp
│ │ │ ├── orthogonalOpt.cpp
│ │ │ ├── output/
│ │ │ │ └── README.txt
│ │ │ ├── simple_bend.cpp
│ │ │ ├── simple_bend.m
│ │ │ ├── split.cpp
│ │ │ ├── split.m
│ │ │ ├── test.h
│ │ │ └── triangle.cpp
│ │ ├── topology_constraints.cpp
│ │ ├── topology_constraints.h
│ │ ├── topology_constraints_constructor.cpp
│ │ ├── topology_graph.cpp
│ │ ├── topology_graph.h
│ │ ├── topology_log.h
│ │ ├── topologyconstraint.nb
│ │ └── util.h
│ ├── libvpsc/
│ │ ├── COPYING
│ │ ├── Makefile.am
│ │ ├── assertions.h
│ │ ├── block.cpp
│ │ ├── block.h
│ │ ├── blocks.cpp
│ │ ├── blocks.h
│ │ ├── cbuffer.cpp
│ │ ├── cbuffer.h
│ │ ├── constraint.cpp
│ │ ├── constraint.h
│ │ ├── doc/
│ │ │ └── description.doc
│ │ ├── exceptions.h
│ │ ├── libvpsc.pc.in
│ │ ├── linesegment.h
│ │ ├── pairing_heap.h
│ │ ├── rectangle.cpp
│ │ ├── rectangle.h
│ │ ├── solve_VPSC.cpp
│ │ ├── solve_VPSC.h
│ │ ├── tests/
│ │ │ ├── Makefile.am
│ │ │ ├── block.cpp
│ │ │ ├── cycle.cpp
│ │ │ ├── rectangleoverlap.cpp
│ │ │ └── satisfy_inc.cpp
│ │ ├── variable.cpp
│ │ └── variable.h
│ ├── swig-python-setup.py
│ └── swig-python3-setup.py
└── experimental/
├── RectangleOverlapSolver/
│ ├── .cRectangleOverlap.log.swp
│ ├── .classpath
│ ├── .project
│ ├── .settings/
│ │ └── org.eclipse.jdt.core.prefs
│ ├── logging.properties
│ ├── manifest.mf
│ ├── placement/
│ │ ├── ActiveSetPlacement.java
│ │ ├── Block.java
│ │ ├── Blocks.java
│ │ ├── Constraint.java
│ │ ├── ConstraintGenerator.java
│ │ ├── Constraints.java
│ │ ├── DebugFrame.java
│ │ ├── DebugPanel.java
│ │ ├── DrawingDimensions.java
│ │ ├── FSA.java
│ │ ├── GUITest.java
│ │ ├── Graph.java
│ │ ├── GraphParser.java
│ │ ├── GraphParserTest.java
│ │ ├── MaxPairingHeap.java
│ │ ├── MaxPriorityQueue.java
│ │ ├── MinPairingHeap.java
│ │ ├── MosekPlacement.java
│ │ ├── NativeFSA.java
│ │ ├── PNode.java
│ │ ├── PerformanceTest.java
│ │ ├── Placement.java
│ │ ├── PlacementTest.java
│ │ ├── QPRectanglePlacement.java
│ │ ├── RectangleDrawerFrame.java
│ │ ├── RectangleDrawerPanel.java
│ │ ├── RectanglePlacement.java
│ │ ├── RectangleView.java
│ │ ├── ScanListPriorityQueue.java
│ │ ├── SimpleTest.java
│ │ ├── SlowPriorityQueue.java
│ │ ├── SolveVPSC.java
│ │ ├── Variable.java
│ │ ├── Variables.java
│ │ └── prolog/
│ │ ├── Part 1.2
│ │ ├── Part 1.4
│ │ └── blocks.pl
│ ├── placement_SolveVPSC.h
│ ├── problem.blocks
│ ├── prolog/
│ │ ├── Part 1.2
│ │ ├── Part 1.4
│ │ └── blocks.pl
│ └── testdata/
│ ├── Test1.dot
│ ├── graph1.dot
│ ├── graph2.dot
│ ├── graph3.dot
│ └── graph4.dot
├── draw-bn/
│ ├── Asia.dne
│ ├── Makefile
│ ├── TODO
│ ├── asia.cpp
│ ├── draw-bn.cpp
│ ├── graphlayouttest.cpp
│ └── graphlayouttest.h
├── neatogen/
│ ├── .constrained_majorization_diredges.c.swp
│ ├── .quad_prog_vpsc.h.swo
│ ├── Makefile
│ ├── Makefile.am
│ ├── Makefile.in
│ ├── Makefile.old
│ ├── adjust.c
│ ├── adjust.h
│ ├── bfs.c
│ ├── bfs.h
│ ├── circuit.c
│ ├── closest.c
│ ├── closest.h
│ ├── compute_hierarchy.c
│ ├── conjgrad.c
│ ├── conjgrad.h
│ ├── constrained_majorization.c
│ ├── constrained_majorization_vsep.c
│ ├── constraint.c
│ ├── defs.h
│ ├── digcola.h
│ ├── dijkstra.c
│ ├── dijkstra.h
│ ├── edges.c
│ ├── edges.h
│ ├── embed_graph.c
│ ├── embed_graph.h
│ ├── find_ints.c
│ ├── geometry.c
│ ├── geometry.h
│ ├── heap.c
│ ├── heap.h
│ ├── hedges.c
│ ├── hedges.h
│ ├── info.c
│ ├── info.h
│ ├── intersect.c
│ ├── kkutils.c
│ ├── kkutils.h
│ ├── legal.c
│ ├── lu.c
│ ├── matinv.c
│ ├── matrix_ops.c
│ ├── matrix_ops.h
│ ├── mem.h
│ ├── memory.c
│ ├── mosek_quad_solve.c
│ ├── mosek_quad_solve.h
│ ├── neato.h
│ ├── neatoinit.c
│ ├── neatoprocs.h
│ ├── neatosplines.c
│ ├── opt_arrangement.c
│ ├── pca.c
│ ├── pca.h
│ ├── poly.c
│ ├── poly.h
│ ├── printvis.c
│ ├── quad_prog_solve.c
│ ├── quad_prog_solver.h
│ ├── quad_prog_vpsc.c
│ ├── quad_prog_vpsc.h
│ ├── simple.h
│ ├── site.c
│ ├── site.h
│ ├── smart_ini_x.c
│ ├── solve.c
│ ├── stress.c
│ ├── stress.h
│ ├── stuff.c
│ ├── voronoi.c
│ └── voronoi.h
└── solve_VPSC/
├── .Makefile.am.swp
├── .test_rectangleoverlap.cpp.swp
├── AUTHORS
├── ChangeLog
├── Makefile.am
├── Makefile.in
├── NEWS
├── README
├── aclocal.m4
├── configure
├── configure.in
├── libvpsc/
│ ├── COPYING
│ ├── Makefile.am
│ ├── block.cpp
│ ├── block.h
│ ├── blocks.cpp
│ ├── blocks.h
│ ├── constraint.cpp
│ ├── constraint.h
│ ├── csolve_VPSC.cpp
│ ├── csolve_VPSC.h
│ ├── generate-constraints.cpp
│ ├── generate-constraints.h
│ ├── pairingheap/
│ │ ├── PairingHeap.cpp
│ │ ├── PairingHeap.h
│ │ └── dsexceptions.h
│ ├── placement_SolveVPSC.cpp
│ ├── placement_SolveVPSC.h
│ ├── remove_rectangle_overlap-test.cpp
│ ├── remove_rectangle_overlap.cpp
│ ├── remove_rectangle_overlap.h
│ ├── removeoverlap.cpp
│ ├── removeoverlap.h
│ ├── solve_VPSC.cpp
│ ├── solve_VPSC.h
│ ├── variable.cpp
│ └── variable.h
└── tests/
├── Makefile.am
├── block.cpp
├── csolve_VPSC.c
├── rectangleoverlap.cpp
└── satisfy_inc.cpp
SYMBOL INDEX (2377 symbols across 499 files)
FILE: cola/libavoid/actioninfo.cpp
type Avoid (line 33) | namespace Avoid {
function Obstacle (line 94) | Obstacle *ActionInfo::obstacle(void) const
function ShapeRef (line 103) | ShapeRef *ActionInfo::shape(void) const
function ConnRef (line 109) | ConnRef *ActionInfo::conn(void) const
function JunctionRef (line 115) | JunctionRef *ActionInfo::junction(void) const
FILE: cola/libavoid/actioninfo.h
function namespace (line 34) | namespace Avoid {
FILE: cola/libavoid/connectionpin.cpp
type Avoid (line 36) | namespace Avoid {
function Point (line 245) | const Point ShapeConnectionPin::position(const Polygon& newPoly) const
function ConnDirFlags (line 331) | ConnDirFlags ShapeConnectionPin::directions(void) const
function ConnectionPinIds (line 388) | ConnectionPinIds ShapeConnectionPin::ids(void) const
FILE: cola/libavoid/connectionpin.h
function namespace (line 41) | namespace Avoid {
FILE: cola/libavoid/connector.cpp
type Avoid (line 45) | namespace Avoid {
function ConnType (line 170) | ConnType ConnRef::routingType(void) const
function PolyLine (line 590) | const PolyLine& ConnRef::route(void) const
function PolyLine (line 596) | PolyLine& ConnRef::routeRef(void)
function Polygon (line 647) | Polygon& ConnRef::displayRoute(void)
function Point (line 683) | Point midpoint(Point a, Point b)
function VertInf (line 729) | VertInf *ConnRef::src(void) const
function VertInf (line 735) | VertInf *ConnRef::dst(void) const
function VertInf (line 741) | VertInf *ConnRef::start(void)
function Router (line 797) | Router *ConnRef::router(void) const
function validateBendPoint (line 807) | bool validateBendPoint(VertInf *aInf, VertInf *bInf, VertInf *cInf)
function PointRepVector (line 1340) | PointRepVector PtOrder::sortedPoints(const size_t dim)
function midVertexNumber (line 1488) | static int midVertexNumber(const Point& p0, const Point& p1, const Poi...
function splitBranchingSegments (line 1572) | void splitBranchingSegments(Avoid::Polygon& poly, bool polyIsConn,
function segDir (line 1653) | static int segDir(const Point& p1, const Point& p2)
function posInlineWithConnEndSegs (line 1674) | static bool posInlineWithConnEndSegs(const double pos, const size_t dim,
function pathLength (line 1721) | static double pathLength(Avoid::Point **c_path, Avoid::Point **p_path,
FILE: cola/libavoid/connector.h
function namespace (line 42) | namespace Avoid {
FILE: cola/libavoid/connend.cpp
type Avoid (line 41) | namespace Avoid {
function ConnEndType (line 114) | ConnEndType ConnEnd::type(void) const
function Point (line 120) | const Point ConnEnd::position(void) const
function ConnDirFlags (line 137) | ConnDirFlags ConnEnd::directions(void) const
function ShapeRef (line 150) | ShapeRef *ConnEnd::shape(void) const
function JunctionRef (line 156) | JunctionRef *ConnEnd::junction(void) const
FILE: cola/libavoid/connend.h
function namespace (line 42) | namespace Avoid {
FILE: cola/libavoid/debug.h
function namespace (line 45) | namespace Avoid {
FILE: cola/libavoid/debughandler.h
function namespace (line 39) | namespace Avoid {
FILE: cola/libavoid/geometry.cpp
type Avoid (line 49) | namespace Avoid {
function inBetween (line 57) | bool inBetween(const Point& a, const Point& b, const Point& c)
function colinear (line 81) | bool colinear(const Point& a, const Point& b, const Point& c,
function pointOnLine (line 107) | bool pointOnLine(const Point& a, const Point& b, const Point& c,
function segmentIntersect (line 134) | bool segmentIntersect(const Point& a, const Point& b, const Point& c,
function segmentShapeIntersect (line 168) | bool segmentShapeIntersect(const Point& e1, const Point& e2, const Poi...
function inValidRegion (line 201) | bool inValidRegion(bool IgnoreRegions, const Point& a0, const Point& a1,
function cornerSide (line 263) | int cornerSide(const Point &c1, const Point &c2, const Point &c3,
function euclideanDist (line 294) | double euclideanDist(const Point& a, const Point& b)
function manhattanDist (line 304) | double manhattanDist(const Point& a, const Point& b)
function dist (line 312) | double dist(const Point& a, const Point& b)
function totalLength (line 321) | double totalLength(const Polygon& poly)
function angle (line 332) | double angle(const Point& a, const Point& b, const Point& c)
function inPoly (line 351) | bool inPoly(const Polygon& poly, const Point& q, bool countBorder)
function inPolyGen (line 382) | bool inPolyGen(const PolygonInterface& argpoly, const Point& q)
function segmentIntersectPoint (line 478) | int segmentIntersectPoint(const Point& a1, const Point& a2,
function rayIntersectPoint (line 578) | int rayIntersectPoint(const Point& a1, const Point& a2,
function rotationalAngle (line 613) | double rotationalAngle(const Point& p)
FILE: cola/libavoid/geometry.h
function namespace (line 42) | namespace Avoid {
function Point (line 99) | static inline Point projection(const Point& a, const Point& b, const Poi...
FILE: cola/libavoid/geomtypes.cpp
type Avoid (line 37) | namespace Avoid
function Point (line 111) | Point Point::operator+(const Point& rhs) const
function Point (line 117) | Point Point::operator-(const Point& rhs) const
function Point (line 191) | const Point& ReferencingPolygon::at(size_t index) const
function Box (line 210) | Box PolygonInterface::offsetBoundingBox(double offset) const
function Polygon (line 282) | Polygon PolygonInterface::boundingRectPolygon(void) const
function Point (line 289) | static Point unitNormalForEdge(const Point &pt1, const Point &pt2)
function Polygon (line 303) | Polygon PolygonInterface::offsetPolygon(double offset) const
function Point (line 390) | const Point& Polygon::at(size_t index) const
function shorten_line (line 415) | static void shorten_line(double& x1, double& y1, double& x2, double& y2,
function Polygon (line 532) | Polygon Polygon::simplify(void) const
function Polygon (line 640) | Polygon Polygon::curvedPolyline(const double curve_amount,
FILE: cola/libavoid/geomtypes.h
function namespace (line 39) | namespace Avoid
FILE: cola/libavoid/graph.cpp
type Avoid (line 40) | namespace Avoid {
function orthogTurnOrder (line 85) | static inline int orthogTurnOrder(const Point& a, const Point& b,
function VertInf (line 578) | VertInf *EdgeInf::otherVert(const VertInf *vert) const
function EdgeInf (line 586) | EdgeInf *EdgeInf::checkEdgeVisibility(VertInf *i, VertInf *j, bool kno...
function EdgeInf (line 622) | EdgeInf *EdgeInf::existingEdge(VertInf *i, VertInf *j)
function EdgeInf (line 771) | EdgeInf *EdgeList::begin(void)
function EdgeInf (line 777) | EdgeInf *EdgeList::end(void)
FILE: cola/libavoid/graph.h
function namespace (line 35) | namespace Avoid {
FILE: cola/libavoid/hyperedge.cpp
type Avoid (line 39) | namespace Avoid {
function HyperedgeNewAndDeletedObjectLists (line 74) | HyperedgeNewAndDeletedObjectLists HyperedgeRerouter::newAndDeletedObje...
function ConnRefSet (line 212) | ConnRefSet HyperedgeRerouter::calcHyperedgeConnectors(void)
FILE: cola/libavoid/hyperedge.h
function namespace (line 38) | namespace Avoid {
FILE: cola/libavoid/hyperedgeimprover.cpp
type Avoid (line 39) | namespace Avoid {
class HyperedgeShiftSegment (line 41) | class HyperedgeShiftSegment : public ShiftSegment
method HyperedgeShiftSegment (line 44) | HyperedgeShiftSegment(HyperedgeTreeNode *n1, HyperedgeTreeNode *n2,
method Point (line 70) | Point& lowPoint(void)
method Point (line 74) | Point& highPoint(void)
method Point (line 78) | const Point& lowPoint(void) const
method Point (line 82) | const Point& highPoint(void) const
method setBalanceCount (line 90) | void setBalanceCount(void)
method balanceCount (line 130) | int balanceCount(void) const
method adjustPosition (line 135) | void adjustPosition(void)
method overlapsWith (line 185) | bool overlapsWith(const ShiftSegment *rhs, const size_t dim) const
method immovable (line 204) | bool immovable(void) const
method settled (line 208) | bool settled(void) const
method mergesWith (line 212) | bool mergesWith(HyperedgeShiftSegment *other)
function CmpHyperedgeSegmentDirOrder (line 253) | static bool CmpHyperedgeSegmentDirOrder(const ShiftSegment *lhsSuper,
function HyperedgeNewAndDeletedObjectLists (line 1026) | HyperedgeNewAndDeletedObjectLists
function HyperedgeTreeNode (line 1046) | HyperedgeTreeNode *HyperedgeImprover::moveJunctionAlongCommonEdge(
FILE: cola/libavoid/hyperedgeimprover.h
function namespace (line 33) | namespace Avoid {
FILE: cola/libavoid/hyperedgetree.cpp
type Avoid (line 36) | namespace Avoid {
function travellingForwardOnConnector (line 171) | static bool travellingForwardOnConnector(ConnRef *conn, JunctionRef *j...
function HyperedgeTreeNode (line 410) | HyperedgeTreeNode *HyperedgeTreeEdge::followFrom(HyperedgeTreeNode *fr...
FILE: cola/libavoid/hyperedgetree.h
function namespace (line 38) | namespace Avoid {
FILE: cola/libavoid/junction.cpp
type Avoid (line 34) | namespace Avoid {
function Rectangle (line 63) | Rectangle JunctionRef::makeRectangle(Router *router, const Point& posi...
function Point (line 121) | Point JunctionRef::position(void) const
function Point (line 136) | Point JunctionRef::recommendedPosition(void) const
function ConnRef (line 190) | ConnRef *JunctionRef::removeJunctionAndMergeConnectors(void)
FILE: cola/libavoid/junction.h
function namespace (line 39) | namespace Avoid {
FILE: cola/libavoid/makepath.cpp
type Avoid (line 50) | namespace Avoid {
class ANode (line 52) | class ANode
method ANode (line 64) | ANode(VertInf *vinf, int time)
method ANode (line 73) | ANode()
class AStarPathPrivate (line 84) | class AStarPathPrivate
method AStarPathPrivate (line 87) | AStarPathPrivate()
method ANode (line 104) | ANode *newANode(const ANode& node, const bool addToPending = true)
class ANodeCmp (line 153) | class ANodeCmp
method ANodeCmp (line 156) | ANodeCmp()
function Dot (line 182) | static double Dot(const Point& l, const Point& r)
function CrossLength (line 187) | static double CrossLength(const Point& l, const Point& r)
function angleBetween (line 196) | static double angleBetween(const Point& p1, const Point& p2, const Poi...
function constructPolygonPath (line 214) | static void constructPolygonPath(Polygon& connRoute, VertInf *inf2,
function dimDirection (line 292) | static inline int dimDirection(double difference)
function cost (line 310) | static double cost(ConnRef *lineRef, const double dist, VertInf *inf2,
function printDirections (line 495) | static void printDirections(FILE *fp, unsigned int directions)
function orthogonalDirectionsCount (line 517) | static unsigned int orthogonalDirectionsCount(const unsigned int direc...
function orthogonalDirection (line 540) | static unsigned int orthogonalDirection(const Point &a, const Point &b)
function dirRight (line 566) | static unsigned int dirRight(unsigned int direction)
function dirLeft (line 591) | static unsigned int dirLeft(unsigned int direction)
function dirReverse (line 616) | static unsigned int dirReverse(unsigned int direction)
function bends (line 648) | int bends(const Point& curr, unsigned int currDir, const Point& dest,
function estimatedCostSpecific (line 782) | static double estimatedCostSpecific(ConnRef *lineRef, const Point *last,
class CmpVisEdgeRotation (line 879) | class CmpVisEdgeRotation
method CmpVisEdgeRotation (line 882) | CmpVisEdgeRotation(const VertInf* lastPt)
function pointAlignedWithOneOf (line 901) | static inline bool pointAlignedWithOneOf(const Point& point,
FILE: cola/libavoid/makepath.h
function namespace (line 30) | namespace Avoid {
FILE: cola/libavoid/mtst.cpp
type Avoid (line 49) | namespace Avoid {
type delete_vertex (line 66) | struct delete_vertex
function HyperedgeTreeNode (line 98) | HyperedgeTreeNode *MinimumTerminalSpanningTree::rootJunction(void) const
function HyperedgeTreeNode (line 135) | HyperedgeTreeNode *MinimumTerminalSpanningTree::addNode(VertInf *vertex,
function VertInf (line 252) | VertInf **MinimumTerminalSpanningTree::resetDistsForPath(VertInf *curr...
function VertInf (line 523) | VertInf *MinimumTerminalSpanningTree::orthogonalPartner(VertInf *vert,
function LayeredOrthogonalEdgeList (line 577) | LayeredOrthogonalEdgeList MinimumTerminalSpanningTree::
function VertexPair (line 964) | VertexPair MinimumTerminalSpanningTree::
FILE: cola/libavoid/mtst.h
function namespace (line 37) | namespace Avoid {
FILE: cola/libavoid/obstacle.cpp
type Avoid (line 31) | namespace Avoid {
function VertInf (line 237) | VertInf *Obstacle::firstVert(void)
function VertInf (line 243) | VertInf *Obstacle::lastVert(void)
function Polygon (line 255) | const Polygon& Obstacle::polygon(void) const
function Router (line 261) | Router *Obstacle::router(void) const
function Box (line 267) | Box Obstacle::routingBox(void) const
function Polygon (line 277) | Polygon Obstacle::routingPolygon(void) const
function Point (line 287) | Point Obstacle::shapeCentre(void)
function VertInf (line 311) | VertInf *Obstacle::getPointVertex(const Point& point)
function ConnRefList (line 340) | ConnRefList Obstacle::attachedConnectors(void) const
FILE: cola/libavoid/obstacle.h
function namespace (line 42) | namespace Avoid {
FILE: cola/libavoid/orthogonal.cpp
type Avoid (line 50) | namespace Avoid {
class UnsignedPair (line 67) | class UnsignedPair
method UnsignedPair (line 70) | UnsignedPair(unsigned ind1, unsigned ind2)
class CmpIndexes (line 96) | class CmpIndexes
method CmpIndexes (line 99) | CmpIndexes(ConnRef *conn, size_t dim)
class NudgingShiftSegment (line 115) | class NudgingShiftSegment : public ShiftSegment
method NudgingShiftSegment (line 119) | NudgingShiftSegment(ConnRef *conn, const size_t low, const size_t high,
method NudgingShiftSegment (line 138) | NudgingShiftSegment(ConnRef *conn, const size_t low, const size_t high,
method Point (line 159) | Point& lowPoint(void)
method Point (line 163) | Point& highPoint(void)
method Point (line 167) | const Point& lowPoint(void) const
method Point (line 171) | const Point& highPoint(void) const
method nudgeDistance (line 175) | double nudgeDistance(void) const
method immovable (line 179) | bool immovable(void) const
method createSolverVariable (line 183) | void createSolverVariable(const bool justUnifying)
method updatePositionsFromSolver (line 235) | void updatePositionsFromSolver(const bool justUnifying)
method fixedOrder (line 266) | int fixedOrder(bool& isFixed) const
method order (line 288) | int order(void) const
method zigzag (line 300) | bool zigzag(void) const
method overlapsWith (line 306) | bool overlapsWith(const ShiftSegment *rhsSuper, const size_t dim) const
method canAlignWith (line 361) | bool canAlignWith(const NudgingShiftSegment *rhs,
method shouldAlignWith (line 383) | bool shouldAlignWith(const ShiftSegment *rhsSuper,
method mergeWith (line 443) | void mergeWith(const ShiftSegment *rhsSuper, const size_t dim)
method hasCheckpointAtPosition (line 479) | bool hasCheckpointAtPosition(const double position,
method lowC (line 503) | bool lowC(void) const
method highC (line 514) | bool highC(void) const
type ScanVisDirFlag (line 529) | enum ScanVisDirFlag {
function ScanVisDirFlags (line 542) | static ScanVisDirFlags getPosVertInfDirections(VertInf *v, size_t dim)
type PosVertInf (line 588) | struct PosVertInf
method PosVertInf (line 590) | PosVertInf(double p, VertInf *vI, ScanVisDirFlags d = VisDirNone)
type CmpVertInf (line 629) | struct CmpVertInf
class LineSegment (line 659) | class LineSegment
method LineSegment (line 662) | LineSegment(const double& b, const double& f, const double& p,
method LineSegment (line 680) | LineSegment(const double& bf, const double& p, VertInf *bfvi = nullptr)
method overlaps (line 711) | bool overlaps(const LineSegment& rhs) const
method mergeVertInfs (line 732) | void mergeVertInfs(const LineSegment& segment)
method VertInf (line 739) | VertInf *beginVertInf(void) const
method VertInf (line 754) | VertInf *finishVertInf(void) const
method VertInf (line 770) | VertInf *commitPositionX(Router *router, double posX)
method horiCommitBegin (line 790) | void horiCommitBegin(Router *router, VertInf *vert = nullptr)
method horiCommitFinish (line 809) | void horiCommitFinish(Router *router, VertInf *vert = nullptr)
method addSegmentsUpTo (line 829) | VertSet::iterator addSegmentsUpTo(double finishPos)
method addEdgeHorizontal (line 856) | void addEdgeHorizontal(Router *router)
method setLongRangeVisibilityFlags (line 867) | void setLongRangeVisibilityFlags(size_t dim)
method VertSet (line 956) | VertSet addEdgeHorizontalTillIntersection(Router *router,
method insertBreakpointsBegin (line 987) | void insertBreakpointsBegin(Router *router, LineSegment& vertLine)
method insertBreakpointsFinish (line 1012) | void insertBreakpointsFinish(Router *router, LineSegment& vertLine)
method generateVisibilityEdgesFromBreakpointSet (line 1035) | void generateVisibilityEdgesFromBreakpointSet(Router *router, size_t...
class SegmentListWrapper (line 1225) | class SegmentListWrapper
method LineSegment (line 1228) | LineSegment *insert(LineSegment segment)
method SegmentList (line 1264) | SegmentList& list(void)
function intersectSegments (line 1276) | static void intersectSegments(Router *router, SegmentList& segments,
function processEventVert (line 1368) | static void processEventVert(Router *router, NodeSet& scanline,
function processEventHori (line 1551) | static void processEventHori(Router *router, NodeSet& scanline,
function fixConnectionPointVisibilityOnOutsideOfVisibilityGraph (line 1691) | void fixConnectionPointVisibilityOnOutsideOfVisibilityGraph(Event **ev...
function generateStaticOrthogonalVisGraph (line 1730) | extern void generateStaticOrthogonalVisGraph(Router *router)
function insideRectBounds (line 1991) | static bool insideRectBounds(const Point& point, const RectBounds& rec...
function buildOrthogonalNudgingSegments (line 2015) | static void buildOrthogonalNudgingSegments(Router *router,
class CmpLineOrder (line 2282) | class CmpLineOrder
method CmpLineOrder (line 2285) | CmpLineOrder(PtOrderMap& ord, const size_t dim)
function ShiftSegmentList (line 2378) | static ShiftSegmentList linesort(bool nudgeFinalSegments,
class PotentialSegmentConstraint (line 2461) | class PotentialSegmentConstraint
method PotentialSegmentConstraint (line 2464) | PotentialSegmentConstraint(size_t index1, size_t index2,
method sepDistance (line 2476) | double sepDistance(void) const
method stillValid (line 2484) | bool stillValid(void) const
method rewriteIndex (line 2488) | void rewriteIndex(size_t oldIndex, size_t newIndex)
class ImproveOrthogonalRoutes (line 2509) | class ImproveOrthogonalRoutes
function improveOrthogonalRoutes (line 3252) | extern void improveOrthogonalRoutes(Router *router)
FILE: cola/libavoid/orthogonal.h
function namespace (line 29) | namespace Avoid {
FILE: cola/libavoid/router.cpp
type Avoid (line 44) | namespace Avoid {
function DebugHandler (line 154) | DebugHandler *Router::debugHandler(void) const
function ShapeRef (line 159) | ShapeRef *Router::shapeContainingPoint(const Point& point)
class CmpConnCostRef (line 1040) | class CmpConnCostRef
method CmpConnCostRef (line 1043) | CmpConnCostRef()
function cheapEstimatedCost (line 1056) | static double cheapEstimatedCost(ConnRef *lineRef)
class CrossingConnectorsInfo (line 1087) | class CrossingConnectorsInfo
method addCrossing (line 1092) | void addCrossing(ConnRef *conn1, ConnRef *conn2)
method ConnCostRefSetList (line 1111) | ConnCostRefSetList crossingSetsListToRemoveCrossingsFromGroups(void)
method connsKnownToCross (line 1205) | bool connsKnownToCross(ConnRef *conn1, ConnRef *conn2)
method ConnCostRef (line 1227) | ConnCostRef removeConnectorWithMostCrossings(
method groupForConn (line 1287) | CrossingConnectorsMapList::iterator groupForConn(ConnRef *conn)
method groupForCrossingConns (line 1310) | CrossingConnectorsMapList::iterator groupForCrossingConns(
class CmpOrderedConnCostRef (line 1395) | class CmpOrderedConnCostRef
method CmpOrderedConnCostRef (line 1398) | CmpOrderedConnCostRef()
function AngleAFromThreeSides (line 1755) | static double AngleAFromThreeSides(const double a, const double b,
function ConnType (line 1970) | ConnType Router::validConnType(const ConnType select) const
function HyperedgeRerouter (line 2072) | HyperedgeRerouter *Router::hyperedgeRerouter(void)
function reduceRange (line 2164) | static void reduceRange(double& val)
function HyperedgeNewAndDeletedObjectLists (line 3090) | HyperedgeNewAndDeletedObjectLists
FILE: cola/libavoid/router.h
function namespace (line 47) | namespace Avoid {
FILE: cola/libavoid/scanline.cpp
type Avoid (line 35) | namespace Avoid {
function compare_events (line 294) | int compare_events(const void *a, const void *b)
function buildConnectorRouteCheckpointCache (line 311) | void buildConnectorRouteCheckpointCache(Router *router)
function clearConnectorRouteCheckpointCache (line 362) | void clearConnectorRouteCheckpointCache(Router *router)
function processShiftEvent (line 388) | static void processShiftEvent(NodeSet& scanline, Event *e, size_t dim,
function buildOrthogonalChannelInfo (line 462) | void buildOrthogonalChannelInfo(Router *router,
FILE: cola/libavoid/scanline.h
function namespace (line 35) | namespace Avoid {
FILE: cola/libavoid/shape.cpp
type Avoid (line 36) | namespace Avoid {
function absoluteOffsetInverse (line 77) | static double absoluteOffsetInverse(double offset,
function Polygon (line 228) | const Polygon& ShapeRef::polygon(void) const
function Point (line 260) | Point ShapeRef::position(void) const
FILE: cola/libavoid/shape.h
function namespace (line 41) | namespace topology {
function namespace (line 45) | namespace Avoid {
FILE: cola/libavoid/tests/2junctions.cpp
function test (line 5) | int test()
function main (line 105) | int main(void)
FILE: cola/libavoid/tests/buildOrthogonalChannelInfo1.cpp
function test (line 5) | void test()
function main (line 61) | int main(void)
FILE: cola/libavoid/tests/checkpointNudging1.cpp
function main (line 5) | int main(void) {
FILE: cola/libavoid/tests/checkpointNudging2.cpp
function main (line 5) | int main(void) {
FILE: cola/libavoid/tests/checkpointNudging3.cpp
function main (line 6) | int main(void) {
FILE: cola/libavoid/tests/checkpoints01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/checkpoints02.cpp
function main (line 9) | int main(void) {
FILE: cola/libavoid/tests/checkpoints03.cpp
function main (line 7) | int main(void) {
FILE: cola/libavoid/tests/complex.cpp
function connCallback (line 29) | static void connCallback(void *ptr)
function main (line 46) | int main(void)
FILE: cola/libavoid/tests/connectionpin01.cpp
function main (line 30) | int main(void)
FILE: cola/libavoid/tests/connectionpin02.cpp
function main (line 30) | int main(void)
FILE: cola/libavoid/tests/connectionpin03.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/connendmove.cpp
function main (line 31) | int main(void)
FILE: cola/libavoid/tests/corneroverlap01.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/endlessLoop01.cpp
function outputDiagram (line 5) | void outputDiagram(Avoid::Router * router)
function test (line 13) | void test()
function main (line 138) | int main(void)
FILE: cola/libavoid/tests/example.cpp
function connCallback (line 29) | static void connCallback(void *ptr)
function main (line 46) | int main(void)
FILE: cola/libavoid/tests/finalSegmentNudging1.cpp
function main (line 5) | int main(void) {
FILE: cola/libavoid/tests/finalSegmentNudging2.cpp
function main (line 5) | int main(void) {
FILE: cola/libavoid/tests/finalSegmentNudging3.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/forwardFlowingConnectors01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/freeFloatingDirection01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/hola01.cpp
function main (line 12) | int main(void) {
FILE: cola/libavoid/tests/hyperedge01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/hyperedge02.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/hyperedgeLoop1.cpp
function test (line 7) | void test()
function main (line 83) | int main(void)
FILE: cola/libavoid/tests/hyperedgeRerouting01.cpp
function outputDiagram (line 6) | void outputDiagram(Avoid::Router * router)
function test (line 14) | int test()
function main (line 147) | int main(int argc, char* argv[])
FILE: cola/libavoid/tests/improveHyperedge01.cpp
function test (line 5) | int test()
function main (line 106) | int main(void)
FILE: cola/libavoid/tests/improveHyperedge02.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/improveHyperedge03.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/improveHyperedge04.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/improveHyperedge05.cpp
function outputDiagram (line 5) | void outputDiagram(Avoid::Router * router)
function test (line 13) | void test()
function main (line 150) | int main(void)
FILE: cola/libavoid/tests/improveHyperedge06.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/infinity.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/inline.cpp
function main (line 32) | int main(void)
FILE: cola/libavoid/tests/inlineOverlap09.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/inlineOverlap10.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/inlineOverlap11.cpp
function main (line 5) | int main(void)
FILE: cola/libavoid/tests/inlineShapes.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap02.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap03.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap04.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap05.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap06.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap07.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/inlineoverlap08.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/junction01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/junction02.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/junction03.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/junction04.cpp
function main (line 29) | int main(void)
FILE: cola/libavoid/tests/latesetup.cpp
function connCallback (line 29) | static void connCallback(void *ptr)
function main (line 46) | int main(void)
FILE: cola/libavoid/tests/lineSegWrapperCrash1.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash2.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash3.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash4.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash5.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash6.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash7.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/lineSegWrapperCrash8.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/multiconnact.cpp
function connCallback (line 29) | static void connCallback(void *ptr)
function main (line 46) | int main(void)
FILE: cola/libavoid/tests/node1.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/nudgeCrossing01.cpp
function main (line 11) | int main(void) {
FILE: cola/libavoid/tests/nudgeintobug.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/nudgeold.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/nudgingSkipsCheckpoint01.cpp
function main (line 7) | int main(void) {
FILE: cola/libavoid/tests/nudgingSkipsCheckpoint02.cpp
function main (line 7) | int main(void) {
FILE: cola/libavoid/tests/orderassertion.cpp
function main (line 6) | int main(void) {
FILE: cola/libavoid/tests/orthordering01.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/orthordering02.cpp
function main (line 4) | int main(void) {
FILE: cola/libavoid/tests/overlappingRects.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/penaltyRerouting01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/performance01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/reallyslowrouting.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/removeJunctions01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/restrictedNudging.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/slowrouting.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/tjunct.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/treeRootCrash01.cpp
function test (line 4) | void test()
function main (line 136) | int main(int argc, char* argv[])
FILE: cola/libavoid/tests/treeRootCrash02.cpp
function test (line 6) | void test()
function main (line 239) | int main(int argc, char* argv[])
FILE: cola/libavoid/tests/unsatisfiableRangeAssertion.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/validPaths01.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/validPaths02.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/tests/vertlineassertion.cpp
function main (line 3) | int main(void) {
FILE: cola/libavoid/timer.cpp
type Avoid (line 34) | namespace Avoid {
FILE: cola/libavoid/timer.h
function namespace (line 31) | namespace Avoid {
FILE: cola/libavoid/vertices.cpp
type Avoid (line 40) | namespace Avoid {
function VertID (line 64) | VertID& VertID::operator= (const VertID& rhs)
function VertID (line 108) | VertID VertID::operator+(const int& rhs) const
function VertID (line 114) | VertID VertID::operator-(const int& rhs) const
function VertID (line 120) | VertID& VertID::operator++(int)
function ostream (line 149) | ostream& operator<<(ostream& os, const VertID& vID)
function EdgeInf (line 190) | EdgeInf *VertInf::hasNeighbour(VertInf *target, bool orthogonal) const
function ConnDirFlags (line 290) | ConnDirFlags VertInf::directionFrom(const VertInf *other) const
function VertInf (line 381) | VertInf **VertInf::makeTreeRootPointer(VertInf *root)
function VertInf (line 388) | VertInf *VertInf::treeRoot(void) const
function VertInf (line 393) | VertInf **VertInf::treeRootPointer(void) const
function VertInf (line 415) | VertInf *VertInf::sptfRoot(void) const
function directVis (line 422) | bool directVis(VertInf *src, VertInf *dst)
function VertInf (line 557) | VertInf *VertInfList::removeVertex(VertInf *vert)
function VertInf (line 660) | VertInf *VertInfList::getVertexByID(const VertID& id)
function VertInf (line 688) | VertInf *VertInfList::getVertexByPos(const Point& p)
function VertInf (line 702) | VertInf *VertInfList::shapesBegin(void)
function VertInf (line 708) | VertInf *VertInfList::connsBegin(void)
function VertInf (line 719) | VertInf *VertInfList::end(void)
FILE: cola/libavoid/vertices.h
function namespace (line 38) | namespace Avoid {
FILE: cola/libavoid/viscluster.cpp
type Avoid (line 33) | namespace Avoid {
function ReferencingPolygon (line 96) | ReferencingPolygon& ClusterRef::polygon(void)
function Polygon (line 102) | Polygon& ClusterRef::rectangularPolygon(void)
function Router (line 108) | Router *ClusterRef::router(void) const
FILE: cola/libavoid/viscluster.h
function namespace (line 36) | namespace Avoid {
FILE: cola/libavoid/visibility.cpp
type Avoid (line 47) | namespace Avoid {
function vertexVisibility (line 115) | void vertexVisibility(VertInf *point, VertInf *partner, bool knownNew,
class PointPair (line 171) | class PointPair
method PointPair (line 174) | PointPair(const Point& centerPoint, VertInf *inf)
class EdgePair (line 213) | class EdgePair
method EdgePair (line 216) | EdgePair()
method EdgePair (line 228) | EdgePair(const PointPair& p1, VertInf *v)
method setNegativeAngle (line 269) | void setNegativeAngle(void)
method setCurrAngle (line 273) | double setCurrAngle(const PointPair& p)
class isBoundingShape (line 322) | class isBoundingShape
method isBoundingShape (line 326) | isBoundingShape(ShapeSet& set) :
function sweepVisible (line 350) | static bool sweepVisible(SweepEdgeList& T, const PointPair& point,
function vertexSweep (line 436) | static void vertexSweep(VertInf *vert)
FILE: cola/libavoid/visibility.h
function namespace (line 30) | namespace Avoid {
FILE: cola/libavoid/vpsc.cpp
type Avoid (line 55) | namespace Avoid {
type node (line 132) | struct node {
function Constraint (line 431) | Constraint* IncSolver::mostViolated(Constraints &l)
function Block (line 781) | Block* Block::merge(Block* b, Constraint* c) {
function Constraint (line 864) | Constraint *Block::findMinInConstraint() {
function Constraint (line 913) | Constraint *Block::findMinOutConstraint() {
function Constraint (line 1135) | Constraint *Block::findMinLM() {
function Constraint (line 1146) | Constraint *Block::findMinLMBetween(Variable* const lv, Variable* cons...
function Constraint (line 1237) | Constraint* Block::splitBetween(Variable* const vl, Variable* const vr,
function ostream (line 1281) | ostream& operator <<(ostream &os, const Block& b)
class EqualityConstraintSet (line 1399) | class EqualityConstraintSet
method EqualityConstraintSet (line 1402) | EqualityConstraintSet(Variables vs)
method isRedundant (line 1411) | bool isRedundant(Variable *lhs, Variable *rhs, double sep)
method mergeSets (line 1426) | void mergeSets(Variable *lhs, Variable *rhs, double sep)
method setForVar (line 1452) | VarOffsetMapList::iterator setForVar(Variable *var)
function Constraints (line 1468) | Constraints constraintsRemovingRedundantEqualities(Variables const &vars,
FILE: cola/libavoid/vpsc.h
function namespace (line 77) | namespace Avoid {
function class (line 208) | class Constraint
function class (line 247) | class Blocks
FILE: cola/libcola/box.cpp
type cola (line 25) | namespace cola {
FILE: cola/libcola/box.h
function namespace (line 31) | namespace cola {
FILE: cola/libcola/cc_clustercontainmentconstraints.cpp
type cola (line 33) | namespace cola {
class ClusterShapeOffsets (line 38) | class ClusterShapeOffsets : public SubConstraintInfo
method ClusterShapeOffsets (line 41) | ClusterShapeOffsets(unsigned ind, vpsc::Dim dim, double offset, int ...
function SubConstraintAlternatives (line 124) | SubConstraintAlternatives
FILE: cola/libcola/cc_clustercontainmentconstraints.h
function namespace (line 29) | namespace vpsc {
function namespace (line 33) | namespace cola {
FILE: cola/libcola/cc_nonoverlapconstraints.cpp
type cola (line 33) | namespace cola {
function SubConstraintAlternatives (line 344) | SubConstraintAlternatives
FILE: cola/libcola/cc_nonoverlapconstraints.h
function namespace (line 32) | namespace vpsc {
function namespace (line 36) | namespace cola {
function usesClusterBounds (line 68) | bool usesClusterBounds(void) const
function resize (line 72) | void resize(double xOffset, double yOffset)
function class (line 84) | class ShapePairInfo
function class (line 124) | class NonOverlapConstraintExemptions {
function class (line 136) | class NonOverlapConstraints : public CompoundConstraint {
FILE: cola/libcola/cluster.cpp
type cola (line 33) | namespace cola {
function Box (line 265) | Box RectangularCluster::margin(void) const
function Box (line 283) | Box RectangularCluster::padding(void) const
FILE: cola/libcola/cluster.h
function namespace (line 36) | namespace cola {
FILE: cola/libcola/cola.cpp
type cola (line 36) | namespace cola {
function Rectangle (line 599) | Rectangle bounds(vector<Rectangle*>& rs) {
function removeClusterOverlap (line 615) | void removeClusterOverlap(RootCluster& clusterHierarchy, vpsc::Rectang...
function removeClusterOverlapFast (line 679) | void removeClusterOverlapFast(RootCluster& clusterHierarchy, vpsc::Rec...
function ConstrainedMajorizationLayout (line 685) | ConstrainedMajorizationLayout* simpleCMLFactory(
FILE: cola/libcola/cola.h
function namespace (line 40) | namespace vpsc { class Rectangle; }
function namespace (line 41) | namespace topology {
function namespace (line 44) | namespace dialect {
function namespace (line 56) | namespace cola {
type std (line 102) | typedef std::vector<cola::Lock> Locks;
function class (line 107) | class Resize {
function vpsc (line 127) | const vpsc::Rectangle* getTarget() const {
type std (line 135) | typedef std::vector<cola::Resize> Resizes;
type DesiredPosition (line 141) | struct DesiredPosition {
type std (line 147) | typedef std::vector<cola::DesiredPosition> DesiredPositions;
type std (line 154) | typedef std::pair<unsigned,double> DesiredPositionInDim;
type std (line 155) | typedef std::vector<DesiredPositionInDim> DesiredPositionsInDim;
function class (line 168) | class PreIteration {
function class (line 216) | class TestConvergence {
function virtual (line 223) | virtual ~TestConvergence() {}
function reset (line 245) | void reset() {
function class (line 270) | class ConstrainedMajorizationLayout {
function setNonOverlappingClusters (line 375) | void setNonOverlappingClusters() {
function moveBoundingBoxes (line 401) | void moveBoundingBoxes() {
function setConstrainedLayout (line 441) | void setConstrainedLayout(bool c) {
function class (line 531) | class TopologyAddonInterface
function class (line 622) | class ConstrainedFDLayout {
type ProjectionResult (line 925) | struct ProjectionResult {
FILE: cola/libcola/cola_log.h
function namespace (line 37) | namespace cola {
function class (line 118) | class Output2FILE
function FILE (line 125) | inline FILE*& Output2FILE::Stream()
function Output (line 131) | inline void Output2FILE::Output(const std::string& msg)
function std (line 168) | inline std::string NowTime()
function std (line 186) | inline std::string NowTime()
FILE: cola/libcola/colafd.cpp
type cola (line 65) | namespace cola {
function delete_vector (line 68) | void delete_vector(vector<T*> &v) {
function dotProd (line 74) | inline double dotProd(valarray<double> x, valarray<double> y) {
function dumpSquareMatrix (line 83) | void dumpSquareMatrix(unsigned n, T** L) {
function dijkstra (line 184) | void dijkstra(const unsigned s, const unsigned n, double* d,
function getPosition (line 273) | void getPosition(Position& X, Position& Y, Position& pos) {
function cmpCompoundConstraintPriority (line 410) | static bool cmpCompoundConstraintPriority(const cola::CompoundConstrai...
function TopologyAddonInterface (line 952) | TopologyAddonInterface *ConstrainedFDLayout::getTopology(void)
function setupVarsAndConstraints (line 958) | void setupVarsAndConstraints(unsigned n, const CompoundConstraints& ccs,
function setupExtraConstraints (line 990) | static void setupExtraConstraints(const CompoundConstraints& ccs,
function updateCompoundConstraints (line 1006) | void updateCompoundConstraints(const vpsc::Dim dim,
function project (line 1015) | void project(vpsc::Variables& vs, vpsc::Constraints& cs, valarray<doub...
function setVariableDesiredPositions (line 1023) | void setVariableDesiredPositions(vpsc::Variables& vs, vpsc::Constraint...
function checkUnsatisfiable (line 1043) | void checkUnsatisfiable(const vpsc::Constraints& cs,
function reduceRange (line 1364) | static void reduceRange(double& val)
function ProjectionResult (line 1555) | ProjectionResult projectOntoCCs(Dim dim, Rectangles &rs, CompoundConst...
function ProjectionResult (line 1599) | ProjectionResult solve(Variables &vs, Constraints &cs, Rectangles &rs,...
FILE: cola/libcola/commondefs.h
function namespace (line 38) | namespace cola {
function check (line 59) | bool check(const unsigned i) const {
function unsetAll (line 65) | void unsetAll() {
function fixAll (line 68) | void fixAll(bool val) {
type delete_object (line 79) | struct delete_object
FILE: cola/libcola/compound_constraints.cpp
type cola (line 39) | namespace cola {
class Offset (line 51) | class Offset : public SubConstraintInfo
method Offset (line 54) | Offset(unsigned ind, double offset) :
function SubConstraintAlternatives (line 175) | SubConstraintAlternatives
function SubConstraintAlternatives (line 381) | SubConstraintAlternatives
class VarIndexPair (line 404) | class VarIndexPair : public SubConstraintInfo
method VarIndexPair (line 407) | VarIndexPair(unsigned ind1, unsigned ind2)
method VarIndexPair (line 414) | VarIndexPair(AlignmentConstraint *l, AlignmentConstraint *r)
method indexL (line 421) | unsigned indexL(void) const
method indexR (line 426) | unsigned indexR(void) const
method updateVarIDsWithMapping (line 431) | void updateVarIDsWithMapping(const VariableIDMap& idMap, bool forward)
function SubConstraintAlternatives (line 529) | SubConstraintAlternatives
function SubConstraintAlternatives (line 638) | SubConstraintAlternatives
class AlignmentPair (line 736) | class AlignmentPair : public SubConstraintInfo
method AlignmentPair (line 739) | AlignmentPair(AlignmentConstraint *ac1, AlignmentConstraint *ac2)
function SubConstraintAlternatives (line 824) | SubConstraintAlternatives
function SubConstraintAlternatives (line 965) | SubConstraintAlternatives
class RelativeOffset (line 1039) | class RelativeOffset : public SubConstraintInfo
method RelativeOffset (line 1042) | RelativeOffset(unsigned indL, unsigned indR, vpsc::Dim dim,
method updateVarIDsWithMapping (line 1050) | void updateVarIDsWithMapping(const VariableIDMap& idMap, bool forward)
function SubConstraintAlternatives (line 1177) | SubConstraintAlternatives
class PageBoundaryShapeOffsets (line 1228) | class PageBoundaryShapeOffsets : public SubConstraintInfo
method PageBoundaryShapeOffsets (line 1231) | PageBoundaryShapeOffsets(unsigned ind, double xOffset, double yOffse...
function SubConstraintAlternatives (line 1322) | SubConstraintAlternatives
type GenerateVariables (line 1417) | struct GenerateVariables
method GenerateVariables (line 1419) | GenerateVariables(const vpsc::Dim dim, vpsc::Variables& vars)
type GenerateSeparationConstraints (line 1434) | struct GenerateSeparationConstraints
method GenerateSeparationConstraints (line 1436) | GenerateSeparationConstraints(const vpsc::Dim dim, vpsc::Variables& ...
function generateVariablesAndConstraints (line 1455) | void generateVariablesAndConstraints(CompoundConstraints& ccs,
function generateVariables (line 1466) | void generateVariables(CompoundConstraints& ccs, const vpsc::Dim dim,
FILE: cola/libcola/compound_constraints.h
function namespace (line 34) | namespace vpsc {
function namespace (line 44) | namespace cola {
type std (line 259) | typedef std::vector<CompoundConstraint *> CompoundConstraints;
function class (line 288) | class BoundaryConstraint : public CompoundConstraint
function class (line 345) | class AlignmentConstraint : public CompoundConstraint
function class (line 432) | class SeparationConstraint : public CompoundConstraint
function class (line 499) | class OrthogonalEdgeConstraint : public CompoundConstraint
function class (line 534) | class MultiSeparationConstraint : public CompoundConstraint
function class (line 611) | class DistributionConstraint : public CompoundConstraint {
function class (line 679) | class FixedRelativeConstraint : public CompoundConstraint {
function class (line 730) | class PageBoundaryConstraints : public CompoundConstraint {
function class (line 788) | class UnsatisfiableConstraintInfo {
type std (line 826) | typedef std::vector<UnsatisfiableConstraintInfo *> UnsatisfiableConstrai...
FILE: cola/libcola/conjugate_gradient.cpp
function matrix_times_vector (line 39) | static void
function inner (line 72) | double
function compute_cost (line 81) | double compute_cost(valarray<double> const &A,
function conjugate_gradient (line 96) | void
FILE: cola/libcola/connected_components.cpp
type cola (line 32) | namespace cola {
function Rectangle (line 49) | Rectangle* Component::getBoundingBox()
type ccomponents (line 59) | namespace ccomponents {
type Node (line 60) | struct Node {
function dfs (line 68) | void dfs(Node* v,
function connectedComponents (line 89) | void connectedComponents(
function separateComponents (line 142) | void separateComponents(const vector<Component*> &components) {
FILE: cola/libcola/connected_components.h
function namespace (line 26) | namespace cola {
FILE: cola/libcola/convex_hull.cpp
type hull (line 29) | namespace hull {
function crossProduct (line 36) | inline double crossProduct(
type CounterClockwiseOrder (line 42) | struct CounterClockwiseOrder {
method CounterClockwiseOrder (line 43) | CounterClockwiseOrder(
function convex (line 68) | void convex(const unsigned n, const double* X, const double* Y, vector...
function convex (line 78) | void convex(valarray<double> const & X, valarray<double> const & Y, ve...
FILE: cola/libcola/convex_hull.h
function namespace (line 26) | namespace hull {
FILE: cola/libcola/exceptions.h
function namespace (line 26) | namespace cola {
FILE: cola/libcola/gradient_projection.cpp
type cola (line 46) | namespace cola {
function dotProd (line 124) | static inline double dotProd(valarray<double> const & a, valarray<doub...
function IncSolver (line 376) | IncSolver* GradientProjection::setupVPSC() {
FILE: cola/libcola/gradient_projection.h
function namespace (line 40) | namespace straightener {
function namespace (line 43) | namespace cola {
FILE: cola/libcola/output_svg.cpp
type bundles (line 193) | namespace bundles {
type CEdge (line 194) | struct CEdge {
type CBundle (line 198) | struct CBundle
method CBundle (line 216) | CBundle(CNode const &u) : w(u.edges.size()), x0(u.x), y0(u.y), sx(w*...
method addEdge (line 217) | void addEdge(CEdge *e) {
method x1 (line 225) | double x1() const {
method y1 (line 228) | double y1() const {
method angle (line 231) | double angle(CBundle* const &b) const {
method yangle (line 238) | double yangle() const {
method merge (line 244) | void merge(CBundle* b) {
method dump (line 249) | void dump() {
type CNode (line 199) | struct CNode {
function vangle (line 204) | double vangle(double ax,double ay, double bx, double by) {
type CBundle (line 211) | struct CBundle {
method CBundle (line 216) | CBundle(CNode const &u) : w(u.edges.size()), x0(u.x), y0(u.y), sx(w*...
method addEdge (line 217) | void addEdge(CEdge *e) {
method x1 (line 225) | double x1() const {
method y1 (line 228) | double y1() const {
method angle (line 231) | double angle(CBundle* const &b) const {
method yangle (line 238) | double yangle() const {
method merge (line 244) | void merge(CBundle* b) {
method dump (line 249) | void dump() {
type clockwise (line 256) | struct clockwise {
FILE: cola/libcola/output_svg.h
function class (line 32) | class OutputFile {
FILE: cola/libcola/pseudorandom.cpp
type cola (line 24) | namespace cola {
FILE: cola/libcola/pseudorandom.h
function namespace (line 25) | namespace cola {
FILE: cola/libcola/shapepair.cpp
type cola (line 27) | namespace cola {
FILE: cola/libcola/shapepair.h
function namespace (line 26) | namespace cola {
FILE: cola/libcola/shortest_paths.h
function namespace (line 40) | namespace shortest_paths {
FILE: cola/libcola/sparse_matrix.h
function namespace (line 41) | namespace cola {
function class (line 84) | class SparseMatrix {
function rightMultiply (line 109) | void rightMultiply(std::valarray<double> const & v, std::valarray<double...
function getIJ (line 119) | double getIJ(const unsigned i, const unsigned j) const {
FILE: cola/libcola/straightener.cpp
type straightener (line 49) | namespace straightener {
function pointOnLine (line 52) | static bool pointOnLine(double px,double py, double ax, double ay, dou...
type ProjectSide (line 95) | enum ProjectSide {LEFT, BOTTOM, RIGHT, TOP}
type Event (line 252) | struct Event {
method Event (line 257) | Event(EventType t, Node *v, double p) : type(t),v(v),e(nullptr),pos(...
method Event (line 258) | Event(EventType t, Edge *e, double p) : type(t),v(nullptr),e(e),pos(...
type CompareEvents (line 269) | struct CompareEvents {
function sortNeighbours (line 301) | void sortNeighbours(const vpsc::Dim dim, Node * v, Node * l, Node * r,
function overlap (line 369) | static double overlap(vpsc::Dim k, Node const *u, Node const *v) {
function Event (line 391) | Event* createEvent(
method Event (line 257) | Event(EventType t, Node *v, double p) : type(t),v(v),e(nullptr),pos(...
method Event (line 258) | Event(EventType t, Edge *e, double p) : type(t),v(nullptr),e(e),pos(...
function generateConstraints (line 409) | void generateConstraints(
function generateClusterBoundaries (line 554) | void generateClusterBoundaries(
function setEdgeLengths (line 769) | void setEdgeLengths(double **D, vector<Edge*> & edges) {
function pathLength (line 775) | double pathLength(Edge const * e, vector<Node*> const & nodes) {
function computeStressFromRoutes (line 786) | double computeStressFromRoutes(double strength, vector<Edge*> & edges) {
FILE: cola/libcola/straightener.h
function namespace (line 32) | namespace cola {
function namespace (line 37) | namespace straightener {
type DebugPoint (line 77) | struct DebugPoint {
type DebugLine (line 80) | struct DebugLine {
function class (line 86) | class ScanObject {
function class (line 99) | class Edge : public ScanObject {
function isEnd (line 142) | bool isEnd(unsigned n) const {
function xpos (line 148) | void xpos(double y, std::vector<double>& xs) const {
function ypos (line 159) | void ypos(double x, std::vector<double>& ys) const {
function Route (line 170) | Route const * getRoute() const {
function setRoute (line 173) | void setRoute(Route * r) {
function class (line 184) | class Straightener {
function class (line 234) | class Cluster {
function class (line 242) | class Node : public ScanObject {
function euclidean_distance (line 278) | double euclidean_distance(Node const * v) const {
function if (line 301) | struct CmpNodePos {
type std (line 324) | typedef std::set<Node*,CmpNodePos> NodeSet;
function else (line 328) | struct LinearConstraint {
type std (line 372) | typedef std::vector<LinearConstraint*> LinearConstraints;
FILE: cola/libcola/tests/FixedRelativeConstraint01.cpp
function main (line 4) | int main(void) {
FILE: cola/libcola/tests/StillOverlap01.cpp
function main (line 4) | int main(void) {
FILE: cola/libcola/tests/StillOverlap02.cpp
function main (line 4) | int main(void) {
FILE: cola/libcola/tests/boundary.cpp
function Node (line 48) | Node* addNode( Nodes& vs, vpsc::Rectangle* r) {
function addToPath (line 53) | void addToPath(EdgePoints& ps, Node *v, EdgePoint::RectIntersect i) {
type SetDesiredPos (line 56) | struct SetDesiredPos : public PreIteration {
method SetDesiredPos (line 57) | SetDesiredPos(Locks& locks) : PreIteration(locks) {}
type Test (line 59) | struct Test : TestConvergence {
method Test (line 60) | Test(const double d,const unsigned i,topology::Nodes& vs, topology::Ed...
function clusterBoundary (line 77) | void clusterBoundary() {
function main (line 117) | int main() {
FILE: cola/libcola/tests/connected_components.cpp
function main (line 37) | int main() {
FILE: cola/libcola/tests/constrained.cpp
function getRand (line 42) | inline double getRand(double range) {
function main (line 52) | int main() {
FILE: cola/libcola/tests/containment.cpp
function main (line 53) | int main() {
FILE: cola/libcola/tests/containment2.cpp
function main (line 54) | int main() {
FILE: cola/libcola/tests/convex_hull.cpp
function randTest (line 53) | void randTest(unsigned n, valarray<double>& X, valarray<double>& Y) {
function tworects (line 68) | void tworects(valarray<double>& X, valarray<double>& Y, Hull& expectedHu...
function main (line 90) | int main(int argc, char** argv) {
function dot (line 111) | void dot(Cairo::RefPtr<Cairo::Context> & cr, double x, double y) {
function xcoord (line 117) | double xcoord(double x) {
function ycoord (line 120) | double ycoord(double y) {
function drawCairo (line 123) | int drawCairo(const string& fname,
FILE: cola/libcola/tests/cycle_detector.cpp
function main (line 38) | int main() {
FILE: cola/libcola/tests/gml_graph.cpp
function Edge (line 39) | Edge readEdge(ifstream &f) {
function readNode (line 69) | unsigned readNode(ifstream &f, NodeIdMap &nodeIdMap,
type PostIteration (line 103) | struct PostIteration : TestConvergence {
method PostIteration (line 104) | PostIteration(vector<vpsc::Rectangle*> &rs, vector<list<unsigned> > &p...
function main (line 148) | int main() {
FILE: cola/libcola/tests/graphlayouttest.h
function getRand (line 34) | inline double getRand(double range) {
function namespace (line 38) | namespace DFS {
type Graph (line 80) | struct Graph {
function TestConvergence (line 112) | struct CheckProgress : TestConvergence {
type SolverType (line 120) | enum SolverType { CG, UGP, SGP, IP }
function run_test (line 121) | void run_test(
function writeFile (line 183) | void writeFile(const topology::Nodes& vs, const topology::Edges& es, con...
function writeDunnartFile (line 215) | void writeDunnartFile(const topology::Nodes& vs, const vector<std::pair<...
FILE: cola/libcola/tests/initialOverlap.cpp
function main (line 10) | int main(void) {
FILE: cola/libcola/tests/invalid.cpp
function main (line 45) | int main() {
FILE: cola/libcola/tests/large_graph.cpp
function countCrossings (line 51) | int countCrossings(vpsc::Rectangles& rs, vector<cola::Edge>& es) {
function main (line 74) | int main() {
FILE: cola/libcola/tests/makefeasible.cpp
function makeEdge (line 80) | void makeEdge(unsigned u, unsigned v,
function random_dag (line 85) | vector<Edge> random_dag(unsigned depth, unsigned maxbranch, unsigned &V,
function removeoverlaps (line 130) | void removeoverlaps(vpsc::Rectangles &rs, bool bothaxes) {
function makeFeasible (line 202) | void makeFeasible(vpsc::Rectangles& rs, vector<cola::Edge>& edges,
function main (line 283) | int main() {
FILE: cola/libcola/tests/makefeasible02.cpp
function main (line 4) | int main(void) {
FILE: cola/libcola/tests/max_acyclic_subgraph.cpp
function main (line 37) | int main() {
FILE: cola/libcola/tests/overlappingClusters01.cpp
function main (line 7) | int main(void) {
FILE: cola/libcola/tests/overlappingClusters02.cpp
function main (line 20) | int main(void) {
FILE: cola/libcola/tests/overlappingClusters04.cpp
function main (line 8) | int main(void) {
FILE: cola/libcola/tests/page_bounds.cpp
function random_graph (line 39) | vector<Edge> random_graph(unsigned n) {
function main (line 55) | int main() {
FILE: cola/libcola/tests/planar.cpp
type TestCase (line 53) | struct TestCase {
method addNode (line 59) | void addNode(double minX, double minY, double w, double h) {
method addToPath (line 65) | void addToPath(unsigned vID, topology::EdgePoint::RectIntersect i) {
method addEdge (line 68) | void addEdge(double l) {
function writeFile (line 79) | void writeFile(const topology::Nodes& vs, const topology::Edges& es, con...
type Test (line 110) | struct Test : TestConvergence {
method Test (line 111) | Test(const double d,const unsigned i,topology::Nodes& vs, topology::Ed...
function test (line 127) | void test() {
function main (line 283) | int main() {
FILE: cola/libcola/tests/random_graph.cpp
function random_graph (line 34) | vector<Edge> random_graph(unsigned n) {
function main (line 50) | int main() {
FILE: cola/libcola/tests/rectangularClusters01.cpp
function main (line 5) | int main(void) {
FILE: cola/libcola/tests/rectclustershapecontainment.cpp
function main (line 4) | int main(void) {
FILE: cola/libcola/tests/resize.cpp
function addToPath (line 59) | void addToPath(topology::EdgePoints& ps, topology::Node *v, topology::Ed...
type Test (line 62) | struct Test : TestConvergence {
method Test (line 63) | Test(const double d,const unsigned i,topology::Nodes& vs, topology::Ed...
function resize (line 80) | void resize() {
function main (line 127) | int main() {
FILE: cola/libcola/tests/scale_free.cpp
function scale_free (line 42) | void scale_free(const unsigned n = 50) {
function main (line 129) | int main() {
FILE: cola/libcola/tests/shortest_paths.cpp
function random_graph (line 45) | vector<shortest_paths::Edge> random_graph(unsigned n) {
function resetClock (line 59) | static void resetClock() {
function getRunTime (line 62) | static double getRunTime() {
function main (line 67) | int
FILE: cola/libcola/tests/small_graph.cpp
type CheckProgress (line 48) | struct CheckProgress : TestConvergence {
method CheckProgress (line 49) | CheckProgress(const double d,const unsigned i) : TestConvergence(d,i) {}
function main (line 55) | int main() {
FILE: cola/libcola/tests/sparse_matrix.cpp
function sparse_test (line 36) | int sparse_test(const unsigned n, cola::SparseMatrix::SparseMap& cm, map...
function dense_test (line 50) | int dense_test(const unsigned n, cola::SparseMatrix::SparseMap& cm, mapp...
function test (line 60) | void test(int (*generate)(const unsigned, cola::SparseMatrix::SparseMap&...
function main (line 82) | int main() {
FILE: cola/libcola/tests/test_cg.cpp
function outer_prod (line 33) | static valarray<double>
function uniform (line 44) | static double
function matrix_times_vector (line 49) | static void
function Linfty (line 66) | static double
function main (line 71) | int
FILE: cola/libcola/tests/topology.cpp
function addToPath (line 59) | void addToPath(topology::EdgePoints& ps, topology::Node *v, topology::Ed...
type SetDesiredPos (line 62) | struct SetDesiredPos : public PreIteration {
method SetDesiredPos (line 63) | SetDesiredPos(Locks& locks) : PreIteration(locks) {}
function writeFile (line 68) | void writeFile(const topology::Nodes& vs, const topology::Edges& es, con...
type Test (line 99) | struct Test : TestConvergence {
method Test (line 100) | Test(const double d,const unsigned i,topology::Nodes& vs, topology::Ed...
function randomMove (line 116) | void randomMove(int i) {
function main (line 170) | int main() {
FILE: cola/libcola/tests/trees.cpp
function makeEdge (line 37) | void makeEdge(unsigned u, unsigned v,
function random_tree (line 42) | vector<Edge> random_tree(unsigned depth, unsigned maxbranch, unsigned &V,
function main (line 77) | int main() {
FILE: cola/libcola/tests/unconstrained.cpp
function main (line 46) | int main() {
FILE: cola/libcola/tests/unsatisfiable.cpp
function main (line 45) | int main() {
FILE: cola/libdialect/aca.cpp
type dialect (line 86) | namespace dialect {
function ACASepFlag (line 99) | ACASepFlag negateSepFlag(ACASepFlag sf)
function ACAFlag (line 117) | ACAFlag sepToAlignFlag(ACASepFlag sf)
function ACAFlag (line 126) | ACAFlag perpAlignFlag(ACAFlag af)
function ACASepFlag (line 134) | ACASepFlag vectorToSepFlag(double dx, double dy)
function propsedSepConflictsWithExistingPosition (line 142) | bool propsedSepConflictsWithExistingPosition(ACASepFlag pro, ACASepFla...
function sortOrdAlignsByPenalty (line 151) | bool sortOrdAlignsByPenalty(const OrderedAlignment *lhs, const Ordered...
function OrderedAlignment (line 1141) | OrderedAlignment *ACALayout::chooseOA(void)
function OrderedAlignment (line 1226) | OrderedAlignment *ACALayout::initOrdAlign(int j, ACASepFlag sf) const
function OrderedAlignment (line 1240) | OrderedAlignment *ACALayout::initOrdAlign(int s, int t, ACASepFlag sf,...
function OrderedAlignment (line 1324) | OrderedAlignment *ACALayout::mostRecentOA(void)
function EdgeOffset (line 1655) | EdgeOffset ACALayout::getEdgeOffsetForCompassDirection(int j, ACASepFl...
function reduceRange (line 1672) | static void reduceRange(double& val)
FILE: cola/libdialect/aca.h
function namespace (line 41) | namespace dialect {
type std (line 111) | typedef std::vector<OrderedAlignment*> OrderedAlignments;
type std (line 112) | typedef std::pair<double,double> EdgeOffset;
type std (line 113) | typedef std::vector<EdgeOffset> EdgeOffsets;
type std (line 114) | typedef std::vector<ACASepFlag> ACASepFlags;
function class (line 124) | class ACALayout {
FILE: cola/libdialect/chains.cpp
function LinkShapes (line 63) | LinkShapes dialect::bentLinkShapeCwFromStartingPt(LinkShape start) {
function CardinalDirs (line 104) | CardinalDirs dialect::possibleCardinalDirections(Node_SP node1, Node_SP ...
function LinkShape (line 117) | LinkShape dialect::shapeOfLink(Node_SP link) {
function Node_SP (line 247) | Node_SP Chain::getNode(int i) const {
function Edge_SP (line 260) | Edge_SP Chain::getEdge(int i) const {
function BendSequences (line 404) | BendSequences Chain::computePossibleBendSequences(void) const {
function ChainConfigSeq (line 485) | ChainConfigSeq Chain::writeConfigSeq(BendSequence_SP bendSeq) const {
function Chains (line 624) | Chains dialect::buildAllChainsInGraph(std::shared_ptr<Graph> graph) {
FILE: cola/libdialect/chains.h
function namespace (line 40) | namespace dialect {
type std (line 145) | typedef std::shared_ptr<BendSequence> BendSequence_SP;
type std (line 146) | typedef std::vector<BendSequence_SP> BendSequences;
type AestheticBend (line 149) | struct AestheticBend {
type std (line 164) | typedef std::shared_ptr<AestheticBend> AestheticBend_SP;
type std (line 165) | typedef std::vector<AestheticBend_SP> AestheticBends;
type std (line 167) | typedef std::vector<std::pair<CardinalDir, CardinalDir>> ChainConfigSeq;
function class (line 173) | class Chain {
type std (line 320) | typedef std::shared_ptr<Chain> Chain_SP;
type std (line 321) | typedef std::vector<Chain_SP> Chains;
FILE: cola/libdialect/commontypes.h
function namespace (line 36) | namespace dialect {
FILE: cola/libdialect/constraints.cpp
function SepDir (line 57) | SepDir dialect::negateSepDir(SepDir sd) {
function CardinalDir (line 92) | CardinalDir dialect::sepDirToCardinalDir(SepDir sd) {
function SepDir (line 107) | SepDir dialect::cardinalDirToSepDir(CardinalDir dir) {
function SepDir (line 122) | SepDir dialect::lateralWeakening(SepDir sd) {
function SepDir (line 137) | SepDir dialect::cardinalStrengthening(SepDir sd) {
function CardinalDir (line 297) | CardinalDir SepPair::getCardinalDir(void) const {
function string (line 309) | string SepPair::writeTglf(std::map<id_type, unsigned> id2ext, const SepM...
function CardinalDir (line 519) | CardinalDir SepMatrix::getCardinalDir(id_type id1, id_type id2) const {
function string (line 855) | string SepMatrix::writeTglf(std::map<id_type, unsigned> id2ext) const {
function SepPair_SP (line 867) | SepPair_SP &SepMatrix::getSepPair(id_type id1, id_type id2) {
function SepPair_SP (line 891) | SepPair_SP SepMatrix::checkSepPair(id_type id1, id_type id2) const {
function string (line 953) | string SepMatrix::toString(void) const {
function CardinalDir (line 1015) | CardinalDir SepCo::getDirecRelativeToNode(Node_SP baseNode) const {
function Projection_SP (line 1054) | Projection_SP ProjSeq::nextProjection(void) {
function ProjSeq (line 1062) | ProjSeq &ProjSeq::operator+=(const ProjSeq &rhs) {
function ProjSeq (line 1069) | ProjSeq operator+(const ProjSeq &lhs, const ProjSeq &rhs) {
function SepCoSet (line 1075) | SepCoSet ProjSeq::getAllConstraints(void) const {
function string (line 1089) | string SepCo::toString(void) const {
function string (line 1102) | string Projection::toString(void) const {
function string (line 1112) | string ProjSeq::toString(void) const {
FILE: cola/libdialect/constraints.h
type class (line 48) | enum class
function SepDir (line 55) | enum class SepDir {
FILE: cola/libdialect/edges.cpp
function Edge_SP (line 49) | Edge_SP Edge::allocate(const Node_SP &src, const Node_SP &tgt) {
function Node_SP (line 60) | Node_SP Edge::getOtherEnd(const Node &end1) const {
function BoundingBox (line 81) | BoundingBox Edge::getBoundingBox(void) const {
function string (line 105) | string Edge::writeRouteTglf(void) const {
function string (line 131) | string Edge::writeSvg(void) const {
function string (line 154) | string Edge::writePolylineConnectorData(void) const {
function string (line 167) | string Edge::writeRoundedOrthoConnectorData(void) const {
FILE: cola/libdialect/expansion.cpp
function ExpansionGoal_SP (line 70) | ExpansionGoal_SP ExpansionManager::addGoalInDirec(CardinalDir dir) {
function ProjSeq_SP (line 186) | ProjSeq_SP ExpansionManager::extendProjSeq(ProjSeq_SP ps0) {
function ContainedSegment_SP (line 231) | ContainedSegment_SP ExpansionGoal::computeContainedSegment(bool ignoreCo...
function ProjSeq_SP (line 292) | ProjSeq_SP ExpansionGoal::tryExpansionRec(ProjSeq_SP ps0, std::deque<Exp...
FILE: cola/libdialect/expansion.h
function namespace (line 40) | namespace dialect {
type ContainedSegment (line 220) | struct ContainedSegment {
FILE: cola/libdialect/faces.cpp
function TreePlacements (line 218) | TreePlacements FaceSet::listAllPossibleTreePlacements(Tree_SP tree) {
function TreePlacements (line 237) | TreePlacements FaceSet::getAllTreePlacements(void) {
function CompassDirs (line 273) | CompassDirs Face::inwardDirsAvailable(Node_SP node) {
function CardinalDir (line 420) | CardinalDir Face::direc(const Node_SP &u, const Node_SP &v) {
function Sides (line 443) | Sides Face::getRelevantSidesForPlacement(TreePlacement_SP tp) const {
function ProjSeq_SP (line 483) | ProjSeq_SP Face::computeCollateralProjSeq(TreePlacement_SP tp, double pa...
function ProjSeq_SP (line 503) | ProjSeq_SP Face::doCollateralExpansion(TreePlacement_SP tp, double paddi...
function ProjSeq_SP (line 572) | ProjSeq_SP Face::buildBestProjSeq(TreePlacement_SP tp, double padding,
function Sides (line 614) | Sides Face::getAllSidesOppositeSegment(LineSegment &seg, bool openInterv...
function TreePlacements (line 623) | TreePlacements Face::getAllTreePlacements(void) const {
FILE: cola/libdialect/faces.h
function class (line 43) | class Side {
function NexusPolarity (line 164) | enum class NexusPolarity {
FILE: cola/libdialect/gen_bend_seq_lookup.py
function lookupMinimalBendSeqs (line 145) | def lookupMinimalBendSeqs(p, d0, d1):
function genLookup (line 188) | def genLookup():
function test1 (line 253) | def test1():
function writeCppModule (line 256) | def writeCppModule():
FILE: cola/libdialect/gen_qa_lookup.py
class Vect (line 79) | class Vect:
method __init__ (line 84) | def __init__(self, *args):
method __add__ (line 87) | def __add__(self,other):
method __repr__ (line 90) | def __repr__(self):
method invalid (line 97) | def invalid(self):
method height (line 106) | def height(self):
method binaryUsageCode (line 109) | def binaryUsageCode(self):
method missing (line 121) | def missing(self):
function enumerate (line 177) | def enumerate(d):
function writeCppArray (line 274) | def writeCppArray():
function writeCppModule (line 293) | def writeCppModule():
FILE: cola/libdialect/graphs.cpp
function BoundingBox (line 77) | BoundingBox operator+(const BoundingBox &lhs, const BoundingBox &rhs) {
function BoundingBox (line 91) | BoundingBox &BoundingBox::operator+=(const BoundingBox &rhs) {
function string (line 99) | string BoundingBox::repr(void) const {
function LineSegment_SP (line 103) | LineSegment_SP BoundingBox::buildSideSegment(CardinalDir side) const {
function Graph (line 142) | Graph &Graph::operator=(Graph other) {
function Node_SP (line 164) | Node_SP Graph::addNode(void) {
function Node_SP (line 170) | Node_SP Graph::addNode(double w, double h) {
function Node_SP (line 176) | Node_SP Graph::addNode(double cx, double cy, double w, double h) {
function Edge_SP (line 194) | Edge_SP Graph::addEdge(Node_SP src, Node_SP tgt) {
function Edge_SP (line 200) | Edge_SP Graph::addEdge(const id_type &srcID, const id_type &tgtID) {
function Nodes (line 289) | Nodes Graph::cloneNode(id_type id) {
function Node_SP (line 317) | Node_SP Graph::getNode(const id_type &id) const {
function NodesById (line 324) | NodesById Graph::getNodeLookupWithIgnore(const Nodes &ignore) const {
function NodesById (line 335) | NodesById Graph::getNodeLookupWithIgnore(const NodesById &ignore) const {
function BoundingBox (line 358) | BoundingBox Graph::getBoundingBox(const NodesById &ignore, bool includeB...
function string (line 513) | string Graph::writeTglf(bool useExternalIds) const {
function string (line 576) | string Graph::writeSvg(bool useExternalIds) const {
function ColaGraphRep (line 634) | ColaGraphRep &Graph::updateColaGraphRep(void) {
function string (line 944) | string Graph::writeId2Ix(void) const {
function string (line 950) | string Graph::writeIx2Id(void) const {
function NodesById (line 1214) | NodesById Graph::buildUniqueBendPoints(void) {
FILE: cola/libdialect/graphs.h
function namespace (line 49) | namespace dialect {
type ColaOptions (line 105) | struct ColaOptions {
type ColaGraphRep (line 157) | struct ColaGraphRep {
function const (line 169) | struct NodeIdCmp {
function class (line 180) | class Graph {
function class (line 737) | class Node {
function class (line 1030) | class Edge {
FILE: cola/libdialect/hola.h
function namespace (line 35) | namespace dialect {
FILE: cola/libdialect/io.cpp
function Graph_SP (line 50) | Graph_SP dialect::buildGraphFromTglf(std::string &s) {
function Graph_SP (line 58) | Graph_SP dialect::buildGraphFromTglf(istream &in) {
function Graph_SP (line 147) | Graph_SP dialect::buildGraphFromTglfFile(const string &filepath) {
FILE: cola/libdialect/io.h
function namespace (line 34) | namespace dialect {
FILE: cola/libdialect/logging.cpp
function string (line 76) | string Logger::writeFullPathForFilename(std::string name) {
FILE: cola/libdialect/logging.h
function namespace (line 33) | namespace dialect {
FILE: cola/libdialect/nearalign.cpp
function SepCo_SP (line 151) | SepCo_SP PotentialAlignment::writeSepCo(void) {
FILE: cola/libdialect/nearalign.h
function namespace (line 35) | namespace dialect {
type std (line 142) | typedef std::vector<PotentialAlignment*> PotentialAlignments;
FILE: cola/libdialect/nodeconfig.cpp
function Assignments (line 108) | Assignments OrthoHubLayout::getAssignmentsForNode(const Node_SP &node) c...
FILE: cola/libdialect/nodeconfig.h
function namespace (line 35) | namespace dialect {
FILE: cola/libdialect/nodes.cpp
function Node_SP (line 43) | Node_SP Node::allocate(void) {
function Node_SP (line 48) | Node_SP Node::allocate(double w, double h) {
function Node_SP (line 52) | Node_SP Node::allocate(double cx, double cy, double w, double h) {
function GhostNode_SP (line 56) | GhostNode_SP Node::makeGhost(void) const {
function dimensions (line 127) | dimensions Node::getHalfDimensions(void) const {
function dimensions (line 131) | dimensions Node::getDimensions(void) const {
function BoundingBox (line 139) | BoundingBox Node::getBoundingBox(void) const {
function Nodes (line 160) | Nodes Node::getNeighbours(void) const {
function Nodes (line 169) | Nodes Node::getNeighboursCwCyclic(void) const {
function Nodes (line 181) | Nodes Node::getChildren(void) const {
function Nodes (line 195) | Nodes GhostNode::getChildren(void) const {
function string (line 212) | string Node::writeSvg(bool useExternalId) const {
function Polygon (line 230) | Polygon Node::makeLibavoidPolygon(void) const {
function Point (line 248) | Point Node::getBoundaryCompassPt(CompassDir dir) const {
FILE: cola/libdialect/opts.h
type class (line 32) | enum class
type class (line 50) | enum class
function ExpansionEstimateMethod (line 62) | enum class ExpansionEstimateMethod {
FILE: cola/libdialect/ortho.cpp
function CompassDir (line 52) | CompassDir Compass::compassDirection(Avoid::Point p0, Avoid::Point p1) {
function CompassDir (line 69) | CompassDir Compass::compassDirection(std::shared_ptr<Node> u0, std::shar...
function CardinalDir (line 75) | CardinalDir Compass::cardinalDirection(Avoid::Point p0, Avoid::Point p1) {
function CardinalDir (line 85) | CardinalDir Compass::cardinalDirection(std::shared_ptr<Node> u0, std::sh...
function CardinalDirs (line 91) | CardinalDirs Compass::cardinalComponents(CompassDir d) {
function PlaneMap (line 104) | PlaneMap Compass::getRotationFunction(CardinalDir fromDir, CardinalDir t...
function InplacePlaneMap (line 124) | InplacePlaneMap Compass::getInplaceRotationFunction(CardinalDir fromDir,...
function Point (line 144) | Point Compass::vectorSigns(CompassDir d) {
function CardinalDir (line 232) | CardinalDir Compass::cardRotateCw90(CardinalDir d) {
function CardinalDir (line 236) | CardinalDir Compass::cardRotateAcw90(CardinalDir d) {
function CardinalDir (line 240) | CardinalDir Compass::cardFlip(CardinalDir d) {
function interval (line 288) | interval LineSegment::closedIntervalIntersection(double a, double b) con...
function interval (line 295) | interval LineSegment::openIntervalIntersection(double a, double b) const {
FILE: cola/libdialect/ortho.h
function namespace (line 42) | namespace dialect {
FILE: cola/libdialect/peeling.cpp
function PeeledNode_SP (line 92) | PeeledNode_SP dialect::identifyRootNode(const Graph &graph) {
function NodesById (line 128) | NodesById NodeBuckets::takeLeaves(void) {
function Trees (line 168) | Trees dialect::peel(Graph &G) {
FILE: cola/libdialect/peeling.h
function namespace (line 34) | namespace dialect {
type Stem (line 87) | struct Stem {
type NodeBuckets (line 101) | struct NodeBuckets {
FILE: cola/libdialect/planarise.cpp
function NodeGroups (line 223) | NodeGroups OrthoPlanariser::computeNodeGroups(EdgeSegments segs) {
function Nodes (line 285) | Nodes OrthoPlanariser::computeCrossings(void) {
FILE: cola/libdialect/planarise.h
function namespace (line 36) | namespace dialect {
FILE: cola/libdialect/quadaction.cpp
function Assignment (line 80) | Assignment Assignment::makeUnion(const Assignment &other) const {
function string (line 95) | string Assignment::toString() const {
function Assignment (line 134) | Assignment Quad::constructAssignmentForAction(char action) const {
function Assignment_SP (line 203) | Assignment_SP Arrangement::getBasicAssignment() const {
function Assignment_SP (line 209) | Assignment_SP Arrangement::getAssignmentForQuadAction(std::string quadAc...
function Assignments (line 222) | Assignments Arrangement::computeNAssignments(unsigned N) const {
function Assignments (line 287) | Assignments Arrangement::computeAllAssignments() const {
FILE: cola/libdialect/quadaction.h
function namespace (line 33) | namespace dialect {
type Arrangement (line 181) | struct Arrangement {
FILE: cola/libdialect/routing.cpp
function CardinalDir (line 218) | CardinalDir LeaflessOrthoRouter::departureDir(const Edge_SP &e, const No...
FILE: cola/libdialect/routing.h
function namespace (line 40) | namespace dialect {
FILE: cola/libdialect/sides.cpp
function CardinalDir (line 69) | CardinalDir Side::getForwardDirec(void) const {
function Node_SP (line 73) | Node_SP Side::firstNode(void) const {
function Node_SP (line 78) | Node_SP Side::lastNode(void) const {
function ProjSeq_SP (line 104) | ProjSeq_SP Side::computeCollateralProjSeq(TreePlacement_SP tp, double pa...
function interval (line 214) | interval Side::closedInterval(void) const {
function interval (line 224) | interval Side::getIntervalOppositeSegment(LineSegment &seg, bool openInt...
FILE: cola/libdialect/tests/aca.cpp
function main (line 50) | int main(void) {
FILE: cola/libdialect/tests/assignments.cpp
function main (line 41) | int main(void) {
FILE: cola/libdialect/tests/bbox.cpp
function main (line 38) | int main(void) {
FILE: cola/libdialect/tests/bendcosts.cpp
function main (line 44) | int main(void) {
FILE: cola/libdialect/tests/chainconfig01.cpp
function main (line 47) | int main(void) {
FILE: cola/libdialect/tests/chainconfig02.cpp
function main (line 46) | int main(void) {
FILE: cola/libdialect/tests/chainconfig03.cpp
function main (line 51) | int main(void) {
FILE: cola/libdialect/tests/chainsandcycles.cpp
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/cmplayout01.cpp
function main (line 34) | int main(void) {
FILE: cola/libdialect/tests/collateralexpand01.cpp
function nodes2ids (line 49) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 55) | int main(void) {
FILE: cola/libdialect/tests/collateralexpand02.cpp
function nodes2ids (line 49) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 55) | int main(void) {
FILE: cola/libdialect/tests/conncomps.cpp
function main (line 36) | int main(void) {
FILE: cola/libdialect/tests/containedsegment01.cpp
function nodes2ids (line 52) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 58) | int main(void) {
FILE: cola/libdialect/tests/destress.cpp
function main (line 36) | int main(void) {
FILE: cola/libdialect/tests/destress02.cpp
function main (line 36) | int main(void) {
FILE: cola/libdialect/tests/destress_aca.cpp
function main (line 50) | int main(void) {
FILE: cola/libdialect/tests/expand01.cpp
function nodes2ids (line 49) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 55) | int main(void) {
FILE: cola/libdialect/tests/expand02.cpp
function nodes2ids (line 49) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 55) | int main(void) {
FILE: cola/libdialect/tests/expand03.cpp
function main (line 50) | int main(void) {
FILE: cola/libdialect/tests/expand04.cpp
function main (line 51) | int main(void) {
FILE: cola/libdialect/tests/expand05.cpp
function main (line 51) | int main(void) {
FILE: cola/libdialect/tests/expand06.cpp
function main (line 52) | int main(void) {
FILE: cola/libdialect/tests/expand07.cpp
function main (line 52) | int main(void) {
FILE: cola/libdialect/tests/expand08.cpp
function main (line 51) | int main(void) {
FILE: cola/libdialect/tests/expand09.cpp
function main (line 51) | int main(void) {
FILE: cola/libdialect/tests/extrabdrygap.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/faceset01.cpp
function nodes2ids (line 45) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 51) | int main(void) {
FILE: cola/libdialect/tests/faceset02.cpp
function nodes2ids (line 48) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 54) | int main(void) {
FILE: cola/libdialect/tests/graphs/random/makeCorpus.py
function genNM (line 5) | def genNM():
FILE: cola/libdialect/tests/hola10.cpp
function main (line 37) | int main(void) {
FILE: cola/libdialect/tests/hola11.cpp
function main (line 37) | int main(void) {
FILE: cola/libdialect/tests/hola12.cpp
function main (line 37) | int main(void) {
FILE: cola/libdialect/tests/holaRand.cpp
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/hola_arpa.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_belnet.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_cernet.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_claranet.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_garr.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_janetlense.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_slovakia.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/hola_tree.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/holalonenode.cpp
function main (line 41) | int main(void) {
FILE: cola/libdialect/tests/holametro01.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/holasbgn01.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/holasbgn02.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/holasbgn03.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/holasbgn04.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/inserttrees01.cpp
function main (line 50) | int main(void) {
FILE: cola/libdialect/tests/leaflessroute01.cpp
function main (line 42) | int main(void) {
FILE: cola/libdialect/tests/leaflessroute02.cpp
function addBendsToGraph (line 42) | void addBendsToGraph(NodesById bends, Graph_SP G) {
function main (line 49) | int main(void) {
FILE: cola/libdialect/tests/lookupqas.cpp
function main (line 37) | int main(void) {
FILE: cola/libdialect/tests/nbroctal.cpp
function main (line 30) | int main(void) {
FILE: cola/libdialect/tests/nearalign01.cpp
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/nearalign02.cpp
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/nearby.cpp
function main (line 42) | int main(void) {
FILE: cola/libdialect/tests/negativesepco.cpp
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/negativezero.cpp
function test (line 34) | void test(string msg, bool test) {
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/nodeconfig01.cpp
function main (line 40) | int main(void) {
FILE: cola/libdialect/tests/nudgeopt.cpp
function checkCoords (line 54) | vector<double> checkCoords(Graph_SP graph) {
function main (line 89) | int main(void) {
FILE: cola/libdialect/tests/partition01.cpp
function main (line 39) | int main() {
FILE: cola/libdialect/tests/peel.cpp
function main (line 44) | int main(void) {
FILE: cola/libdialect/tests/planarise01.cpp
function main (line 39) | int main(void) {
FILE: cola/libdialect/tests/planarise02.cpp
function main (line 39) | int main(void) {
FILE: cola/libdialect/tests/projseq01.cpp
function main (line 42) | int main(void) {
FILE: cola/libdialect/tests/readconstraints.cpp
function main (line 33) | int main(void) {
FILE: cola/libdialect/tests/rotate01.cpp
function main (line 40) | int main(void) {
FILE: cola/libdialect/tests/rotate02.cpp
function main (line 40) | int main(void) {
FILE: cola/libdialect/tests/rotate03.cpp
function main (line 40) | int main(void) {
FILE: cola/libdialect/tests/rotate04.cpp
function main (line 42) | int main(void) {
FILE: cola/libdialect/tests/routing01.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/tests/sep_matrix_iter.cpp
function main (line 100) | int main(void) {
FILE: cola/libdialect/tests/solidify.cpp
function main (line 43) | int main(void) {
FILE: cola/libdialect/tests/symmtree.cpp
function main (line 41) | int main(void) {
FILE: cola/libdialect/tests/tglf01.cpp
function main (line 30) | int main(void) {
FILE: cola/libdialect/tests/treeboxes01.cpp
function nodes2ids (line 48) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 54) | int main(void) {
FILE: cola/libdialect/tests/treeplacement01.cpp
function nodes2ids (line 48) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 54) | int main(void) {
FILE: cola/libdialect/tests/treeplacement02.cpp
function nodes2ids (line 48) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 54) | int main(void) {
FILE: cola/libdialect/tests/treeplacement03.cpp
function nodes2ids (line 48) | vector<id_type> nodes2ids(Nodes nodes) {
function main (line 54) | int main(void) {
FILE: cola/libdialect/tests/trees.cpp
function main (line 41) | int main(void) {
FILE: cola/libdialect/tests/trees2.cpp
function main (line 41) | int main(void) {
FILE: cola/libdialect/tests/vpsc01.cpp
function main (line 35) | int main(void) {
FILE: cola/libdialect/treeplacement.cpp
function FaceSet_SP (line 54) | FaceSet_SP dialect::reattachTrees(Graph_SP core, Trees trees, HolaOpts o...
function TreePlacement_SP (line 112) | TreePlacement_SP dialect::chooseBestPlacement(TreePlacements tps, HolaOp...
function Node_SP (line 218) | Node_SP TreePlacement::buildTreeBox(double padding) const {
FILE: cola/libdialect/treeplacement.h
function namespace (line 44) | namespace dialect {
function recordBoxNode (line 132) | void recordBoxNode(Node_SP &boxNode) { m_boxNode = boxNode; }
function hasBoxNode (line 135) | bool hasBoxNode(void) { return m_boxNode != nullptr; }
function Node_SP (line 138) | Node_SP getBoxNode(void) { return m_boxNode; }
function size (line 178) | size_t size(void) const { return m_tree->size(); }
function setRootAligns (line 183) | void setRootAligns(vpsc::Dim dim, std::set<id_type> &idSet) { m_rootAlig...
FILE: cola/libdialect/trees.cpp
function Trees (line 427) | Trees Tree::getCTrees(void) const {
function Node_SP (line 581) | Node_SP Tree::buildRootlessBox(CardinalDir growthDir) const {
FILE: cola/libdialect/trees.h
function namespace (line 42) | namespace dialect {
FILE: cola/libdialect/util.h
function namespace (line 43) | namespace dialect {
function string (line 64) | string string_format( const std::string& format, Args ... args )
function addObject (line 144) | void addObject(double x, double y, T obj) {
function T (line 159) | T findObject(double x, double y) {
FILE: cola/libproject/project.cpp
type project (line 68) | namespace project {
function solve (line 75) | bool solve(Variables& vs, Constraints& cs) {
function compute_dfdv (line 126) | double compute_dfdv(Variable const* v, Constraint const* last) {
type MaxSafeMove (line 237) | struct MaxSafeMove : unary_function<Constraint*,void> {
method MaxSafeMove (line 238) | MaxSafeMove(Constraint *&c, double &alpha) : c(c), alpha(alpha) { }
function ostream (line 296) | ostream& operator <<(ostream &os, const Variable* &v) {
function ostream (line 303) | ostream& operator <<(ostream &os, const Block &b) {
function cmpLagrangians (line 349) | bool cmpLagrangians(Constraint* a,Constraint* b) { return a->lm < b->l...
function ostream (line 350) | ostream& operator <<(ostream &os, const Constraints &cs) {
FILE: cola/libproject/project.h
function namespace (line 37) | namespace project {
type vector (line 134) | typedef vector<Variable*> Variables;
function class (line 138) | class Constraint {
type list (line 178) | typedef list<Block*> Blocks;
function class (line 182) | class Block {
type ExternalAlphaCheck (line 228) | struct ExternalAlphaCheck {
type MaxSafeMove (line 233) | struct MaxSafeMove
function class (line 239) | class Project : private Uncopyable {
FILE: cola/libproject/project_log.h
function namespace (line 38) | namespace project {
function class (line 119) | class Output2FILE
function FILE (line 126) | inline FILE*& Output2FILE::Stream()
function Output (line 132) | inline void Output2FILE::Output(const std::string& msg)
function std (line 169) | inline std::string NowTime()
function std (line 187) | inline std::string NowTime()
FILE: cola/libproject/tests/quadprogpp/QuadProg++.cc
function solve_quadprog (line 74) | double solve_quadprog(double *G[], double g0[], int n,
function compute_d (line 439) | void compute_d(double d[], double *J[], double np[], int n)
function update_z (line 454) | void update_z(double z[], double *J[], double d[], int n, int iq)
function update_r (line 467) | void update_r(double *R[], double r[], double d[], int n, int iq)
function add_constraint (line 482) | bool add_constraint(double *R[], double *J[], double d[], int n, int& iq...
function delete_constraint (line 547) | void delete_constraint(double *R[], double *J[], int A[], double u[], in...
function distance (line 625) | double distance(double a, double b)
function scalar_product (line 645) | double scalar_product(double *x, double *y, int n)
function cholesky_decomposition (line 656) | void cholesky_decomposition(double *A[], int n)
function cholesky_solve (line 686) | void cholesky_solve(double *L[], double x[], double b[], int n)
function forward_elimination (line 697) | void forward_elimination(double *L[], double y[], double b[], int n)
function backward_elimination (line 711) | void backward_elimination(double *U[], double x[], double y[], int n)
function print_matrix (line 725) | void print_matrix(char* name, double *A[], int n)
function print_rmatrix (line 743) | void print_rmatrix(char* name, double *A[], int n, int m)
function print_vector (line 762) | void print_vector(char* name, double v[], int n)
function print_ivector (line 778) | void print_ivector(char* name, int v[], int n)
FILE: cola/libproject/tests/quadprogpp/QuadProg++.h
function MatrixStorage (line 86) | struct MatrixStorage {
function v (line 104) | v(v) {
FILE: cola/libproject/tests/quadprogpp/main.cc
function main (line 54) | int main (int argc, char *const argv[]) {
FILE: cola/libproject/tests/random.cpp
function randomProblem (line 52) | void randomProblem(string& name, Variables &vs, Constraints &cs) {
function main (line 83) | int main() {
FILE: cola/libproject/tests/simple.cpp
function simple1 (line 47) | void simple1() {
function simple2 (line 78) | void simple2() {
function main (line 100) | int main() {
FILE: cola/libproject/tests/static.cpp
function t1 (line 42) | void t1(string& name, Variables &vs, Constraints &cs) {
function t2 (line 54) | void t2(string& name, Variables &vs, Constraints &cs) {
function t3 (line 66) | void t3(string& name, Variables& vs, Constraints &cs) {
function t4 (line 81) | void t4(string& name, Variables& vs, Constraints &cs) {
function t5 (line 91) | void t5(string& name, Variables& vs, Constraints &cs) {
function main (line 118) | int main() {
FILE: cola/libproject/tests/testutil.cpp
function qps (line 61) | void qps(Variables &vs, Constraints &cs, vector<double> &result) {
function feasible (line 101) | bool feasible(Constraints &cs) {
function printProblem (line 116) | void printProblem(Variables &vs,
function getRand (line 145) | double getRand(const double max) {
function approxEquals (line 153) | bool approxEquals(double a, double b) {
function test (line 161) | void test(void (*t)(string&, Variables&, Constraints&), bool silentPass) {
FILE: cola/libproject/tests/testutil.h
type std (line 58) | typedef std::map<const project::Variable*,unsigned> VMap;
FILE: cola/libproject/tests/treeqp.cpp
function treeQPSolve (line 45) | void treeQPSolve(Terms &ts, EqualityConstraints &ecs, InequalityConstrai...
FILE: cola/libproject/tests/treeqptest.cpp
function main (line 32) | int main() {
FILE: cola/libproject/util.cpp
type project (line 25) | namespace project {
function approx_equals (line 27) | bool approx_equals(double a, double b) {
FILE: cola/libproject/util.h
function namespace (line 51) | namespace project {
FILE: cola/libproject/variable.h
function namespace (line 22) | namespace project {
FILE: cola/libtopology/cola_topology_addon.cpp
type topology (line 39) | namespace topology {
function reduceRange (line 130) | static void reduceRange(double& val)
FILE: cola/libtopology/cola_topology_addon.h
function namespace (line 34) | namespace topology {
FILE: cola/libtopology/compute_forces.cpp
type topology (line 37) | namespace topology {
function len (line 47) | static double len(const EdgePoint* u, const EdgePoint* v,
function gRule1 (line 56) | static double gRule1(vpsc::Dim dim, const EdgePoint* a, const EdgePoin...
function gRule2 (line 64) | static double gRule2(vpsc::Dim dim, const EdgePoint* a, const EdgePoin...
function hRuleD1 (line 79) | static double hRuleD1(vpsc::Dim dim, const EdgePoint* u, const EdgePoi...
function hRuleD2 (line 89) | static double hRuleD2(vpsc::Dim dim, const EdgePoint* u, const EdgePoi...
function hRule2 (line 106) | static double hRule2(vpsc::Dim dim, const EdgePoint* u, const EdgePoin...
function hRule3 (line 124) | static double hRule3(vpsc::Dim dim, const EdgePoint* u, const EdgePoin...
function hRule4 (line 142) | static double hRule4(vpsc::Dim dim, const EdgePoint* a, const EdgePoin...
function hRule56 (line 157) | static double hRule56(vpsc::Dim dim, const EdgePoint* u, const EdgePoi...
function hRule7 (line 177) | static double hRule7(vpsc::Dim dim, const EdgePoint* a, const EdgePoin...
function hRule8 (line 198) | static double hRule8(vpsc::Dim dim, const EdgePoint* u, const EdgePoin...
type SparseMapMap (line 227) | struct SparseMapMap {
method SparseMapMap (line 229) | SparseMapMap(cola::SparseMap &H) : H(H) {}
type ArrayMap (line 238) | struct ArrayMap {
method ArrayMap (line 240) | ArrayMap(valarray<T>& a) : a(a) {}
FILE: cola/libtopology/orthogonal_topology.cpp
type topology (line 57) | namespace topology {
class CmpIndexes (line 65) | class CmpIndexes
method CmpIndexes (line 68) | CmpIndexes(ConnRef *conn, size_t dim)
class LayoutEdgeSegmentSeparation (line 84) | class LayoutEdgeSegmentSeparation
class LayoutEdgeSegment (line 104) | class LayoutEdgeSegment : public ShiftSegment
method LayoutEdgeSegment (line 108) | LayoutEdgeSegment(ConnRef *conn, const size_t low, const size_t high,
method LayoutEdgeSegment (line 126) | LayoutEdgeSegment(ConnRef *conn, const size_t low, const size_t high,
method Point (line 146) | Point& lowPoint(void)
method Point (line 150) | Point& highPoint(void)
method Point (line 154) | const Point& lowPoint(void) const
method Point (line 158) | const Point& highPoint(void) const
method nudgeDistance (line 162) | double nudgeDistance(void) const
method immovable (line 166) | bool immovable(void) const
method createSolverVariable (line 170) | void createSolverVariable(void)
method overlapsWith (line 181) | bool overlapsWith(const ShiftSegment *rhs, const size_t dim) const
method updatePositionsFromSolver (line 188) | void updatePositionsFromSolver(void)
method fixedOrder (line 201) | int fixedOrder(bool& isFixed) const
method order (line 223) | int order(void) const
method zigzag (line 235) | bool zigzag(void) const
method lowC (line 250) | bool lowC(void) const
method highC (line 261) | bool highC(void) const
class LayoutObstacle (line 275) | class LayoutObstacle
method LayoutObstacle (line 278) | LayoutObstacle()
method LayoutObstacle (line 284) | LayoutObstacle(ShapeRef *shape, const size_t dim)
method LayoutObstacle (line 294) | LayoutObstacle(JunctionRef *junction, const size_t dim)
method ShapeRef (line 306) | ShapeRef *shape(void) const
method JunctionRef (line 310) | JunctionRef *junction(void) const
method halfSizeInDim (line 314) | double halfSizeInDim(const size_t dim)
method centreX (line 318) | double centreX(void) const
method centreY (line 322) | double centreY(void) const
method Point (line 326) | Point centre(void) const
method Point (line 330) | Point shapeCentre(void) const
method createSolverVariable (line 335) | void createSolverVariable(void)
method updatePositionsFromSolver (line 345) | void updatePositionsFromSolver(void)
class LayoutNode (line 374) | class LayoutNode : public Node
method LayoutNode (line 377) | LayoutNode(LayoutObstacle *layObstacle, const double position)
type ScanVisDirFlag (line 390) | enum ScanVisDirFlag {
type PosVertInf (line 398) | struct PosVertInf
method PosVertInf (line 400) | PosVertInf(double p, VertInf *vI, ScanVisDirFlags d = VisDirNone)
class LineSegment (line 441) | class LineSegment
method LineSegment (line 444) | LineSegment(const double& b, const double& f, const double& p,
method LineSegment (line 455) | LineSegment(const double& bf, const double& p, VertInf *bfvi = nullptr)
method overlaps (line 483) | bool overlaps(const LineSegment& rhs) const
function insideLayoutObstacleBounds (line 522) | static bool insideLayoutObstacleBounds(const Point& point,
type LayoutScanlineCmpNodePos (line 551) | struct LayoutScanlineCmpNodePos
function processLayoutConstraintEvent (line 590) | static void processLayoutConstraintEvent(LayoutScanlineNodeSet& scanline,
class EndpointAnchorInMoveDir (line 942) | class EndpointAnchorInMoveDir
method EndpointAnchorInMoveDir (line 945) | EndpointAnchorInMoveDir(size_t dimension, ConnRef *connRef,
method updatePosition (line 956) | void updatePosition(const LayoutObstacleVector& obstacleVector)
function buildOrthogonalLayoutSegments (line 972) | static void buildOrthogonalLayoutSegments(Router *router,
function setupOrthogonalLayoutConstraints (line 1223) | static void setupOrthogonalLayoutConstraints(Router *router,
function simplifyOrthogonalRoutes (line 1576) | static void simplifyOrthogonalRoutes(Router *router)
class CmpLineOrder (line 1593) | class CmpLineOrder
method CmpLineOrder (line 1596) | CmpLineOrder(PtOrderMap& ord, const size_t dim)
FILE: cola/libtopology/orthogonal_topology.h
function namespace (line 27) | namespace topology {
FILE: cola/libtopology/resize.cpp
type topology (line 27) | namespace topology {
function feach (line 37) | void feach(Container& c, Op op) {
type TransformNode (line 49) | struct TransformNode {
method TransformNode (line 50) | TransformNode(vpsc::Dim dim, const Rectangles& targets,
method Node (line 58) | Node* operator() (Node* u) {
type CreateLeftRightDummyNodes (line 82) | struct CreateLeftRightDummyNodes
method CreateLeftRightDummyNodes (line 84) | CreateLeftRightDummyNodes(vpsc::Dim dim, const Rectangles& targets,
type SubstituteNodes (line 132) | struct SubstituteNodes
method SubstituteNodes (line 134) | SubstituteNodes(vpsc::Dim dim, ResizeMap& resizes, const Nodes& tn)
type Pos (line 146) | enum Pos {LHS, RHS, CEN}
type RevertNodes (line 183) | struct RevertNodes {
method RevertNodes (line 184) | RevertNodes(Nodes& orig)
type CopyPositions (line 194) | struct CopyPositions {
method CopyPositions (line 195) | CopyPositions(vpsc::Dim dim, const Nodes& tn, const ResizeMap& rm)
type DeleteTempNode (line 215) | struct DeleteTempNode {
function approx_equals (line 222) | bool approx_equals(double a, double b) {
function checkDesired (line 225) | static bool checkDesired(vpsc::Dim dim, const Nodes& nodes,
function checkFinal (line 257) | static bool checkFinal(vpsc::Dim dim, const Nodes& nodes,
function resizeAxis (line 297) | static void resizeAxis(vpsc::Dim dim, const Rectangles& targets,
type CreateTargetRect (line 355) | struct CreateTargetRect {
method CreateTargetRect (line 356) | CreateTargetRect(ResizeMap& resizes, set<unsigned>& fixed) : resizes...
method Rectangle (line 357) | Rectangle* operator() (Node* v) {
function applyResizes (line 385) | void applyResizes(Nodes& nodes, Edges& edges, RootCluster *clusters,
FILE: cola/libtopology/tests/beautify.cpp
function makeEdge (line 81) | void makeEdge(unsigned u, unsigned v,
function random_dag (line 86) | vector<Edge> random_dag(unsigned depth, unsigned maxbranch, unsigned &V,
function removeoverlaps (line 132) | void removeoverlaps(vpsc::Rectangles &rs, bool bothaxes) {
function makeFeasible (line 204) | void makeFeasible(vpsc::Rectangles& rs, vector<cola::Edge>& edges,
function main (line 283) | int main() {
FILE: cola/libtopology/tests/kamada.cpp
function makeEdge (line 62) | void makeEdge(Edges& es,EdgePoints& eps) {
function split (line 66) | void split() {
function main (line 220) | int main() {
FILE: cola/libtopology/tests/nodedragging.cpp
function addToPath (line 57) | void addToPath(topology::EdgePoints& ps, topology::Node *v, topology::Ed...
type Test (line 60) | struct Test : TestConvergence {
method Test (line 61) | Test(const double d,const unsigned i,topology::Nodes& vs, topology::Ed...
function nodeDragging (line 78) | void nodeDragging() {
function main (line 129) | int main() {
FILE: cola/libtopology/tests/nooverlap.cpp
type Create (line 53) | struct Create {
method Create (line 54) | Create() : ctr(0) {}
method Node (line 55) | Node* operator() (vpsc::Rectangle* r) {
function testRectangles (line 61) | void testRectangles(vpsc::Rectangles& rs) {
function testCase (line 73) | void testCase() {
function randomTest (line 109) | void randomTest(vpsc::Dim dim) {
function main (line 157) | int main() {
FILE: cola/libtopology/tests/orthogonalOpt.cpp
function main (line 6) | int main(void) {
FILE: cola/libtopology/tests/simple_bend.cpp
function test1 (line 47) | void test1(Nodes& vs, EdgePoints& ps, cola::DesiredPositionsInDim& d, st...
function test2 (line 56) | void test2(Nodes& vs, EdgePoints& ps, cola::DesiredPositionsInDim& d, st...
function test3 (line 65) | void test3(Nodes& vs, EdgePoints& ps, cola::DesiredPositionsInDim& d, st...
function test4 (line 74) | void test4(Nodes& vs, EdgePoints& ps, cola::DesiredPositionsInDim& d, st...
function test5 (line 108) | void test5(Nodes& vs, EdgePoints& ps, cola::DesiredPositionsInDim& d, st...
function simple (line 125) | void simple(void test(Nodes&, EdgePoints&, cola::DesiredPositionsInDim&,...
function main (line 177) | int main() {
FILE: cola/libtopology/tests/split.cpp
function split (line 62) | void split() {
function main (line 117) | int main() {
FILE: cola/libtopology/tests/test.h
function generateRandomRects (line 35) | void generateRandomRects(unsigned n, vpsc::Rectangles &rs) {
type delete_node (line 60) | struct delete_node {
function addToPath (line 66) | void addToPath(EdgePoints& ps, topology::Node *v, topology::EdgePoint::R...
function noRectOverlaps (line 70) | void noRectOverlaps(const vpsc::Rectangles& rs) {
function writeFile (line 83) | void writeFile(const topology::Nodes& vs, const Edges& es, const string&...
function check (line 114) | void check(const TopologyConstraints& t, valarray<double>& g, cola::Spar...
function setVariableDesiredPositions (line 127) | void setVariableDesiredPositions(vpsc::Variables& vs, const cola::Desire...
function dotProd (line 143) | inline double dotProd(valarray<double> x, valarray<double> y) {
function computeStepSize (line 151) | double computeStepSize(
FILE: cola/libtopology/tests/triangle.cpp
type TestCase (line 62) | struct TestCase {
method TestCase (line 71) | TestCase() : dim(vpsc::HORIZONTAL), iterations(10) { }
method run (line 73) | void run() {
method setGradient (line 108) | void setGradient(double* gradient) {
method Node (line 115) | Node* addNode(double x, double y, double w, double h) {
method addEdge (line 122) | void addEdge(double idealLength) {
method addDesired (line 127) | void addDesired(unsigned vid, double pos) {
method addToPath (line 130) | void addToPath(unsigned vid, topology::EdgePoint::RectIntersect i) {
function case1 (line 134) | void case1(TestCase& t) {
function case2 (line 150) | void case2(TestCase& t) {
function case3 (line 167) | void case3(TestCase& t) {
function case4 (line 184) | void case4(TestCase& t) {
function case5 (line 203) | void case5(TestCase& t) {
function triangle (line 224) | void triangle(void tcase(TestCase&)) {
function main (line 231) | int main() {
FILE: cola/libtopology/topology_constraints.cpp
type topology (line 30) | namespace topology {
function ostream (line 91) | ostream& operator<< (ostream& os, const TriConstraint& c) {
function string (line 127) | string BendConstraint::toString() const {
type transferStraightConstraintChoose (line 146) | struct transferStraightConstraintChoose {
method transferStraightConstraintChoose (line 154) | transferStraightConstraintChoose(Segment* target1, Segment* target2,
function sameCorner (line 206) | bool sameCorner(const EdgePoint* a, const EdgePoint* b) {
function zigzag (line 213) | bool zigzag(const EdgePoint* a, const Segment* s) {
function zagzig (line 220) | bool zagzig(const EdgePoint* a, const Segment* s) {
function string (line 280) | string StraightConstraint::
type buildRoute (line 286) | struct buildRoute {
method buildRoute (line 287) | buildRoute(straightener::Route* r, unsigned& n) : r(r), n(n) {}
type PrintEdgePoint (line 302) | struct PrintEdgePoint {
type ComputeStress (line 394) | struct ComputeStress {
function computeStress (line 411) | double computeStress(const Edges& es) {
FILE: cola/libtopology/topology_constraints.h
function namespace (line 36) | namespace vpsc {
function namespace (line 42) | namespace cola {
function class (line 60) | class TriConstraint {
function class (line 124) | class BendConstraint : public TopologyConstraint {
function class (line 142) | class StraightConstraint : public TopologyConstraint {
type ResizeInfo (line 220) | struct ResizeInfo {
FILE: cola/libtopology/topology_constraints_constructor.cpp
type topology (line 42) | namespace topology {
type SegmentOpen (line 43) | struct SegmentOpen
method SegmentOpen (line 210) | SegmentOpen(vpsc::Dim dim, Segment *s)
method process (line 216) | void process(OpenNodes& openNodes, OpenSegments& openSegments)
method string (line 222) | string toString() {
type NodeOpen (line 44) | struct NodeOpen
method NodeOpen (line 93) | NodeOpen(vpsc::Dim dim, Node *node)
method process (line 98) | void process(OpenNodes& openNodes, OpenSegments& openSegments)
method string (line 125) | string toString() {
type Event (line 52) | struct Event {
method Event (line 58) | Event(bool open, double pos) : open(open), pos(pos), scanDim(vpsc::U...
type NodeEvent (line 71) | struct NodeEvent : Event {
method NodeEvent (line 73) | NodeEvent(bool open, double pos, Node *v)
type NodeOpen (line 90) | struct NodeOpen : NodeEvent {
method NodeOpen (line 93) | NodeOpen(vpsc::Dim dim, Node *node)
method process (line 98) | void process(OpenNodes& openNodes, OpenSegments& openSegments)
method string (line 125) | string toString() {
type NodeClose (line 137) | struct NodeClose : NodeEvent {
method NodeClose (line 143) | NodeClose(vpsc::Dim dim, Node* node, NodeOpen* o, vpsc::Constraints&...
method createNonOverlapConstraint (line 151) | void createNonOverlapConstraint(const Node* left, const Node* right)
method process (line 169) | void process(OpenNodes& openNodes, OpenSegments& openSegments)
method string (line 190) | string toString() {
type SegmentEvent (line 199) | struct SegmentEvent : Event {
method SegmentEvent (line 201) | SegmentEvent(vpsc::Dim dim, bool open, EdgePoint* v, Segment *s)
type SegmentOpen (line 207) | struct SegmentOpen : SegmentEvent {
method SegmentOpen (line 210) | SegmentOpen(vpsc::Dim dim, Segment *s)
method process (line 216) | void process(OpenNodes& openNodes, OpenSegments& openSegments)
method string (line 222) | string toString() {
type SegmentClose (line 231) | struct SegmentClose : SegmentEvent {
method SegmentClose (line 234) | SegmentClose(vpsc::Dim dim, Segment *s, SegmentOpen* so)
method process (line 240) | void process(OpenNodes& openNodes, OpenSegments& openSegments)
method string (line 248) | string toString() {
type CompareEvents (line 288) | struct CompareEvents {
type CreateBendConstraints (line 492) | struct CreateBendConstraints
method CreateBendConstraints (line 494) | CreateBendConstraints(vpsc::Dim dim)
type CreateSegmentEvents (line 503) | struct CreateSegmentEvents
method CreateSegmentEvents (line 505) | CreateSegmentEvents(vector<Event*>& events, vpsc::Dim dim)
type GetVariable (line 545) | struct GetVariable {
function getVariables (line 550) | void getVariables(Nodes& ns, vpsc::Variables& vs) {
function validTurn (line 555) | inline bool validTurn(EdgePoint* u, EdgePoint* v, EdgePoint* w) {
type PruneDegenerate (line 571) | struct PruneDegenerate {
method PruneDegenerate (line 572) | PruneDegenerate(vpsc::Dim dim, list<EdgePoint*>& pruneList)
function recCreateTopologyClusterNodes (line 605) | static void recCreateTopologyClusterNodes(cola::Cluster *cluster,
FILE: cola/libtopology/topology_graph.cpp
type topology (line 38) | namespace topology {
function setNodeVariables (line 40) | void setNodeVariables(Nodes& ns, std::vector<vpsc::Variable*>& vs) {
function Segment (line 83) | Segment* EdgePoint::prune(vpsc::Dim scanDim) {
function normalise (line 190) | inline void normalise(double& x, double& y) {
type copyEdgePointsToRoute (line 357) | struct copyEdgePointsToRoute {
method copyEdgePointsToRoute (line 358) | copyEdgePointsToRoute(straightener::Route* r) : x(r->xs), y(r->ys) {}
type accumulateLength (line 370) | struct accumulateLength {
method accumulateLength (line 371) | accumulateLength(double& a) : a(a) {}
type PointToString (line 386) | struct PointToString {
method PointToString (line 387) | PointToString(stringstream& ss) : ss(ss) {}
type SegmentToString (line 393) | struct SegmentToString {
method SegmentToString (line 394) | SegmentToString(stringstream& ss) : ss(ss) {}
function string (line 400) | string Segment::toString() const {
function string (line 406) | string Edge::toString() const {
type buildPath (line 413) | struct buildPath {
method buildPath (line 414) | buildPath(ConstEdgePoints& vs) : vs(vs) {}
function assertConvexBends (line 428) | bool assertConvexBends(const Edges& es) {
type NoIntersection (line 433) | struct NoIntersection {
method NoIntersection (line 434) | NoIntersection(const Nodes& vs) : vs(vs) {}
function assertNoSegmentRectIntersection (line 476) | bool assertNoSegmentRectIntersection(
function assertNoZeroLengthEdgeSegments (line 483) | bool assertNoZeroLengthEdgeSegments(const Edges& es) {
function printEdges (line 489) | void printEdges(const Edges& es) {
FILE: cola/libtopology/topology_graph.h
function namespace (line 36) | namespace vpsc {
function namespace (line 39) | namespace straightener {
function namespace (line 42) | namespace topology {
function pathLength (line 504) | double pathLength() const;
type std (line 531) | typedef std::vector<Edge *> Edges;
function crossProduct (line 539) | inline double crossProduct(
FILE: cola/libtopology/topology_log.h
function namespace (line 36) | namespace topology {
function class (line 123) | class Output2FILE
function FILE (line 130) | inline FILE*& Output2FILE::Stream()
function Output (line 136) | inline void Output2FILE::Output(const std::string& msg)
function std (line 178) | inline std::string NowTime()
function std (line 196) | inline std::string NowTime()
FILE: cola/libtopology/util.h
function namespace (line 22) | namespace topology {
FILE: cola/libvpsc/assertions.h
function namespace (line 61) | namespace vpsc {
FILE: cola/libvpsc/block.cpp
type vpsc (line 46) | namespace vpsc {
function Block (line 140) | Block* Block::merge(Block* b, Constraint* c) {
function Constraint (line 215) | Constraint *Block::findMinInConstraint() {
function Constraint (line 264) | Constraint *Block::findMinOutConstraint() {
function Constraint (line 486) | Constraint *Block::findMinLM() {
function Constraint (line 497) | Constraint *Block::findMinLMBetween(Variable* const lv, Variable* cons...
function Constraint (line 590) | Constraint* Block::splitBetween(Variable* const vl, Variable* const vr,
FILE: cola/libvpsc/block.h
function namespace (line 36) | namespace vpsc {
FILE: cola/libvpsc/blocks.cpp
type vpsc (line 49) | namespace vpsc {
FILE: cola/libvpsc/blocks.h
function class (line 54) | class Blocks
FILE: cola/libvpsc/cbuffer.cpp
type vpsc (line 29) | namespace vpsc {
function Constraint (line 66) | Constraint* CBuffer::mostViolated() {
FILE: cola/libvpsc/cbuffer.h
function namespace (line 27) | namespace vpsc {
FILE: cola/libvpsc/constraint.cpp
type vpsc (line 34) | namespace vpsc {
class EqualityConstraintSet (line 117) | class EqualityConstraintSet
method EqualityConstraintSet (line 120) | EqualityConstraintSet(Variables vs)
method isRedundant (line 129) | bool isRedundant(Variable *lhs, Variable *rhs, double sep)
method mergeSets (line 146) | void mergeSets(Variable *lhs, Variable *rhs, double sep)
method setForVar (line 172) | VarOffsetMapList::iterator setForVar(Variable *var)
function Constraints (line 188) | Constraints constraintsRemovingRedundantEqualities(const Variables& vars,
FILE: cola/libvpsc/constraint.h
function namespace (line 36) | namespace vpsc {
FILE: cola/libvpsc/exceptions.h
function namespace (line 25) | namespace vpsc {
FILE: cola/libvpsc/linesegment.h
function namespace (line 34) | namespace linesegment {
FILE: cola/libvpsc/pairing_heap.h
function class (line 42) | class Underflow { }
function T (line 97) | const T & findMin( ) const;
function makeEmpty (line 104) | void makeEmpty() {
FILE: cola/libvpsc/rectangle.cpp
type vpsc (line 43) | namespace vpsc {
function Rectangle (line 81) | Rectangle Rectangle::unionWith(const Rectangle& rhs) const
type Node (line 110) | struct Node
method Node (line 121) | Node(Variable *v, Rectangle *r, double p)
method addLeftNeighbour (line 133) | void addLeftNeighbour(Node *u) {
method addRightNeighbour (line 137) | void addRightNeighbour(Node *u) {
method setNeighbours (line 141) | void setNeighbours(NodeSet *left, NodeSet *right) {
type CmpNodePos (line 111) | struct CmpNodePos { bool operator()(const Node* u, const Node* v) cons...
type Node (line 115) | struct Node {
method Node (line 121) | Node(Variable *v, Rectangle *r, double p)
method addLeftNeighbour (line 133) | void addLeftNeighbour(Node *u) {
method addRightNeighbour (line 137) | void addRightNeighbour(Node *u) {
method setNeighbours (line 141) | void setNeighbours(NodeSet *left, NodeSet *right) {
function NodeSet (line 166) | NodeSet* getLeftNeighbours(NodeSet &scanline,Node *v) {
function NodeSet (line 181) | NodeSet* getRightNeighbours(NodeSet &scanline,Node *v) {
type Event (line 198) | struct Event {
method Event (line 202) | Event(EventType t, Node *v, double p) : type(t),v(v),pos(p) {}
function compare_events (line 204) | int compare_events(const void *a, const void *b) {
function generateXConstraints (line 232) | void generateXConstraints(const Rectangles& rs, const Variables& vars,
function generateYConstraints (line 322) | void generateYConstraints(const Rectangles& rs, const Variables& vars,
function checkIntersection (line 392) | inline bool checkIntersection(
function eq (line 442) | inline bool eq(double a, double b) {
function removeoverlaps (line 563) | void removeoverlaps(Rectangles& rs) {
function removeoverlaps (line 582) | void removeoverlaps(Rectangles& rs, const set<unsigned>& fixed, bool t...
function noRectangleOverlaps (line 665) | bool noRectangleOverlaps(const Rectangles& rs)
FILE: cola/libvpsc/rectangle.h
function namespace (line 38) | namespace vpsc {
type std (line 248) | typedef std::vector<Rectangle*> Rectangles;
type std (line 253) | typedef std::vector<Variable *> Variables;
type std (line 255) | typedef std::vector<Constraint *> Constraints;
type delete_object (line 297) | struct delete_object
FILE: cola/libvpsc/solve_VPSC.cpp
type vpsc (line 44) | namespace vpsc {
function Constraint (line 400) | Constraint* IncSolver::mostViolated(Constraints &l)
type node (line 451) | struct node {
FILE: cola/libvpsc/solve_VPSC.h
function namespace (line 42) | namespace vpsc {
FILE: cola/libvpsc/tests/block.cpp
function test1 (line 37) | void test1() {
function test2 (line 63) | void test2() {
function main (line 101) | int main() {
FILE: cola/libvpsc/tests/cycle.cpp
function approxEquals (line 36) | inline bool approxEquals(const double a, const double b) {
function test1 (line 39) | void test1() {
function test2 (line 71) | void test2() {
function main (line 103) | int main() {
FILE: cola/libvpsc/tests/rectangleoverlap.cpp
function getRand (line 38) | inline double getRand(double range) {
function printRects (line 41) | void printRects(vector<Rectangle*> &rs) {
function generateRandomRects (line 47) | void generateRandomRects(unsigned n, vector<Rectangle*> &rs) {
function test (line 73) | void test(vector<Rectangle *> &rs, double &cost, double &duration) {
function main (line 615) | int main() {
FILE: cola/libvpsc/tests/satisfy_inc.cpp
function getRand (line 39) | static inline double getRand(const int range) {
function approxEquals (line 42) | inline bool approxEquals(const double a, const double b) {
function checkResult (line 47) | bool checkResult(unsigned n, Variable *a[], unsigned m, Constraint *c[],...
function dumpMatlabProblem (line 81) | void dumpMatlabProblem(unsigned n, Variable *a[], unsigned m, Constraint...
function test1 (line 105) | void test1() {
function test1a (line 125) | void test1a() {
function test1b (line 145) | void test1b() {
function test1c (line 165) | void test1c() {
function test2 (line 193) | void test2() {
function test3 (line 216) | void test3() {
function test4 (line 251) | void test4() {
function test5 (line 287) | void test5() {
function test6 (line 311) | void test6() {
function test7 (line 334) | void test7() {
function test8 (line 357) | void test8() {
function test9 (line 399) | void test9() {
function test10 (line 438) | void test10() {
function test11 (line 469) | void test11() {
function test12 (line 499) | void test12() {
function test13 (line 529) | void test13() {
function rand_test (line 564) | void rand_test(unsigned n, unsigned m) {
function main (line 642) | int main() {
FILE: cola/libvpsc/variable.cpp
type vpsc (line 23) | namespace vpsc {
FILE: cola/libvpsc/variable.h
function namespace (line 31) | namespace vpsc {
type std (line 92) | typedef std::vector<Variable*> Variables;
FILE: experimental/RectangleOverlapSolver/placement/ActiveSetPlacement.java
class ActiveSetPlacement (line 9) | public class ActiveSetPlacement extends Observable implements Placement {
method addConstraint (line 30) | public Constraint addConstraint(String u, String v, double sep) {
method satisfyConstraints (line 46) | void satisfyConstraints() {
method ActiveSetPlacement (line 57) | public ActiveSetPlacement(Variable[] vs) {
method refine (line 69) | protected double refine() {
method solve (line 94) | public double solve() {
method animate (line 112) | void animate() {
method getConstraints (line 125) | public Constraints getConstraints() {
method getVariables (line 129) | public Variables getVariables() {
FILE: experimental/RectangleOverlapSolver/placement/Block.java
class Block (line 20) | public class Block {
method Block (line 46) | Block() {
method Block (line 55) | Block(Variable v) {
method merge (line 73) | void merge(Block b, Constraint c, double distance) {
method findMinLM (line 91) | Constraint findMinLM() {
method canFollowLeft (line 101) | private boolean canFollowLeft(Constraint c, Variable last) {
method canFollowRight (line 105) | private boolean canFollowRight(Constraint c, Variable last) {
method resetActiveLM (line 112) | private void resetActiveLM(Variable v, Variable u) {
method compute_dfdv (line 132) | private double compute_dfdv(Variable v, Variable u) {
method desiredPosition (line 162) | double desiredPosition() {
method split (line 178) | void split(Constraint splitConstraint, Block l, Block r) {
method populateSplitBlock (line 189) | private void populateSplitBlock(Block b, Variable v, Variable u) {
method addVariable (line 203) | private void addVariable(Variable v) {
method setUpInConstraints (line 211) | public void setUpInConstraints() {
method setUpOutConstraints (line 223) | public void setUpOutConstraints() {
method toString (line 234) | public String toString() {
method cost (line 242) | public double cost() {
method findMaxInConstraint (line 251) | Constraint findMaxInConstraint() {
method findMaxOutConstraint (line 284) | Constraint findMaxOutConstraint() {
method mergeInConstraints (line 293) | public void mergeInConstraints(Block b) {
method mergeOutConstraints (line 301) | public void mergeOutConstraints(Block b) {
FILE: experimental/RectangleOverlapSolver/placement/Blocks.java
class Blocks (line 21) | class Blocks extends HashSet<Block> {
method splitOnce (line 34) | Constraint splitOnce(ActiveSetPlacement debug) {
method mergeLeft (line 70) | synchronized void mergeLeft(Block b, ActiveSetPlacement debug) {
method mergeRight (line 108) | synchronized void mergeRight(Block b, ActiveSetPlacement debug) {
method Blocks (line 139) | Blocks(Variable[] vars) {
method cost (line 146) | double cost() {
method getAllVariables (line 154) | Variables getAllVariables() {
method toString (line 162) | public String toString() {
method dfsVisit (line 179) | private void dfsVisit(Variable v, LinkedList<Variable> order) {
method totalOrder (line 192) | public LinkedList<Variable> totalOrder() {
method totalOrderDFS (line 200) | private LinkedList<Variable> totalOrderDFS() {
method totalOrderBFS (line 216) | private LinkedList<Variable> totalOrderBFS() {
FILE: experimental/RectangleOverlapSolver/placement/Constraint.java
class Constraint (line 22) | public class Constraint implements Comparable<Constraint> {
method Constraint (line 36) | Constraint(Variable left, Variable right, double separation) {
method isViolated (line 44) | boolean isViolated() {
method violatedAmount (line 51) | double violatedAmount() {
method slack (line 55) | double slack() {
method toString (line 59) | public String toString() {
method neighbour (line 69) | public Variable neighbour(Variable v) {
method sameContainers (line 81) | public boolean sameContainers(Constraint c) {
method delete (line 94) | public void delete() {
method isTight (line 99) | public boolean isTight() {
method compareTo (line 118) | public int compareTo(Constraint c) {
FILE: experimental/RectangleOverlapSolver/placement/ConstraintGenerator.java
class ConstraintGenerator (line 9) | public class ConstraintGenerator {
method initVarsAndConstraints (line 18) | void initVarsAndConstraints(Chunk[] chunks, boolean allOverlaps) {
method initVarsAndConstraintsComplete (line 38) | void initVarsAndConstraintsComplete() {
method getLeftNeighbours (line 67) | ArrayList<Chunk> getLeftNeighbours(TreeSet<Chunk> scanLine, Chunk v) {
method getRightNeighbours (line 84) | ArrayList<Chunk> getRightNeighbours(TreeSet<Chunk> scanLine, Chunk v) {
method initVarsAndConstraintsMinimal (line 101) | void initVarsAndConstraintsMinimal() {
method initVarsAndConstraintsMinimalOld (line 160) | void initVarsAndConstraintsMinimalOld() {
method addOrthogonalOrderingConstraints (line 227) | void addOrthogonalOrderingConstraints() {
method needConstraint (line 249) | boolean needConstraint(Chunk l, Chunk r, boolean all) {
method ConstraintGenerator (line 263) | public ConstraintGenerator(boolean completeConstraints, boolean neighb...
method getConstraints (line 269) | public Constraints getConstraints() {
method getChunks (line 273) | public Chunk[] getChunks() {
class Chunk (line 279) | abstract class Chunk<T extends Chunk> {
method getMax (line 295) | abstract double getMax();
method getMin (line 297) | abstract double getMin();
method setMin (line 299) | abstract void setMin(double d);
method setCentre (line 300) | void setCentre(double d) {
method getCentre (line 303) | double getCentre() {
method getLength (line 306) | abstract double getLength();
method Chunk (line 308) | Chunk(RectangleView r) {
method Chunk (line 312) | Chunk(RectangleView r, T conjugate) {
method addLeftNeighbour (line 317) | void addLeftNeighbour(Chunk n) {
method addRightNeighbour (line 323) | void addRightNeighbour(Chunk n) {
method setNeighbours (line 329) | void setNeighbours(ArrayList<Chunk> leftv, ArrayList<Chunk> rightv) {
method overlap (line 340) | double overlap(Chunk b) {
method conjugateOverlap (line 349) | double conjugateOverlap(Chunk c) {
method compare (line 361) | public int compare(Chunk a, Chunk b) {
method compare (line 383) | public int compare(Chunk a, Chunk b) {
method toString (line 404) | public String toString() {
class YChunk (line 409) | class YChunk extends Chunk<XChunk> {
method YChunk (line 412) | YChunk(RectangleView r, XChunk conjugate) {
method YChunk (line 416) | YChunk(RectangleView r) {
method getMax (line 420) | public double getMax() {
method getMin (line 424) | public double getMin() {
method getLength (line 428) | public double getLength() {
method setMin (line 432) | void setMin(double min) {
class XChunk (line 437) | class XChunk extends Chunk<YChunk> {
method XChunk (line 440) | XChunk(RectangleView r, YChunk conjugate) {
method XChunk (line 444) | XChunk(RectangleView r) {
method getMax (line 448) | public double getMax() {
method getMin (line 452) | public double getMin() {
method getLength (line 456) | public double getLength() {
method setMin (line 460) | void setMin(double min) {
class ChunkEdge (line 466) | class ChunkEdge implements Comparable<ChunkEdge> {
method ChunkEdge (line 473) | ChunkEdge(Chunk c, boolean s, double p) {
method compareTo (line 479) | public int compareTo(ChunkEdge arg) {
FILE: experimental/RectangleOverlapSolver/placement/Constraints.java
class Constraints (line 20) | class Constraints extends ArrayList<Constraint> {
method Constraints (line 21) | public Constraints(Constraints inConstraints) {
method Constraints (line 24) | public Constraints() {
method getActive (line 28) | Constraints getActive(Variable a, Variable b) {
method removeViolated (line 43) | Constraints removeViolated() {
method getActive (line 62) | Constraints getActive(Block a, Block b) {
method max (line 72) | Constraint max() {
method violated (line 85) | Constraints violated() {
method getActive (line 99) | public Constraints getActive() {
FILE: experimental/RectangleOverlapSolver/placement/DebugFrame.java
class DebugFrame (line 5) | public class DebugFrame extends JFrame {
method DebugFrame (line 12) | DebugFrame(Blocks blocks, Constraints constraints) {
method animate (line 28) | void animate() {
FILE: experimental/RectangleOverlapSolver/placement/DebugPanel.java
class DebugPanel (line 18) | public class DebugPanel extends JPanel {
type Direction (line 21) | public enum Direction {
method DebugPanel (line 29) | public DebugPanel(Blocks blocks, Constraints constraints) {
method paintComponent (line 37) | public void paintComponent(Graphics g) {
method createBackBuffer (line 73) | private void createBackBuffer() {
method render (line 78) | public void render(Graphics gOld) {
method hRender (line 97) | private void hRender(Graphics2D g, Variables allVars) {
method vRender (line 145) | private void vRender(Graphics2D g, Variables allVars) {
method drawArrow (line 209) | private void drawArrow(Graphics2D g, int x, int y, int X, int Y, int s...
method updateDrawing (line 239) | public void updateDrawing() {
FILE: experimental/RectangleOverlapSolver/placement/DrawingDimensions.java
class DrawingDimensions (line 9) | class DrawingDimensions {
method DrawingDimensions (line 17) | public DrawingDimensions(double scale, double xmin, double ymin) {
method toScreen (line 23) | Point toScreen(double x, double y) {
method toScreen (line 31) | public Point toScreen(Point2D p) {
FILE: experimental/RectangleOverlapSolver/placement/FSA.java
class FSA (line 8) | public class FSA implements RectanglePlacement {
class Vec (line 9) | class Vec {
method FSA (line 15) | FSA(double xgap, double ygap) {
method force (line 22) | Vec force(Rectangle2D vi, Rectangle2D vj) {
method force2 (line 44) | Vec force2(Rectangle2D vi, Rectangle2D vj) {
method compare (line 65) | public int compare(Rectangle2D u, Rectangle2D v) {
method horizontal (line 76) | void horizontal() {
method horizontalImproved (line 112) | double horizontalImproved() {
method compare (line 185) | public int compare(Rectangle2D u, Rectangle2D v) {
method vertical (line 197) | void vertical() {
method verticalImproved (line 233) | double verticalImproved() {
method place (line 306) | public void place(ArrayList<RectangleView> rs) {
FILE: experimental/RectangleOverlapSolver/placement/GUITest.java
class GUITest (line 12) | public class GUITest extends TestCase {
method makeRect (line 26) | RectangleView makeRect(String label, int x, int X, int y, int Y) {
method makeRect (line 32) | RectangleView makeRect(String label, double x, double X, double y, dou...
method setUp (line 40) | protected void setUp() {
method suite (line 43) | public static Test suite() {
method testCase1 (line 47) | public void testCase1() {
method testCase2 (line 60) | public void testCase2() {
method testCase3 (line 74) | public void testCase3() {
method testCase4 (line 88) | public void testCase4() {
method testCase5 (line 109) | public void testCase5() {
method testCase6 (line 122) | public void testCase6() {
method testCase7 (line 136) | public void testCase7() {
method testCase8 (line 157) | public void testCase8() {
method testRandom (line 269) | public void testRandom() {
method runOverlapRemover (line 274) | private void runOverlapRemover() {
method main (line 308) | public static void main(String[] args) {
FILE: experimental/RectangleOverlapSolver/placement/Graph.java
class Edge (line 10) | class Edge {
method Edge (line 15) | Edge(Node start, Node end) {
class Node (line 21) | class Node {
method Node (line 28) | Node(String id, int x, int y, int w, int h) {
method addEdge (line 34) | void addEdge(Edge e) {
method getPos (line 38) | public Point2D.Double getPos() {
class Graph (line 45) | public class Graph {
method getRectangles (line 52) | public ArrayList<RectangleView> getRectangles() {
method restoreRectangles (line 61) | public void restoreRectangles(ArrayList<RectangleView> rs) {
method getRectangleLabel (line 71) | public String getRectangleLabel(Rectangle2D r) {
method getLines (line 80) | public ArrayList<Line2D> getLines() {
method addNode (line 88) | public void addNode(String id, int x, int y, int w, int h) {
method addEdge (line 92) | public void addEdge(String id1, String id2) {
FILE: experimental/RectangleOverlapSolver/placement/GraphParser.java
class GraphParser (line 15) | public class GraphParser {
method GraphParser (line 18) | GraphParser(String fileName) {
method match (line 67) | private String match(Pattern p, String s) {
method match (line 71) | private String match(Pattern p, String s, int group) {
method getGraph (line 80) | public Graph getGraph() {
FILE: experimental/RectangleOverlapSolver/placement/GraphParserTest.java
class GraphParserTest (line 5) | public class GraphParserTest extends TestCase {
method testGraph1 (line 6) | public void testGraph1(){
FILE: experimental/RectangleOverlapSolver/placement/MaxPairingHeap.java
class MaxPairingHeap (line 14) | public class MaxPairingHeap<T extends Comparable> implements
method MaxPairingHeap (line 21) | public MaxPairingHeap() {
method MaxPairingHeap (line 28) | public MaxPairingHeap(MaxPairingHeap<T> h1, MaxPairingHeap<T> h2) {
method add (line 45) | public void add(T x) {
method add (line 50) | public void add(PNode<T> p) {
method findMax (line 63) | public T findMax() {
method deleteMax (line 74) | public T deleteMax() {
method increaseKey (line 98) | public void increaseKey(PNode<T> p, T newVal) {
method isEmpty (line 120) | public boolean isEmpty() {
method makeEmpty (line 127) | public void makeEmpty() {
method compareAndLink (line 145) | private PNode compareAndLink(PNode<T> first, PNode<T> second) {
method doubleIfFull (line 174) | private PNode<T>[] doubleIfFull(PNode<T>[] array, int index) {
method combineSiblings (line 191) | private PNode<T> combineSiblings(PNode<T> firstSibling) {
method getAll (line 227) | public ArrayList<T> getAll() {
method toString (line 247) | public String toString() {
method main (line 271) | public static void main(String args[]) {
method merge (line 297) | public void merge(MaxPriorityQueue<T> b) {
method size (line 307) | public int size() {
FILE: experimental/RectangleOverlapSolver/placement/MaxPriorityQueue.java
type MaxPriorityQueue (line 5) | public interface MaxPriorityQueue<T extends Comparable> {
method add (line 6) | public void add(T e);
method findMax (line 7) | public T findMax();
method deleteMax (line 8) | public T deleteMax();
method merge (line 9) | public void merge(MaxPriorityQueue<T> other);
method getAll (line 10) | public ArrayList<T> getAll();
method size (line 11) | public int size();
FILE: experimental/RectangleOverlapSolver/placement/MinPairingHeap.java
class MinPairingHeap (line 10) | public class MinPairingHeap<T extends Comparable> {
method MinPairingHeap (line 15) | public MinPairingHeap() {
method insert (line 27) | public PNode<T> insert(T x) {
method findMin (line 42) | public T findMin() {
method deleteMin (line 53) | public T deleteMin() {
method decreaseKey (line 76) | public void decreaseKey(PNode<T> p, T newVal) {
method isEmpty (line 98) | public boolean isEmpty() {
method makeEmpty (line 105) | public void makeEmpty() {
method compareAndLink (line 122) | private PNode compareAndLink(PNode<T> first, PNode<T> second) {
method doubleIfFull (line 149) | private PNode<T>[] doubleIfFull(PNode<T>[] array, int index) {
method combineSiblings (line 166) | private PNode<T> combineSiblings(PNode<T> firstSibling) {
method main (line 201) | public static void main(String args[]) {
FILE: experimental/RectangleOverlapSolver/placement/MosekPlacement.java
class msgclass (line 9) | class msgclass extends mosek.Stream {
method msgclass (line 10) | public msgclass() {
method print (line 14) | public void print(String msg) {
class MosekPlacement (line 19) | public class MosekPlacement implements Placement {
method addConstraint (line 31) | public Constraint addConstraint(String u, String v, double sep) {
method MosekPlacement (line 39) | public MosekPlacement(Variable[] vs) {
method MosekPlacement (line 47) | public MosekPlacement(Variables vs, Constraints cs) {
method solve (line 57) | public double solve() throws Exception {
method getCost (line 116) | public double getCost() {
method getConstraints (line 125) | public Constraints getConstraints() {
method getVariables (line 129) | public Variables getVariables() {
FILE: experimental/RectangleOverlapSolver/placement/NativeFSA.java
class NativeFSA (line 6) | public class NativeFSA implements RectanglePlacement {
method NativeFSA (line 9) | NativeFSA(double xgap, double ygap) {
method place (line 13) | public native double place(double x[],
method place (line 20) | public void place(ArrayList<RectangleView> rs) {
FILE: experimental/RectangleOverlapSolver/placement/PNode.java
class PNode (line 3) | public class PNode<S extends Comparable> {
method PNode (line 10) | PNode(S theElement) {
FILE: experimental/RectangleOverlapSolver/placement/PerformanceTest.java
class Result (line 19) | class Result {
method writeToFile (line 26) | void writeToFile() {
method toString (line 39) | public String toString() {
method writeHeader (line 47) | public void writeHeader() {
class Cost (line 65) | class Cost {
method hdr (line 72) | public String hdr() {
method toString (line 75) | public String toString() {
class PerformanceTest (line 81) | public class PerformanceTest {
method PerformanceTest (line 83) | PerformanceTest() {
method main (line 139) | public static void main(String[] args) {
method copyRects (line 143) | private ArrayList<Rectangle2D> copyRects(ArrayList<Rectangle2D> orig) {
method run (line 152) | private Cost run(RectanglePlacement p, ArrayList<Rectangle2D> orig, St...
method finalize (line 176) | @Override
method run (line 182) | private Cost run(RectanglePlacement p, ArrayList<Rectangle2D> orig, Ar...
method generateRandom (line 209) | static ArrayList<Rectangle2D> generateRandom(Result result, double w,
FILE: experimental/RectangleOverlapSolver/placement/Placement.java
type Placement (line 3) | public interface Placement {
method addConstraint (line 5) | public abstract Constraint addConstraint(String u, String v, double sep);
method solve (line 7) | public abstract double solve() throws Exception;
method getConstraints (line 9) | public abstract Constraints getConstraints();
method getVariables (line 10) | public abstract Variables getVariables();
FILE: experimental/RectangleOverlapSolver/placement/PlacementTest.java
class PlacementTest (line 16) | public class PlacementTest extends TestCase {
method PlacementTest (line 32) | public PlacementTest(String arg0) {
method run (line 36) | private void run(Placement p, double expected) throws Exception {
method acceptableCost (line 46) | boolean acceptableCost(double cost, double expected) {
method testPairingHeap (line 53) | public void testPairingHeap() throws Exception {
class HeapNode (line 136) | class HeapNode implements Comparable<HeapNode> {
method HeapNode (line 141) | HeapNode(int k) {
method toString (line 144) | public String toString() {
method compareTo (line 147) | public int compareTo(HeapNode o) {
method testPairingHeap2 (line 163) | public void testPairingHeap2() throws Exception {
method testPairingHeap3 (line 213) | public void testPairingHeap3() throws Exception {
method testPlacement1 (line 249) | public void testPlacement1() throws Exception {
method testPlacement1a (line 262) | public void testPlacement1a() throws Exception {
method testPlacement2 (line 275) | public void testPlacement2() throws Exception {
method testPlacement3 (line 297) | public void testPlacement3() throws Exception {
method testPlacement4 (line 314) | public void testPlacement4() throws Exception {
method testPlacement5 (line 327) | public void testPlacement5() throws Exception {
method testPlacement6 (line 343) | public void testPlacement6() throws Exception {
method testPlacement7 (line 353) | public void testPlacement7() throws Exception {
method testPlacement8 (line 379) | public void testPlacement8() throws Exception {
method testPlacement9 (line 398) | public void testPlacement9() throws Exception {
method testPlacement10 (line 413) | public void testPlacement10() throws Exception {
FILE: experimental/RectangleOverlapSolver/placement/QPRectanglePlacement.java
class QPRectanglePlacement (line 8) | public class QPRectanglePlacement extends Observable implements
type Algorithm (line 15) | enum Algorithm {
method QPRectanglePlacement (line 31) | public QPRectanglePlacement(boolean split, boolean completeConstraints,
method placeX (line 43) | void placeX(ArrayList<RectangleView> rectangles) {
method replaceX (line 65) | void replaceX(ArrayList<RectangleView> rectangles) {
method place (line 86) | public void place(ArrayList<RectangleView> rectangles) {
method placeNative (line 106) | void placeNative(ArrayList<RectangleView> rectangles) {
method placeY (line 113) | void placeY(ArrayList<RectangleView> rectangles) {
method placement (line 133) | double placement() {
method addObserver (line 180) | public void addObserver(Observer o) {
method update (line 184) | public void update(Observable arg0, Object arg1) {
FILE: experimental/RectangleOverlapSolver/placement/RectangleDrawerFrame.java
class RectangleDrawerFrame (line 36) | public class RectangleDrawerFrame extends JFrame {
type Algorithm (line 38) | enum Algorithm {
method RectangleDrawerFrame (line 42) | public RectangleDrawerFrame(String title) {
method main (line 62) | public static void main(String args[]) {
method init (line 73) | public void init() {
method cleanup (line 317) | public void cleanup(int xGap, int yGap) {
FILE: experimental/RectangleOverlapSolver/placement/RectangleDrawerPanel.java
class BlocksFileFilter (line 40) | class BlocksFileFilter extends FileFilter {
method accept (line 43) | public boolean accept(File file) {
method getDescription (line 48) | public String getDescription() {
class RectangleDrawerPanel (line 53) | public class RectangleDrawerPanel extends JPanel implements Printable,
type InteractionMode (line 55) | enum InteractionMode {
method generateRandom (line 79) | public void generateRandom(int n) {
method generateRandom (line 88) | protected void generateRandom(int n, Random rand, double w, double h) {
method fitToScreen (line 113) | DrawingDimensions fitToScreen() {
method load (line 134) | protected void load(File f) {
method save (line 169) | protected File save(String path) {
method backup (line 200) | protected void backup() {
method undo (line 208) | protected void undo() {
method getFileFilter (line 218) | protected BlocksFileFilter getFileFilter() {
method RectangleDrawerPanel (line 225) | public RectangleDrawerPanel() {
method clear (line 231) | public void clear() {
method paintComponent (line 240) | public void paintComponent(Graphics g) {
method createBackBuffer (line 278) | private void createBackBuffer() {
method render (line 283) | public void render(int width, int height, Graphics2D g) {
method setUpDrawingGraphics (line 304) | private void setUpDrawingGraphics() {
method mousePressed (line 313) | public void mousePressed(MouseEvent evt) {
method drawConstraints (line 344) | public void drawConstraints(Graphics2D g) {
method mouseReleased (line 371) | public void mouseReleased(MouseEvent evt) {
method mouseDragged (line 393) | public void mouseDragged(MouseEvent evt) {
method mouseEntered (line 419) | public void mouseEntered(MouseEvent evt) {
method mouseExited (line 422) | public void mouseExited(MouseEvent evt) {
method mouseClicked (line 425) | public void mouseClicked(MouseEvent evt) {
method mouseMoved (line 428) | public void mouseMoved(MouseEvent evt) {
method update (line 436) | public void update(Observable p, Object arg1) {
method print (line 442) | public int print(Graphics g, PageFormat pf, int pi) throws PrinterExce...
method saveAsJPEG (line 465) | public void saveAsJPEG(String filename) {
method setInteractionMode (line 481) | public void setInteractionMode(InteractionMode interactionMode) {
method getInteractionMode (line 485) | public InteractionMode getInteractionMode() {
FILE: experimental/RectangleOverlapSolver/placement/RectanglePlacement.java
type RectanglePlacement (line 5) | public interface RectanglePlacement {
method place (line 6) | void place(ArrayList<RectangleView> rectangles);
FILE: experimental/RectangleOverlapSolver/placement/RectangleView.java
class RectangleView (line 11) | public class RectangleView implements Serializable {
method RectangleView (line 22) | RectangleView(String label, double x, double y, double w, double h) {
method RectangleView (line 30) | public RectangleView(RectangleView r) {
method draw (line 35) | public void draw(Graphics2D g, DrawingDimensions dim) {
method draw (line 42) | public void draw(Graphics2D g, int x, int y, int w, int h) {
method draw (line 46) | private void draw(Graphics2D g, Point p, double w, double h) {
method moveTo (line 66) | public void moveTo(double x, double y) {
method getMaxY (line 71) | public double getMaxY() {
method getMaxX (line 75) | public double getMaxX() {
FILE: experimental/RectangleOverlapSolver/placement/ScanListPriorityQueue.java
class ScanListPriorityQueue (line 6) | public class ScanListPriorityQueue<T extends Comparable> implements
method add (line 12) | public void add(T e) {
method findMax (line 17) | public T findMax() {
method deleteMax (line 33) | public T deleteMax() {
method merge (line 40) | public void merge(MaxPriorityQueue<T> other) {
method toString (line 46) | public String toString() {
method getAll (line 54) | public ArrayList<T> getAll() {
method size (line 58) | public int size() {
FILE: experimental/RectangleOverlapSolver/placement/SimpleTest.java
class SimpleTest (line 7) | public class SimpleTest {
method main (line 12) | public static void main(String[] args) {
FILE: experimental/RectangleOverlapSolver/placement/SlowPriorityQueue.java
class SlowPriorityQueue (line 7) | public class SlowPriorityQueue<T extends Comparable> implements MaxPrior...
method compare (line 10) | public int compare(T a, T b) {
method add (line 16) | public void add(T e) {
method findMax (line 20) | public T findMax() {
method deleteMax (line 24) | public T deleteMax() {
method merge (line 28) | public void merge(MaxPriorityQueue<T> other) {
method toString (line 32) | public String toString() {
method getAll (line 40) | public ArrayList<T> getAll() {
method size (line 48) | public int size() {
FILE: experimental/RectangleOverlapSolver/placement/SolveVPSC.java
class SolveVPSC (line 6) | public class SolveVPSC implements Placement {
method solve (line 7) | public native double solve(String vName[], double vWeight[],
method generateXConstraints (line 10) | public native int generateXConstraints(
method generateYConstraints (line 14) | public native int generateYConstraints(
method getConstraints (line 18) | public native void getConstraints(int cLeft[], int cRight[], double cG...
method removeOverlaps (line 19) | public native void removeOverlaps(
method addConstraint (line 42) | public Constraint addConstraint(String u, String v, double sep) {
method SolveVPSC (line 50) | public SolveVPSC(ArrayList<RectangleView> rectangles) {
method SolveVPSC (line 53) | public SolveVPSC(Variable[] vs) {
method SolveVPSC (line 64) | public SolveVPSC(Variables vars, Constraints constraints) {
method solve (line 73) | public double solve() throws Exception {
method generateXConstraints (line 106) | public void generateXConstraints(double weights[]) {
method generateYConstraints (line 129) | public void generateYConstraints(double weights[]) {
method getConstraints (line 153) | public Constraints getConstraints() {
method getVariables (line 157) | public Variables getVariables() {
method removeOverlaps (line 160) | public void removeOverlaps() {
FILE: experimental/RectangleOverlapSolver/placement/Variable.java
class Variable (line 19) | public class Variable {
method Variable (line 36) | Variable(String name, double desiredPosition, double weight) {
method getPosition (line 44) | double getPosition() {
method toString (line 51) | public String toString() {
method addInConstraint (line 56) | public void addInConstraint(Constraint c) {
method addOutConstraint (line 60) | public void addOutConstraint(Constraint c) {
method getInConstraints (line 65) | public Constraints getInConstraints() {
method getOutConstraints (line 69) | public Constraints getOutConstraints() {
FILE: experimental/RectangleOverlapSolver/placement/Variables.java
class Variables (line 17) | public class Variables extends ArrayList<Variable> {
method Variables (line 18) | Variables() {
method Variables (line 22) | Variables(Variable[] vs) {
method getSources (line 28) | Variables getSources() {
method getMaxPos (line 39) | double getMaxPos() {
method getMinPos (line 48) | double getMinPos() {
method contains (line 57) | boolean contains(String label) {
method sortOnConstraintDepth (line 69) | void sortOnConstraintDepth() {
method max (line 82) | public Variable max() {
method min (line 96) | public Variable min() {
FILE: experimental/draw-bn/asia.cpp
function parse_numbers (line 13) | bool
function construct_graph (line 28) | void
FILE: experimental/draw-bn/draw-bn.cpp
function streq (line 30) | inline bool
class Node (line 36) | class Node{
method draw (line 46) | void draw(cairo_t* cr, vpsc::Rectangle* r) {
method set_minimum_bounds (line 73) | void set_minimum_bounds(cairo_t* cr) {
method Node (line 94) | Node(char const* name) : title(name) {
method Node (line 99) | Node(vpsc::Rectangle* r) : position(r) {}
function cairo_surface_t (line 104) | static cairo_surface_t *
function main (line 132) | int main(int argc, char** argv) {
FILE: experimental/draw-bn/graphlayouttest.cpp
function output_svg (line 16) | void output_svg(vector<Rectangle*>& rs, vector<Edge>& es, char *fname, b...
function output_svg (line 33) | void output_svg(vector<Rectangle*>& rs, vector<straightener::Edge*>& es,...
function output_svg (line 90) | void output_svg(vector<Rectangle*>& rs, vector<Edge>& es, char *fname, b...
function output_svg (line 202) | void output_svg(vector<Rectangle*>& rs, vector<Edge>& es, char *fname, b...
FILE: experimental/draw-bn/graphlayouttest.h
function getRand (line 7) | inline double getRand(double range) {
FILE: experimental/neatogen/adjust.c
function setBoundBox (line 49) | static void setBoundBox(Point * ll, Point * ur)
function freeNodes (line 64) | static void freeNodes(void)
function chkBoundBox (line 86) | static void chkBoundBox(Agraph_t * graph)
function makeInfo (line 143) | static void makeInfo(Agraph_t * graph)
function scomp (line 174) | static int scomp(const void *S1, const void *S2)
function sortSites (line 194) | static void sortSites(void)
function geomUpdate (line 222) | static void geomUpdate(int doSort)
function Site (line 245) | static Site *nextOne(void)
function rmEquality (line 260) | static void rmEquality(void)
function countOverlap (line 316) | static int countOverlap(int iter)
function increaseBoundBox (line 345) | static void increaseBoundBox(void)
function areaOf (line 369) | static double areaOf(Point a, Point b, Point c)
function centroidOf (line 384) | static void centroidOf(Point a, Point b, Point c, double *x, double *y)
function newpos (line 396) | static void newpos(Info_t * ip)
function addCorners (line 427) | static void addCorners(void)
function newPos (line 480) | static void newPos(void)
function cleanup (line 501) | static void cleanup(void)
function vAdjust (line 509) | static int vAdjust(void)
function rePos (line 570) | static double rePos(Point c)
function sAdjust (line 586) | static int sAdjust(void)
function updateGraph (line 624) | static void updateGraph(Agraph_t * graph)
function normalize (line 644) | void normalize(graph_t * g)
type adjust_data (line 681) | typedef struct {
function adjust_data (line 710) | static adjust_data *getAdjustMode(char *s)
function removeOverlapAs (line 729) | int
function removeOverlap (line 810) | int
function adjustNodes (line 820) | int adjustNodes(graph_t * G)
function expFactor (line 831) | double
FILE: experimental/neatogen/adjust.h
type adjust_mode (line 26) | typedef enum {
FILE: experimental/neatogen/bfs.c
function bfs (line 30) | void bfs(int vertex, vtx_data * graph, int n, DistType * dist, Queue * Q)
function bfs_bounded (line 76) | int
function mkQueue (line 125) | void mkQueue(Queue * qp, int size)
function Queue (line 132) | Queue *newQueue(int size)
function freeQueue (line 139) | void freeQueue(Queue * qp)
function delQueue (line 144) | void delQueue(Queue * qp)
function initQueue (line 150) | void initQueue(Queue * qp, int startVertex)
function deQueue (line 157) | bool deQueue(Queue * qp, int *vertex)
function enQueue (line 165) | bool enQueue(Queue * qp, int vertex)
FILE: experimental/neatogen/bfs.h
function class (line 27) | class Queue {
function initQueue (line 41) | void initQueue(int startVertex) {
function dequeue (line 47) | bool dequeue(int &vertex) {
function enqueue (line 57) | bool enqueue(int vertex) {
type Queue (line 72) | typedef struct {
FILE: experimental/neatogen/circuit.c
function solveCircuit (line 25) | int solveCircuit(int nG, double **Gm, double **Gm_inv)
function circuit_model (line 44) | int circuit_model(graph_t * g, int nG)
FILE: experimental/neatogen/closest.c
type Pair (line 29) | typedef struct {
type PairStack (line 48) | typedef struct {
function initStack (line 54) | static void initStack(PairStack * s, int n)
function freeStack (line 61) | static void freeStack(PairStack * s)
type PairHeap (line 83) | typedef struct {
function heapify (line 103) | static void heapify(PairHeap * h, int i)
function mkHeap (line 124) | static void mkHeap(PairHeap * h, int size)
function freeHeap (line 132) | static void freeHeap(PairHeap * h)
function initHeap (line 137) | static void initHeap(PairHeap * h, double *place, int *ordering, int n)
function extractMax (line 165) | static bool extractMax(PairHeap * h, Pair * max)
function insert (line 177) | static void insert(PairHeap * h, Pair edge)
function find_closest_pairs (line 208) | static void
function add_edge (line 287) | static void add_edge(vtx_data * graph, int u, int v)
function construct_graph (line 305) | static void
function closest_pairs2graph (line 356) | void
FILE: experimental/neatogen/compute_hierarchy.c
function compute_hierarchy (line 49) | double
FILE: experimental/neatogen/conjgrad.c
function conjugate_gradient (line 28) | void conjugate_gradient
function conjugate_gradient_f (line 96) | void conjugate_gradient_f
function conjugate_gradient_mkernel (line 161) | void
FILE: experimental/neatogen/constrained_majorization.c
function stress_majorization_with_hierarchy (line 38) | int
FILE: experimental/neatogen/constrained_majorization_vsep.c
function stress_majorization_vsep (line 36) | int
FILE: experimental/neatogen/constraint.c
type nitem (line 29) | typedef struct nitem {
function cmpitem (line 42) | static int cmpitem(Dt_t * d, int *p1, int *p2, Dtdisc_t * disc)
function distY (line 62) | static int distY(box * b1, box * b2)
function distX (line 67) | static int distX(box * b1, box * b2)
function intersectX0 (line 78) | static int intersectX0(nitem * p, nitem * q)
function intersectY0 (line 100) | static int intersectY0(nitem * p, nitem * q)
function intersectY (line 116) | static int intersectY(nitem * p, nitem * q)
function intersectX (line 121) | static int intersectX(nitem * p, nitem * q)
function mapGraphs (line 128) | static void mapGraphs(graph_t * g, graph_t * cg, distfn dist)
function indegree (line 160) | static int
function outdegree (line 169) | static int
function validate (line 178) | static void
function node_t (line 205) | static node_t *newNode(graph_t * g)
function graph_t (line 223) | static graph_t *mkNConstraintG(graph_t * g, Dt_t * list,
function graph_t (line 296) | static graph_t *mkConstraintG(graph_t * g, Dt_t * list,
function closeGraph (line 441) | static void closeGraph(graph_t * cg)
function constrainX (line 456) | static void constrainX(graph_t* g, nitem* nlist, int nnodes, intersectfn...
function constrainY (line 494) | static void constrainY(graph_t* g, nitem* nlist, int nnodes, intersectfn...
function overlaps (line 552) | static int overlaps(nitem * p, int cnt)
function initItem (line 572) | static void initItem(node_t * n, nitem * p, double margin)
function cAdjust (line 624) | int cAdjust(graph_t * g, int mode)
type info (line 690) | typedef struct {
function sortf (line 700) | static int sortf(pointf * p, pointf * q)
function compress (line 714) | static double compress(info * nl, int nn)
function pointf (line 750) | static pointf *mkOverlapSet(info * nl, int nn, int *cntp)
function pointf (line 794) | static pointf computeScaleXY(pointf * aarr, int m)
function computeScale (line 832) | static double computeScale(pointf * aarr, int m)
function scAdjust (line 859) | int scAdjust(graph_t * g, int equal)
FILE: experimental/neatogen/defs.h
type Style (line 27) | enum Style { regular, invisible }
type vtx_data (line 28) | struct vtx_data {
type cluster_data (line 36) | struct cluster_data {
type DistType (line 46) | typedef int DistType;
function max (line 48) | inline double max(double x, double y) {
function min (line 53) | inline double min(double x, double y) {
function max (line 60) | inline int max(int x, int y) {
function min (line 67) | inline int min(int x, int y) {
type Point (line 74) | struct Point {
type Style (line 90) | typedef enum { regular, invisible } Style;
type vtx_data (line 92) | typedef struct {
type cluster_data (line 106) | typedef struct cluster_data {
type DistType (line 117) | typedef int DistType;
type Point (line 120) | typedef struct {
FILE: experimental/neatogen/digcola.h
type vsep_options (line 29) | typedef struct vsep_options {
FILE: experimental/neatogen/dijkstra.c
type DistType (line 35) | typedef DistType Word;
type heap (line 57) | typedef struct {
function heapify (line 62) | static void heapify(heap * h, int i, int index[], Word dist[])
function mkHeap (line 88) | static void mkHeap(heap * h, int size)
function freeHeap (line 95) | static void freeHeap(heap * h)
function initHeap (line 100) | static void
function extractMax (line 121) | static bool extractMax(heap * h, int *max, int index[], Word dist[])
function increaseKey (line 135) | static void
function dijkstra (line 158) | void dijkstra(int vertex, vtx_data * graph, int n, DistType * dist)
function dijkstra_bounded (line 202) | int
function heapify_f (line 282) | static void heapify_f(heap * h, int i, int index[], float dist[])
function initHeap_f (line 303) | static void
function extractMax_f (line 322) | static bool extractMax_f(heap * h, int *max, int index[], float dist[])
function increaseKey_f (line 336) | static void
function dijkstra_f (line 363) | void dijkstra_f(int vertex, vtx_data * graph, int n, float *dist)
FILE: experimental/neatogen/edges.c
function edgeinit (line 29) | void edgeinit()
function Edge (line 35) | Edge *bisect(Site * s1, Site * s2)
function doSeg (line 74) | static void doSeg(Edge * e, double x1, double y1, double x2, double y2)
function clip_line (line 82) | void clip_line(Edge * e)
function endpoint (line 202) | void endpoint(Edge * e, int lr, Site * s)
FILE: experimental/neatogen/edges.h
type Edge (line 28) | typedef struct Edge {
FILE: experimental/neatogen/embed_graph.c
function embed_graph (line 35) | void embed_graph(vtx_data * graph, int n, int dim, DistType *** Coords,
function center_coordinate (line 113) | void center_coordinate(DistType ** coords, int n, int dim)
FILE: experimental/neatogen/find_ints.c
type vertex (line 23) | struct vertex
type vertex (line 24) | struct vertex
type intersection (line 25) | struct intersection
type data (line 25) | struct data
type vertex (line 26) | struct vertex
type vertex (line 26) | struct vertex
function find_ints (line 28) | void
function gt (line 113) | static int gt(struct vertex **i, struct vertex **j)
FILE: experimental/neatogen/geometry.c
function geominit (line 30) | void geominit()
function dist_2 (line 40) | double dist_2(Point * pp, Point * qp)
function subPt (line 48) | void subPt(Point * a, Point b, Point c)
function addPt (line 54) | void addPt(Point * c, Point a, Point b)
function area_2 (line 60) | double area_2(Point a, Point b, Point c)
function leftOf (line 65) | int leftOf(Point a, Point b, Point c)
function intersection (line 70) | int intersection(Point a, Point b, Point c, Point d, Point * p)
FILE: experimental/neatogen/geometry.h
type Point (line 26) | typedef struct Point {
FILE: experimental/neatogen/heap.c
function PQbucket (line 31) | static int PQbucket(Halfedge * he)
function PQinsert (line 48) | void PQinsert(Halfedge * he, Site * v, double offset)
function PQdelete (line 67) | void PQdelete(Halfedge * he)
function PQempty (line 83) | int PQempty(void)
function Point (line 89) | Point PQ_min(void)
function Halfedge (line 101) | Halfedge *PQextractmin(void)
function PQcleanup (line 111) | void PQcleanup(void)
function PQinitialize (line 117) | void PQinitialize(void)
function PQdumphe (line 130) | static void PQdumphe(Halfedge * p)
function PQdump (line 138) | void PQdump(void)
FILE: experimental/neatogen/hedges.c
function ELcleanup (line 31) | void ELcleanup()
function ELinitialize (line 38) | void ELinitialize()
function Site (line 59) | Site *hintersect(Halfedge * el1, Halfedge * el2)
function right_of (line 103) | int right_of(Halfedge * el, Point * p)
function Halfedge (line 150) | Halfedge *HEcreate(Edge * e, char pm)
function ELinsert (line 163) | void ELinsert(Halfedge * lb, Halfedge * new)
function Halfedge (line 172) | static Halfedge *ELgethash(int b)
function Halfedge (line 189) | Halfedge *ELleftbnd(Point * p)
function ELdelete (line 235) | void ELdelete(Halfedge * he)
function Halfedge (line 243) | Halfedge *ELright(Halfedge * he)
function Halfedge (line 248) | Halfedge *ELleft(Halfedge * he)
function Site (line 254) | Site *leftreg(Halfedge * he)
function Site (line 261) | Site *rightreg(Halfedge * he)
FILE: experimental/neatogen/hedges.h
type Halfedge (line 29) | typedef struct Halfedge {
FILE: experimental/neatogen/info.c
function infoinit (line 26) | void infoinit()
function compare (line 40) | static int compare(Point * o, PtItem * p, PtItem * q)
function printV (line 117) | static void printV(PtItem * vp)
function error (line 130) | static void error(Info_t * ip, Site * s, double x, double y)
function sorted (line 140) | static int sorted(Point * origin, PtItem * vp)
function addVertex (line 164) | void addVertex(Site * s, double x, double y)
FILE: experimental/neatogen/info.h
type PtItem (line 30) | typedef struct ptitem { /* Point list */
type Info_t (line 35) | typedef struct { /* Info concerning site */
FILE: experimental/neatogen/intersect.c
function sgnarea (line 23) | static void sgnarea(struct vertex *l, struct vertex *m, int i[])
function between (line 42) | static int between(double f, double g, double h)
function online (line 50) | static int online(struct vertex *l, struct vertex *m, int i)
function intpoint (line 64) | static int intpoint(struct vertex *l, struct vertex *m, double *x, doubl...
function find_intersection (line 131) | void find_intersection(struct vertex *l,
FILE: experimental/neatogen/kkutils.c
function common_neighbors (line 24) | int common_neighbors(vtx_data * graph, int v, int u, int *v_vector)
function fill_neighbors_vec_unweighted (line 39) | void fill_neighbors_vec_unweighted(vtx_data * graph, int vtx, int *vtx_vec)
function empty_neighbors_vec (line 49) | void empty_neighbors_vec(vtx_data * graph, int vtx, int *vtx_vec)
function DistType (line 62) | static DistType **compute_apsp_dijkstra(vtx_data * graph, int n)
function DistType (line 79) | static DistType **compute_apsp_simple(vtx_data * graph, int n)
function DistType (line 100) | DistType **compute_apsp(vtx_data * graph, int n)
function DistType (line 108) | DistType **compute_apsp_artifical_weights(vtx_data * graph, int n)
function split_by_place (line 129) | static void
function distance_kD (line 168) | double distance_kD(double **coords, int dim, int i, int j)
function fcmpf (line 181) | static int
function quicksort_placef (line 191) | void quicksort_placef(float *place, int *ordering, int first, int last)
function quicksort_place (line 204) | void quicksort_place(double *place, int *ordering, int first, int last)
function compute_new_weights (line 218) | void compute_new_weights(vtx_data * graph, int n)
function restore_old_weights (line 255) | void restore_old_weights(vtx_data * graph, int n, float *old_weights)
FILE: experimental/neatogen/kkutils.h
function distance_kD (line 30) | inline double distance_kD(double **coords, int dim, int i, int j) {
FILE: experimental/neatogen/legal.c
type vertex (line 22) | struct vertex
type polygon (line 23) | struct polygon
type data (line 24) | struct data
type intersection (line 24) | struct intersection
function Plegal_arrangement (line 25) | int Plegal_arrangement(Ppoly_t ** polys, int n_polys)
FILE: experimental/neatogen/lu.c
function lu_decompose (line 70) | int lu_decompose(double **a, int n)
function lu_solve (line 145) | void lu_solve(double *x, double *b, int n)
FILE: experimental/neatogen/matinv.c
function matinv (line 49) | int matinv(double **A, double **Ainv, int n)
FILE: experimental/neatogen/matrix_ops.c
function power_iteration (line 25) | bool
function mult_dense_mat (line 143) | void
function mult_dense_mat_d (line 179) | void
function mult_sparse_dense_mat_transpose (line 215) | void
function cpvec (line 260) | void cpvec(double *copy, int beg, int end, double *vec)
function dot (line 272) | double dot(double *vec1, int beg, int end, double *vec2)
function scadd (line 288) | void scadd(double *vec1, int beg, int end, double fac, double *vec2)
function vecscale (line 300) | void vecscale(double *vec1, int beg, int end, double alpha, double *vec2)
function norm (line 312) | double norm(double *vec, int beg, int end)
function orthog1 (line 321) | void orthog1(int n, double *vec /* vector to be orthogonalized against 1 */
function init_vec_orth1 (line 343) | void init_vec_orth1(int n, double *vec)
function right_mult_with_vector (line 355) | void
function right_mult_with_vector_f (line 372) | void
function vectors_subtraction (line 389) | void
function vectors_addition (line 400) | void
function vectors_mult_addition (line 411) | void
function vectors_scalar_mult (line 423) | void
function copy_vector (line 433) | void copy_vector(int n, double *source, double *dest)
function vectors_inner_product (line 441) | double vectors_inner_product(int n, double *vector1, double *vector2)
function max_abs (line 453) | double max_abs(int n, double *vector)
function orthogvec (line 466) | void orthogvec(int n, double *vec1, /* vector to be orthogonalized */
function mat_mult_vec (line 483) | void mat_mult_vec(vtx_data * L, int n, double *vec, double *result)
function right_mult_with_vector_transpose (line 504) | void
function right_mult_with_vector_d (line 522) | void
function orthog1f (line 546) | void orthog1f(int n, float *vec)
function right_mult_with_vectorf (line 566) | void right_mult_with_vectorf
function right_mult_with_vector_fd (line 580) | void right_mult_with_vector_fd
function right_mult_with_vector_ff (line 595) | void right_mult_with_vector_ff
function vectors_substractionf (line 620) | void
function vectors_additionf (line 630) | void
function vectors_mult_additionf (line 640) | void
function vectors_scalar_multf (line 650) | void vectors_scalar_multf(int n, float *vector, float alpha, float *result)
function copy_vectorf (line 659) | void copy_vectorf(int n, float *source, float *dest)
function vectors_inner_productf (line 667) | double vectors_inner_productf(int n, float *vector1, float *vector2)
function set_vector_val (line 679) | void set_vector_val(int n, double val, double *result)
function set_vector_valf (line 687) | void set_vector_valf(int n, float val, float * result) {
function max_absf (line 694) | double max_absf(int n, float *vector)
function square_vec (line 706) | void square_vec(int n, float *vec)
function invert_vec (line 715) | void invert_vec(int n, float *vec)
function sqrt_vec (line 726) | void sqrt_vec(int n, float *vec)
function sqrt_vecf (line 735) | void sqrt_vecf(int n, float *source, float *target)
function invert_sqrt_vec (line 746) | void invert_sqrt_vec(int n, float *vec)
function init_vec_orth1f (line 758) | void init_vec_orth1f(int n, float *vec)
function mat_mult_vecf (line 773) | void mat_mult_vecf(vtx_data * L, int n, float *vec, float *result)
FILE: experimental/neatogen/mem.h
type Freelist (line 32) | typedef struct freelist {
FILE: experimental/neatogen/memory.c
type Freenode (line 20) | typedef struct freenode {
type Freeblock (line 24) | typedef struct freeblock {
function gcd (line 33) | static int gcd(int y, int x)
function freeinit (line 46) | void freeinit(Freelist * fl, int size)
function makefree (line 89) | void makefree(void *curr, Freelist * fl)
FILE: experimental/neatogen/mosek_quad_solve.c
function printstr (line 14) | static void MSKAPI printstr(void *handle, char str[])
function MosekEnv (line 33) | MosekEnv* mosek_init_hier(
function mosek_quad_solve_hier (line 251) | void mosek_quad_solve_hier(MosekEnv *mskEnv, float *b,int n,float* coord...
function MosekEnv (line 306) | MosekEnv* mosek_init_sep(
function mosek_quad_solve_sep (line 432) | void mosek_quad_solve_sep(MosekEnv *mskEnv,int n, float *b,float* coords) {
function mosek_delete (line 466) | void mosek_delete(MosekEnv *mskEnv) {
FILE: experimental/neatogen/mosek_quad_solve.h
type MosekEnv (line 9) | typedef struct {
FILE: experimental/neatogen/neatoinit.c
function neato_nodesize (line 46) | void neato_nodesize(node_t * n, bool flip)
function neato_init_node (line 55) | void neato_init_node(node_t * n)
function neato_init_edge (line 62) | void neato_init_edge(edge_t * e)
function user_pos (line 69) | int user_pos(attrsym_t * posptr, attrsym_t * pinptr, node_t * np, int nG)
function neato_init_node_edge (line 127) | void neato_init_node_edge(graph_t * g)
function neato_cleanup_node (line 147) | void neato_cleanup_node(node_t * n)
function neato_free_splines (line 157) | void neato_free_splines(edge_t * e)
function neato_cleanup_edge (line 169) | void neato_cleanup_edge(edge_t * e)
function neato_cleanup_graph (line 176) | void neato_cleanup_graph(graph_t * g)
function neato_cleanup (line 183) | void neato_cleanup(graph_t * g)
function numFields (line 197) | static int numFields(unsigned char *pos)
function set_elabel (line 214) | static void set_elabel(edge_t * e, textlabel_t * l, char *name)
function cluster_data (line 228) | static cluster_data* cluster_map(graph_t *mastergraph, graph_t *g) {
function freeClusterData (line 290) | static void freeClusterData(cluster_data *c) {
function user_spline (line 305) | static int user_spline(attrsym_t * E_pos, edge_t * e)
type pos_edge (line 404) | typedef enum { NoEdges, SomeEdges, AllEdges } pos_edge;
function pos_edge (line 411) | static pos_edge nop_init_edges(Agraph_t * g)
function chkBB (line 443) | static int chkBB(Agraph_t * g, attrsym_t * G_bb)
function add_cluster (line 456) | static void add_cluster(Agraph_t * g, Agraph_t * subg)
function dfs (line 470) | static void
function nop_init_graphs (line 493) | static void
function translateE (line 521) | static void translateE(edge_t * e, point offset)
function translateG (line 562) | static void translateG(Agraph_t * g, point offset)
function translate (line 582) | static void translate(Agraph_t * g, pos_edge posEdges)
function init_nop (line 611) | int init_nop(Agraph_t * g, int adjust)
function neato_init_graphn (line 664) | void neato_init_graphn(Agraph_t * g, int dfltdim)
function neato_init_graph (line 671) | void neato_init_graph(Agraph_t * g)
function neatoModel (line 676) | static int neatoModel(graph_t * g)
function neatoMode (line 699) | static int neatoMode(graph_t * g)
function checkEdge (line 728) | static int checkEdge(PointMap * pm, edge_t * ep, int idx)
function dfsCycle (line 746) | static void
function acyclic (line 776) | static void
function vtx_data (line 815) | static vtx_data *makeGraphData(graph_t * g, int nv, int *nedges, int mod...
function freeGraphData (line 964) | static void freeGraphData(vtx_data * graph)
function initRegular (line 983) | static void initRegular(graph_t * G, int nG)
function checkStart (line 1017) | int checkStart(graph_t * G, int nG, int dflt)
function dumpData (line 1065) | void dumpData(graph_t * g, vtx_data * gp, int nv, int ne)
function majorization (line 1096) | static void
function subset_model (line 1222) | static void subset_model(Agraph_t * G, int nG)
function kkNeato (line 1243) | static void kkNeato(Agraph_t * g, int nG, int model)
function neatoLayout (line 1274) | void neatoLayout(Agraph_t * mg, Agraph_t * g, int layoutMode, int layout...
function addZ (line 1300) | static void
function neato_layout (line 1316) | void neato_layout(Agraph_t * g)
FILE: experimental/neatogen/neatosplines.c
function spline_merge (line 36) | static bool spline_merge(node_t * n)
function swap_ends_p (line 41) | static bool swap_ends_p(edge_t * e)
function make_barriers (line 48) | static void
function Ppoint_t (line 86) | static Ppoint_t recPt(double x, double y, point c, double sep)
function makePortLabels (line 95) | static void makePortLabels(edge_t * e)
function endPoints (line 111) | static void endPoints(splines * spl, point * p, point * q)
function addEdgeLabels (line 140) | static void addEdgeLabels(edge_t * e, point rp, point rq)
type edgeinfo (line 195) | typedef struct {
type edgeitem (line 201) | typedef struct {
function freeitem (line 220) | static void freeitem(Dt_t * d, edgeitem * obj, Dtdisc_t * disc)
function cmpitems (line 225) | static int
function edge_t (line 267) | static edge_t *equivEdge(Dt_t * map, edge_t * e)
function makeSelfArcs (line 316) | void makeSelfArcs(path * P, edge_t * e, int stepx)
function makeStraightEdge (line 345) | static void makeStraightEdge(graph_t * g, edge_t * e)
function Ppoly_t (line 427) | Ppoly_t *makeObstacle(node_t * n, double SEP)
function Ppolyline_t (line 495) | Ppolyline_t
function makeSpline (line 537) | void makeSpline(edge_t * e, Ppoly_t ** obs, int npoly, bool chkPts)
function _spline_edges (line 591) | static int _spline_edges(graph_t * g, double SEP, int splines)
function splineEdges (line 687) | int
function spline_edges1 (line 728) | int spline_edges1(graph_t * g, int splines)
function spline_edges0 (line 747) | void spline_edges0(graph_t * g)
function spline_edges (line 762) | void spline_edges(graph_t * g)
function scaleEdge (line 784) | static void scaleEdge(edge_t * e, double xf, double yf)
function scaleBB (line 826) | static void scaleBB(graph_t * g, double xf, double yf)
function _neato_set_aspect (line 848) | static void _neato_set_aspect(graph_t * g)
function neato_set_aspect (line 932) | void neato_set_aspect(graph_t * g)
FILE: experimental/neatogen/opt_arrangement.c
function construct_b (line 19) | static void
function compute_y_coords (line 46) | void
FILE: experimental/neatogen/pca.c
function PCA_alloc (line 27) | void
function iterativePCA_1D (line 81) | bool
function dist (line 111) | double dist(double **coords, int dim, int p1, int p2)
function weight_laplacian (line 125) | void weight_laplacian(double **X, int n, int dim, vtx_data * laplacian)
FILE: experimental/neatogen/poly.c
function polyFree (line 38) | void polyFree()
function breakPoly (line 49) | void breakPoly(Poly * pp)
function bbox (line 54) | static void bbox(Point * verts, int cnt, Point * o, Point * c)
function inflate (line 79) | static void inflate(Point * prev, Point * cur, Point * next, double margin)
function inflatePts (line 92) | static void inflatePts(Point * verts, int cnt, double margin)
function inflatePts (line 118) | static void inflatePts(Point * verts, int cnt, double margin)
function isBox (line 132) | static int isBox(Point * verts, int cnt)
function Point (line 148) | static Point makeScaledPoint(int x, int y)
function Point (line 156) | static Point *genRound(Agnode_t * n, int *sidep)
function makePoly (line 180) | void makePoly(Poly * pp, Agnode_t * n, double margin)
function pintersect (line 260) | static int
function edgesIntersect (line 273) | static int edgesIntersect(Point * P, Point * Q, int n, int m)
function inPoly (line 328) | static int inPoly(Point vertex[], int n, Point q)
function inBox (line 385) | static int inBox(Point p, Point origin, Point corner)
function transCopy (line 392) | static void transCopy(Point * inp, int cnt, Point off, Point * outp)
function polyOverlap (line 404) | int polyOverlap(Point p, Poly * pp, Point q, Poly * qp)
FILE: experimental/neatogen/poly.h
type Poly (line 28) | typedef struct {
FILE: experimental/neatogen/printvis.c
type Ppoint_t (line 19) | typedef Ppoint_t point;
function printvis (line 22) | void printvis(vconfig_t * cp)
FILE: experimental/neatogen/quad_prog_solve.c
function ensureMonotonicOrdering (line 49) | static void
function ensureMonotonicOrderingWithGaps (line 65) | static void
function computeHierarchyBoundaries (line 100) | static void
function constrained_majorization_new (line 111) | int
function compare_incr (line 393) | static int compare_incr(const void *a, const void *b) {
function constrained_majorization_gradient_projection (line 405) | int constrained_majorization_gradient_projection(CMajEnv *e,
function constrained_majorization_new_with_gaps (line 566) | int
function deleteCMajEnv (line 906) | void
function CMajEnv (line 923) | CMajEnv*
FILE: experimental/neatogen/quad_prog_solver.h
type CMajEnv (line 23) | typedef struct {
FILE: experimental/neatogen/quad_prog_vpsc.c
function constrained_majorization_vpsc (line 31) | int
function CMajEnvVPSC (line 154) | CMajEnvVPSC*
function deleteCMajEnvVPSC (line 282) | void
function generateNonoverlapConstraints (line 320) | void generateNonoverlapConstraints(
function removeoverlaps (line 502) | void removeoverlaps(int n,float** coords, vsep_options* opt) {
function DigColaLevel (line 521) | DigColaLevel* assign_digcola_levels(int *ordering, int n, int *level_ind...
function delete_digcola_levels (line 548) | void delete_digcola_levels(DigColaLevel *l, int num_levels) {
function print_digcola_levels (line 555) | void print_digcola_levels(FILE *logfile, DigColaLevel *levels, int num_l...
function get_num_digcola_constraints (line 570) | int get_num_digcola_constraints(DigColaLevel *levels, int num_levels) {
FILE: experimental/neatogen/quad_prog_vpsc.h
type CMajEnvVPSC (line 22) | typedef struct CMajEnvVPSC {
type DigColaLevel (line 59) | typedef struct {
FILE: experimental/neatogen/simple.h
type position (line 34) | struct position {
type vertex (line 39) | struct vertex {
type polygon (line 45) | struct polygon {
type intersection (line 49) | struct intersection {
type active_edge (line 55) | struct active_edge {
type active_edge_list (line 59) | struct active_edge_list {
type data (line 63) | struct data {
FILE: experimental/neatogen/site.c
function siteinit (line 28) | void siteinit()
function Site (line 39) | Site *getsite()
function dist (line 44) | double dist(Site * s, Site * t)
function makevertex (line 56) | void makevertex(Site * v)
function deref (line 66) | void deref(Site * v)
function ref (line 73) | void ref(Site * v)
FILE: experimental/neatogen/site.h
type Site (line 29) | typedef struct Site {
FILE: experimental/neatogen/smart_ini_x.c
function standardize (line 20) | static void
function mat_mult_vec_orthog (line 38) | static void
function power_iteration_orthog (line 59) | static void
function CMDS_orthog (line 223) | static void
function IMDS_given_dim (line 252) | void IMDS_given_dim(vtx_data* graph, int n, double* given_coords,
FILE: experimental/neatogen/solve.c
function solve (line 26) | void solve(double *a, double *b, double *c, int n)
FILE: experimental/neatogen/stress.c
type dist_data (line 98) | typedef struct {
function compute_stressf (line 105) | static double compute_stressf(float **coords, float *lap, int dim, int n)
function compute_stress (line 138) | static double compute_stress(double **coords, int **Dij, int dim, int n)
function compute_stress1 (line 168) | static double
function initLayout (line 206) | int
function stress_majorization_kD (line 301) | int stress_majorization_kD(vtx_data * graph, /* Input graph in sparse re...
function local_beautify_kD (line 443) | static void
function sparse_stress_majorization_kD (line 550) | int sparse_stress_majorization_kD(vtx_data * graph, /* Input graph in sp...
function sparse_stress_subspace_majorization_kD (line 899) | static int sparse_stress_subspace_majorization_kD(vtx_data * graph, /* I...
function stress_majorization_kD_mkernel (line 1469) | int stress_majorization_kD_mkernel(vtx_data * graph, /* Input graph in s...
FILE: experimental/neatogen/stuff.c
function drand48 (line 31) | double drand48(void)
function fpow32 (line 40) | double fpow32(double x)
function distvec (line 46) | double distvec(double *p0, double *p1, double *vec)
function free_array (line 76) | void free_array(double **rv)
function free_3array (line 104) | static void free_3array(double ***rv)
function doubleattr (line 118) | double doubleattr(void *obj, int index, double defval)
function degreeKind (line 133) | static int degreeKind(graph_t * g, node_t * n, node_t ** op)
function node_t (line 169) | static node_t *prune(graph_t * G, node_t * np, node_t * next)
function setEdgeLen (line 193) | static double setEdgeLen(graph_t * G, node_t * np, int lenx)
function scan_graph_mode (line 216) | int scan_graph_mode(graph_t * G, int mode)
function scan_graph (line 283) | int scan_graph(graph_t * g)
function free_scan_graph (line 288) | void free_scan_graph(graph_t * g)
function jitter_d (line 302) | void jitter_d(node_t * np, int nG, int n)
function jitter3d (line 309) | void jitter3d(node_t * np, int nG)
function randompos (line 314) | void randompos(node_t * np, int nG)
function initial_positions (line 322) | void initial_positions(graph_t * G, int nG)
function diffeq_model (line 346) | void diffeq_model(graph_t * G, int nG)
function total_e (line 399) | static double total_e(graph_t * G, int nG)
function solve_model (line 423) | void solve_model(graph_t * G, int nG)
function update_arrays (line 443) | void update_arrays(graph_t * G, int nG, int i)
function D2E (line 471) | void D2E(graph_t * G, int nG, int n, double *M)
function final_energy (line 505) | void final_energy(graph_t * G, int nG)
function node_t (line 511) | node_t *choose_node(graph_t * G, int nG)
function move_node (line 562) | void move_node(graph_t * G, int nG, node_t * n)
function heapup (line 593) | void heapup(node_t * v)
function heapdown (line 610) | void heapdown(node_t * v)
function neato_enqueue (line 634) | void neato_enqueue(node_t * v)
function node_t (line 646) | node_t *neato_dequeue(void)
function shortest_path (line 664) | void shortest_path(graph_t * G, int nG)
function s1 (line 681) | void s1(graph_t * G, node_t * node)
function make_spring (line 715) | void make_spring(graph_t * G, node_t * u, node_t * v, double f)
function allow_edits (line 724) | int allow_edits(int nsec)
FILE: experimental/neatogen/voronoi.c
function voronoi (line 25) | void voronoi(int triangulate, Site * (*nextsite) (void))
FILE: experimental/solve_VPSC/libvpsc/block.cpp
function Constraint (line 140) | Constraint *Block::findMinInConstraint() {
function Constraint (line 189) | Constraint *Block::findMinOutConstraint() {
function Constraint (line 323) | Constraint *Block::findMinLM() {
function Constraint (line 329) | Constraint *Block::findMinLMBetween(Variable* const lv, Variable* const ...
function Constraint (line 355) | Constraint* Block::splitBetween(Variable* const vl, Variable* const vr,
function ostream (line 394) | ostream& operator <<(ostream &os, const Block& b)
FILE: experimental/solve_VPSC/libvpsc/block.h
function class (line 24) | class Block
FILE: experimental/solve_VPSC/libvpsc/blocks.h
function class (line 34) | class Blocks : public std::set<Block*>
FILE: experimental/solve_VPSC/libvpsc/constraint.h
function class (line 19) | class Constraint
function compareConstraints (line 37) | static inline bool compareConstraints(Constraint *const &l, Constraint *...
FILE: experimental/solve_VPSC/libvpsc/csolve_VPSC.cpp
function Variable (line 19) | Variable* newVariable(int id, double desiredPos, double weight) {
function Constraint (line 22) | Constraint* newConstraint(Variable* left, Variable* right, double gap) {
function VPSC (line 25) | VPSC* newVPSC(int n, Variable* vs[], int m, Constraint* cs[]) {
function VPSC (line 28) | VPSC* newIncVPSC(int n, Variable* vs[], int m, Constraint* cs[]) {
function genXConstraints (line 32) | int genXConstraints(int n, boxf* bb, Variable** vs, Constraint*** cs,int...
function genYConstraints (line 43) | int genYConstraints(int n, boxf* bb, Variable** vs, Constraint*** cs) {
function Constraint (line 55) | Constraint** newConstraints(int m) {
function deleteConstraints (line 58) | void deleteConstraints(int m, Constraint **cs) {
function deleteConstraint (line 64) | void deleteConstraint(Constraint* c) {
function deleteVariable (line 67) | void deleteVariable(Variable* v) {
function satisfyVPSC (line 70) | void satisfyVPSC(VPSC* vpsc) {
function getSplitCnt (line 78) | int getSplitCnt(IncVPSC *vpsc) {
function deleteVPSC (line 81) | void deleteVPSC(VPSC *vpsc) {
function solveVPSC (line 85) | void solveVPSC(VPSC* vpsc) {
function splitIncVPSC (line 88) | void splitIncVPSC(IncVPSC* vpsc) {
function setVariableDesiredPos (line 91) | void setVariableDesiredPos(Variable *v, double desiredPos) {
function getVariablePos (line 94) | double getVariablePos(Variable *v) {
function remapInConstraints (line 97) | void remapInConstraints(Variable *u, Variable *v, double dgap) {
function remapOutConstraints (line 106) | void remapOutConstraints(Variable *u, Variable *v, double dgap) {
function getLeftVarID (line 115) | int getLeftVarID(Constraint *c) {
function getRightVarID (line 118) | int getRightVarID(Constraint *c){
function getSeparation (line 121) | double getSeparation(Constraint *c){
FILE: experimental/solve_VPSC/libvpsc/csolve_VPSC.h
type Variable (line 16) | typedef struct Variable Variable;
type Constraint (line 21) | typedef struct Constraint Constraint;
type VPSC (line 24) | typedef struct VPSC VPSC;
type pointf (line 38) | typedef struct pointf_s { double x, y; } pointf;
type boxf (line 39) | typedef struct { pointf LL, UR; } boxf;
type IncVPSC (line 47) | typedef struct IncVPSC IncVPSC;
FILE: experimental/solve_VPSC/libvpsc/generate-constraints.cpp
type Node (line 32) | struct Node
method Node (line 43) | Node(Variable *v, Rectangle *r, double p) : v(v),r(r),pos(p) {
method addLeftNeighbour (line 52) | void addLeftNeighbour(Node *u) {
method addRightNeighbour (line 55) | void addRightNeighbour(Node *u) {
method setNeighbours (line 58) | void setNeighbours(NodeSet *left, NodeSet *right) {
type CmpNodePos (line 33) | struct CmpNodePos { bool operator()(const Node* u, const Node* v) const; }
type Node (line 37) | struct Node {
method Node (line 43) | Node(Variable *v, Rectangle *r, double p) : v(v),r(r),pos(p) {
method addLeftNeighbour (line 52) | void addLeftNeighbour(Node *u) {
method addRightNeighbour (line 55) | void addRightNeighbour(Node *u) {
method setNeighbours (line 58) | void setNeighbours(NodeSet *left, NodeSet *right) {
function NodeSet (line 101) | NodeSet* getLeftNeighbours(NodeSet &scanline,Node *v) {
function NodeSet (line 116) | NodeSet* getRightNeighbours(NodeSet &scanline,Node *v) {
type Event (line 133) | struct Event {
method Event (line 137) | Event(EventType t, Node *v, double p) : type(t),v(v),pos(p) {}
function compare_events (line 140) | int compare_events(const void *a, const void *b) {
function generateXConstraints (line 166) | int generateXConstraints(const int n, Rectangle** rs, Variable** vars, C...
function generateYConstraints (line 251) | int generateYConstraints(const int n, Rectangle** rs, Variable** vars, C...
FILE: experimental/solve_VPSC/libvpsc/generate-constraints.h
function class (line 16) | class Rectangle {
FILE: experimental/solve_VPSC/libvpsc/pairingheap/PairingHeap.cpp
function T (line 88) | const T & PairingHeap<T>::findMin( ) const
function ostream (line 313) | ostream& operator <<(ostream &os, const PairingHeap<T> &b)
FILE: experimental/solve_VPSC/libvpsc/pairingheap/PairingHeap.h
function isEmpty (line 79) | bool isEmpty( ) const;
function merge (line 93) | void merge( PairingHeap<T> *rhs )
FILE: experimental/solve_VPSC/libvpsc/pairingheap/dsexceptions.h
function class (line 4) | class Underflow { }
function class (line 5) | class Overflow { }
function class (line 6) | class OutOfMemory { }
function class (line 7) | class BadIterator { }
FILE: experimental/solve_VPSC/libvpsc/placement_SolveVPSC.cpp
function JNIEXPORT (line 13) | JNIEXPORT jdouble JNICALL Java_placement_SolveVPSC_solve
function JNIEXPORT (line 66) | JNIEXPORT jint JNICALL Java_placement_SolveVPSC_generateXConstraints
function JNIEXPORT (line 80) | JNIEXPORT jint JNICALL Java_placement_SolveVPSC_generateYConstraints
function JNIEXPORT (line 94) | JNIEXPORT void JNICALL Java_placement_SolveVPSC_getConstraints
function JNIEXPORT (line 110) | JNIEXPORT void JNICALL Java_placement_SolveVPSC_removeOverlaps
FILE: experimental/solve_VPSC/libvpsc/remove_rectangle_overlap-test.cpp
function possibly_eq (line 13) | static bool
function possibly_le (line 19) | static bool
function show_rects (line 25) | static void
function sgn0 (line 41) | static int
function test_case (line 53) | static void
function main (line 116) | int main()
FILE: experimental/solve_VPSC/libvpsc/remove_rectangle_overlap.cpp
function removeRectangleOverlap (line 42) | void removeRectangleOverlap(int n, Rectangle *rs[], double xBorder, doub...
FILE: experimental/solve_VPSC/libvpsc/removeoverlap.cpp
function removeoverlap (line 23) | void removeoverlap(GSList const *const items, double const xGap, double ...
FILE: experimental/solve_VPSC/libvpsc/solve_VPSC.cpp
function Constraint (line 274) | Constraint* IncVPSC::mostViolated(ConstraintList &l) {
type node (line 310) | struct node {
FILE: experimental/solve_VPSC/libvpsc/solve_VPSC.h
function class (line 31) | class VPSC {
function class (line 53) | class IncVPSC : public VPSC {
FILE: experimental/solve_VPSC/libvpsc/variable.h
type std (line 19) | typedef std::vector<Constraint*> Constraints;
function class (line 20) | class Variable
FILE: experimental/solve_VPSC/tests/block.cpp
function test1 (line 7) | void test1() {
function test2 (line 30) | void test2() {
function main (line 63) | int main() {
FILE: experimental/solve_VPSC/tests/csolve_VPSC.c
function main (line 5) | int main(int argc, char **argv) {
FILE: experimental/solve_VPSC/tests/rectangleoverlap.cpp
function removeoverlaps (line 11) | void removeoverlaps(int n, Rectangle **rs) {
function countOverlaps (line 72) | unsigned countOverlaps(Rectangle **rs, unsigned n) {
function getRand (line 88) | inline double getRand(double range) {
function Rectangle (line 91) | Rectangle **generateRandomRects(unsigned n) {
function Rectangle (line 111) | Rectangle **generateRects(double coords[][4], unsigned n) {
function test (line 118) | void test(Rectangle **rs, unsigned n, double &cost, double &duration) {
function main (line 659) | int main() {
FILE: experimental/solve_VPSC/tests/satisfy_inc.cpp
function getRand (line 10) | inline int getRand(const int range) {
function approxEquals (line 13) | inline bool approxEquals(const double a, const double b) {
function test1 (line 19) | void test1() {
function test2 (line 34) | void test2() {
function test3 (line 61) | void test3() {
function test4 (line 86) | void test4() {
function test5 (line 119) | void test5() {
function rand_test (line 156) | void rand_test(int n, int m) {
function main (line 197) | int main() {
Copy disabled (too large)
Download .json
Condensed preview — 1011 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (18,148K chars).
[
{
"path": ".github/workflows/build-and-test.yml",
"chars": 261,
"preview": "name: build-and-test\non:\n workflow_dispatch:\n pull_request:\njobs:\n build-and-test:\n runs-on: ubuntu-22.04\n step"
},
{
"path": ".gitignore",
"chars": 25,
"preview": ".DS_Store\n.vscode\n.idea\n\n"
},
{
"path": "README.md",
"chars": 5741,
"preview": "Adaptagrams\n===========\n\nAdaptagrams is a library of tools and reusable code for adaptive diagramming\napplications, for "
},
{
"path": "cola/.gitignore",
"chars": 768,
"preview": "# http://www.gnu.org/software/automake\n\nMakefile.in\n\n# http://www.gnu.org/software/autoconf\n\n/autom4te.cache\n/aclocal.m4"
},
{
"path": "cola/AUTHORS",
"chars": 76,
"preview": "Tim Dwyer <Tim.Dwyer@monash.edu>\nMichael Wybrow <Michael.Wybrow@monash.edu>\n"
},
{
"path": "cola/COPYING",
"chars": 2082,
"preview": "Adaptagrams is free software.\n\nEvery source file in the implementation of Adaptagrams is available to be\nredistributed a"
},
{
"path": "cola/ChangeLog",
"chars": 0,
"preview": ""
},
{
"path": "cola/Doxyfile",
"chars": 124808,
"preview": "# Doxyfile 1.9.8\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
},
{
"path": "cola/INSTALL",
"chars": 50,
"preview": "from svn\nautoreconf\n./configure\nmake\nmake install\n"
},
{
"path": "cola/LICENSE",
"chars": 24479,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 19"
},
{
"path": "cola/Makefile-swig-java",
"chars": 2474,
"preview": "OSNAME:=$(shell uname -s | sed 's/_.*//')\n\nifeq ($(OSNAME),Darwin)\n\tCPPFLAGS =\n\tCXXFLAGS += -std=c++11\n\t# Change path to"
},
{
"path": "cola/Makefile-swig-python",
"chars": 811,
"preview": "OSNAME:=$(shell uname -s | sed 's/_.*//')\n\nCOMPILER =\n# to get a list of available compilers run\n# python swig-python-se"
},
{
"path": "cola/Makefile.am",
"chars": 106,
"preview": "ACLOCAL_AMFLAGS = -I m4\nAUTOMAKE_OPTIONS = gnu\nSUBDIRS = libavoid libvpsc libcola libtopology libdialect\n\n"
},
{
"path": "cola/NEWS",
"chars": 0,
"preview": ""
},
{
"path": "cola/README",
"chars": 39,
"preview": "See README.md in the parent directory.\n"
},
{
"path": "cola/__init__.py",
"chars": 0,
"preview": ""
},
{
"path": "cola/adaptagrams.i",
"chars": 11875,
"preview": "/* This is a SWIG interface file for generating interfaces to the Adpatagrams\n * libraries for languages other than C++."
},
{
"path": "cola/autogen.sh",
"chars": 1381,
"preview": "#!/bin/sh -xe\n#\n# We use gnu automake to build. I've tried to make the contents of the\n# repository as platform agnosti"
},
{
"path": "cola/buildPythonSWIG.sh",
"chars": 74,
"preview": "#!/bin/sh\n\nmake -f Makefile-swig-python CPPFLAGS=\"-Wno-c++11-extensions\"\n\n"
},
{
"path": "cola/buildSWIGVersionForMac.sh",
"chars": 422,
"preview": "#!/bin/sh\n\n# Builds a universeral 32/64-bet Mac Java version of the Adaptagrams libraries.\n\nFATFLAGS=\"-arch i386 -arch x"
},
{
"path": "cola/configure.ac",
"chars": 2094,
"preview": "AC_INIT([libcola],[0.1])\nAC_CONFIG_MACRO_DIR([m4])\nAC_CONFIG_SRCDIR(libcola/cola.h)\nAC_CONFIG_HEADERS([libcola/config.h]"
},
{
"path": "cola/libavoid/Doxyfile",
"chars": 124421,
"preview": "# Doxyfile 1.9.8\n\n# This file describes the settings to be used by the documentation system\n# doxygen (www.doxygen.org) "
},
{
"path": "cola/libavoid/LICENSE.LGPL",
"chars": 24479,
"preview": " GNU LESSER GENERAL PUBLIC LICENSE\n Version 2.1, February 1999\n\n Copyright (C) 19"
},
{
"path": "cola/libavoid/Makefile.am",
"chars": 1659,
"preview": "EXTRA_DIST=libavoid.pc.in\n\nlib_LTLIBRARIES = libavoid.la\nlibavoid_la_CPPFLAGS = -I$(top_srcdir) -I$(includedir)/libavoid"
},
{
"path": "cola/libavoid/README",
"chars": 1546,
"preview": "libavoid - Fast, Incremental, Object-avoiding Line Router\n\nCopyright (C) 2004-2009 Monash University\n\nA cross-platform "
},
{
"path": "cola/libavoid/actioninfo.cpp",
"chars": 4514,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/actioninfo.h",
"chars": 2460,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/assertions.h",
"chars": 1462,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/connectionpin.cpp",
"chars": 13148,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/connectionpin.h",
"chars": 13127,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/connector.cpp",
"chars": 79043,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/connector.h",
"chars": 22545,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/connend.cpp",
"chars": 11777,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/connend.h",
"chars": 9722,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/debug.h",
"chars": 2309,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/debughandler.h",
"chars": 4225,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/dllexport.h",
"chars": 1154,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/doc/description.doc",
"chars": 3737,
"preview": "/*!\n\n\\if LIBAVOID_DOC\n@mainpage libavoid: Object-avoiding orthogonal and polyline connector routing library\n\\endif\n\n\\if "
},
{
"path": "cola/libavoid/doc/example.doc",
"chars": 5673,
"preview": "\n/*!\n\n@page libavoid_example libavoid — Documented code example\n\nlibavoid is a C++ library. Its code is all withi"
},
{
"path": "cola/libavoid/geometry.cpp",
"chars": 15473,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/geometry.h",
"chars": 4507,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/geomtypes.cpp",
"chars": 18163,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/geomtypes.h",
"chars": 14423,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/graph.cpp",
"chars": 18623,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/graph.h",
"chars": 3523,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/hyperedge.cpp",
"chars": 12826,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/hyperedge.h",
"chars": 8833,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/hyperedgeimprover.cpp",
"chars": 42480,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/hyperedgeimprover.h",
"chars": 6061,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/hyperedgetree.cpp",
"chars": 24624,
"preview": "/* \n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 2"
},
{
"path": "cola/libavoid/hyperedgetree.h",
"chars": 4597,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/junction.cpp",
"chars": 6410,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/junction.h",
"chars": 8382,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/libavoid.h",
"chars": 1629,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/libavoid.pc.in",
"chars": 343,
"preview": "prefix=@prefix@\nexec_prefix=@exec_prefix@\nlibdir=@libdir@\nincludedir=@includedir@\n\nName: libavoid\nDescription: A library"
},
{
"path": "cola/libavoid/libavoid.sln",
"chars": 14563,
"preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 11.00\r\n# Visual Studio 2010\r\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-"
},
{
"path": "cola/libavoid/libavoid.vcxproj",
"chars": 9466,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/makepath.cpp",
"chars": 51891,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/makepath.h",
"chars": 1244,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/mtst.cpp",
"chars": 36472,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/mtst.h",
"chars": 4404,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/obstacle.cpp",
"chars": 7918,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/obstacle.h",
"chars": 4945,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/orthogonal.cpp",
"chars": 118396,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/orthogonal.h",
"chars": 1074,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/router.cpp",
"chars": 99206,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/router.h",
"chars": 38034,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/scanline.cpp",
"chars": 16985,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/scanline.h",
"chars": 3315,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/shape.cpp",
"chars": 8968,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/shape.h",
"chars": 6172,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/tests/2junctions.cpp",
"chars": 4743,
"preview": "#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\nusing namespace Avoid;\r\n\r\nint test()\r\n{\r\n\tAvoid::ConnEnd end1;\r\n\tAvo"
},
{
"path": "cola/libavoid/tests/Makefile.am",
"chars": 5615,
"preview": "AM_CPPFLAGS = -I$(top_srcdir)\n\nLDADD = $(top_builddir)/libavoid/libavoid.la\n\n# Disabled tests:\n#\tcorneroverlap01\n#\tunsat"
},
{
"path": "cola/libavoid/tests/buildOrthogonalChannelInfo1.cpp",
"chars": 3232,
"preview": "#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\nusing namespace Avoid;\r\n\r\nvoid test()\r\n{\r\n\tAvoid::ConnEnd end1;\r\n\tAv"
},
{
"path": "cola/libavoid/tests/checkpointNudging1.cpp",
"chars": 96780,
"preview": "// KEGG -> SBGN example #10\n//\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router"
},
{
"path": "cola/libavoid/tests/checkpointNudging2.cpp",
"chars": 97183,
"preview": "// KEGG -> SBGN example #10\n//\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router"
},
{
"path": "cola/libavoid/tests/checkpointNudging3.cpp",
"chars": 249845,
"preview": "// Based on ec00240-libavoid-debug-error-high-precision.svg\n// Problem where epsilon difference could cause a segment to"
},
{
"path": "cola/libavoid/tests/checkpoints01.cpp",
"chars": 3043,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/checkpoints02.cpp",
"chars": 4554,
"preview": "// This is a regression test checking for a problem where orthogonal c-bends \n// due to checkpoints were being incorrect"
},
{
"path": "cola/libavoid/tests/checkpoints03.cpp",
"chars": 3977,
"preview": "// This is a regression test for a problem where free segments slightly offset\n// from effectively fixed segments going "
},
{
"path": "cola/libavoid/tests/complex.cpp",
"chars": 3385,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2004-"
},
{
"path": "cola/libavoid/tests/connectionpin01.cpp",
"chars": 2344,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2010 "
},
{
"path": "cola/libavoid/tests/connectionpin02.cpp",
"chars": 4361,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2010 "
},
{
"path": "cola/libavoid/tests/connectionpin03.cpp",
"chars": 14291,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/connendmove.cpp",
"chars": 2928,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2004-"
},
{
"path": "cola/libavoid/tests/corneroverlap01.cpp",
"chars": 6528,
"preview": "// From cornertouching_libavoid-debug bug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Ro"
},
{
"path": "cola/libavoid/tests/endlessLoop01.cpp",
"chars": 7217,
"preview": "#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\nusing namespace Avoid;\r\n\r\nvoid outputDiagram(Avoid::Router * router)"
},
{
"path": "cola/libavoid/tests/example.cpp",
"chars": 2591,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2004-"
},
{
"path": "cola/libavoid/tests/finalSegmentNudging1.cpp",
"chars": 195912,
"preview": "// KEGG -> SBGN example #330\n//\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *route"
},
{
"path": "cola/libavoid/tests/finalSegmentNudging2.cpp",
"chars": 13152,
"preview": "// KEGG -> SBGN example #072\n//\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *route"
},
{
"path": "cola/libavoid/tests/finalSegmentNudging3.cpp",
"chars": 99285,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/forwardFlowingConnectors01.cpp",
"chars": 14493,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(OrthogonalRout"
},
{
"path": "cola/libavoid/tests/freeFloatingDirection01.cpp",
"chars": 122437,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/hola01.cpp",
"chars": 34164,
"preview": "// Regression test exercises a problem with nudging that would result in the \n// following assertion if a sub-problem wa"
},
{
"path": "cola/libavoid/tests/hyperedge01.cpp",
"chars": 11542,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Orth"
},
{
"path": "cola/libavoid/tests/hyperedge02.cpp",
"chars": 3768,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n ConnEndList hyperedgeTerminals;\n Router *r"
},
{
"path": "cola/libavoid/tests/hyperedgeLoop1.cpp",
"chars": 3451,
"preview": "// THis is a regression test for an infinite loop in the hyperedge improvement.\r\n\r\n#include \"libavoid/libavoid.h\"\r\n#incl"
},
{
"path": "cola/libavoid/tests/hyperedgeRerouting01.cpp",
"chars": 7986,
"preview": "// Based on 33004heap_corruption.cpp\r\n//\r\n#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\n\r\nvoid outputDiagram(Avoid"
},
{
"path": "cola/libavoid/tests/improveHyperedge01.cpp",
"chars": 5194,
"preview": "#include \"libavoid/libavoid.h\"\n#include <sstream>\nusing namespace Avoid;\n\nint test()\n{\n\t// The contents of this function"
},
{
"path": "cola/libavoid/tests/improveHyperedge02.cpp",
"chars": 4180,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/improveHyperedge03.cpp",
"chars": 4180,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/improveHyperedge04.cpp",
"chars": 5158,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/improveHyperedge05.cpp",
"chars": 7340,
"preview": "#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\nusing namespace Avoid;\r\n\r\nvoid outputDiagram(Avoid::Router * router)"
},
{
"path": "cola/libavoid/tests/improveHyperedge06.cpp",
"chars": 4233,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/infinity.cpp",
"chars": 1059,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/inline.cpp",
"chars": 2469,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2004-"
},
{
"path": "cola/libavoid/tests/inlineOverlap09.cpp",
"chars": 16767,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/inlineOverlap10.cpp",
"chars": 4488,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(OrthogonalRout"
},
{
"path": "cola/libavoid/tests/inlineOverlap11.cpp",
"chars": 12592,
"preview": "// From endpointOverlap.cpp\r\n#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\n\r\nextern \"C\" int main(void)\r\n{\r\n\t// The"
},
{
"path": "cola/libavoid/tests/inlineShapes.cpp",
"chars": 3485,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/inlineoverlap01.cpp",
"chars": 1196,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/inlineoverlap02.cpp",
"chars": 2508,
"preview": "// From p-overlap bug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new R"
},
{
"path": "cola/libavoid/tests/inlineoverlap03.cpp",
"chars": 2214,
"preview": "// From diffport-pins-overlap-reduced_libavoid-debug_4 bug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint ma"
},
{
"path": "cola/libavoid/tests/inlineoverlap04.cpp",
"chars": 2459,
"preview": "// From Routing_2a_libavoid-debug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *ro"
},
{
"path": "cola/libavoid/tests/inlineoverlap05.cpp",
"chars": 2726,
"preview": "// From Diplexer-reduced2_libavoid-debug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Rou"
},
{
"path": "cola/libavoid/tests/inlineoverlap06.cpp",
"chars": 2466,
"preview": "// From Routing_2a-broken_libavoid-debug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Rou"
},
{
"path": "cola/libavoid/tests/inlineoverlap07.cpp",
"chars": 3076,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/inlineoverlap08.cpp",
"chars": 3960,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/junction01.cpp",
"chars": 2928,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/junction02.cpp",
"chars": 2678,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/junction03.cpp",
"chars": 2780,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/junction04.cpp",
"chars": 3982,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2010 "
},
{
"path": "cola/libavoid/tests/latesetup.cpp",
"chars": 2953,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2004-"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash1.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash2.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash3.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash4.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash5.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash6.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash7.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/lineSegWrapperCrash8.cpp",
"chars": 70976,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/msctests/2junctions.vcxproj",
"chars": 7486,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/buildOrthogonalChannelInfo1.vcxproj",
"chars": 7518,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/checkpointNudging1.vcxproj",
"chars": 7500,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/checkpointNudging2.vcxproj",
"chars": 7500,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/checkpoints01.vcxproj",
"chars": 7490,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/connectionpin01.vcxproj",
"chars": 7494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/connectionpin02.vcxproj",
"chars": 7494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/connectionpin03.vcxproj",
"chars": 7494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/connendmove.vcxproj",
"chars": 7486,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/corneroverlap01.vcxproj",
"chars": 7494,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/example.vcxproj",
"chars": 7478,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/finalSegmentNudging1.vcxproj",
"chars": 7504,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/finalSegmentNudging2.vcxproj",
"chars": 7504,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/finalSegmentNudging3.vcxproj",
"chars": 7504,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/freeFloatingDirection01.vcxproj",
"chars": 7510,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/msctests/junction01.vcxproj",
"chars": 7484,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.micros"
},
{
"path": "cola/libavoid/tests/multiconnact.cpp",
"chars": 2407,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n * Copyright (C) 2004-"
},
{
"path": "cola/libavoid/tests/node1.cpp",
"chars": 2955,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/nudgeCrossing01.cpp",
"chars": 99279,
"preview": "// #00010\n//\n// Regression test to catch a crossing that could be intriduced during\n// nudging when the centring step co"
},
{
"path": "cola/libavoid/tests/nudgeintobug.cpp",
"chars": 2041,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/nudgeold.cpp",
"chars": 3398,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/nudgingSkipsCheckpoint01.cpp",
"chars": 63887,
"preview": "// Regression test to catch problem where orthogonal segments from the same \n// connector were being merged with others "
},
{
"path": "cola/libavoid/tests/nudgingSkipsCheckpoint02.cpp",
"chars": 145094,
"preview": "// Regression test to catch problem where orthogonal segments from the same \n// connector were being merged with others "
},
{
"path": "cola/libavoid/tests/orderassertion.cpp",
"chars": 62701,
"preview": "// Test case that triggers the orderSwapped after a second call \n// to the PtOrder::addPoints method.\n\n#include \"libavoi"
},
{
"path": "cola/libavoid/tests/orthordering01.cpp",
"chars": 3836,
"preview": "// From bandgap_1_nooverlap_reduced_libavoid-debug.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void)"
},
{
"path": "cola/libavoid/tests/orthordering02.cpp",
"chars": 3837,
"preview": "// From bandgap_1_overlap_reduced_libavoid-debug.svg.\n#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(voi"
},
{
"path": "cola/libavoid/tests/output/README.txt",
"chars": 73,
"preview": "This directory is used to for output debug svg files from the testcases.\n"
},
{
"path": "cola/libavoid/tests/overlappingRects.cpp",
"chars": 88162,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/penaltyRerouting01.cpp",
"chars": 11832,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/performance01.cpp",
"chars": 257951,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/reallyslowrouting.cpp",
"chars": 277962,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Orth"
},
{
"path": "cola/libavoid/tests/removeJunctions01.cpp",
"chars": 4196,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/restrictedNudging.cpp",
"chars": 2744,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/slowrouting.cpp",
"chars": 64638,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(\n Poly"
},
{
"path": "cola/libavoid/tests/tjunct.cpp",
"chars": 2325,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/treeRootCrash01.cpp",
"chars": 6286,
"preview": "#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\n\r\nvoid test()\r\n{\r\n\tAvoid::ConnEnd end1_0;\r\n\tAvoid::ConnEnd end2_0;\r\n"
},
{
"path": "cola/libavoid/tests/treeRootCrash02.cpp",
"chars": 13933,
"preview": "// Based on constructInterleavedCrash bug report.\r\n//\r\n#include \"libavoid/libavoid.h\"\r\n#include <sstream>\r\n\r\nvoid test()"
},
{
"path": "cola/libavoid/tests/unsatisfiableRangeAssertion.cpp",
"chars": 856310,
"preview": "#include \"libavoid/libavoid.h\"\nusing namespace Avoid;\nint main(void) {\n Router *router = new Router(OrthogonalRouting"
},
{
"path": "cola/libavoid/tests/validPaths01.cpp",
"chars": 20985,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/validPaths02.cpp",
"chars": 2499,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/tests/vertlineassertion.cpp",
"chars": 79686,
"preview": "#include \"libavoid/libavoid.h\"\r\nusing namespace Avoid;\r\nint main(void) {\r\n Router *router = new Router(\r\n "
},
{
"path": "cola/libavoid/timer.cpp",
"chars": 4230,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/timer.h",
"chars": 2546,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/vertices.cpp",
"chars": 17126,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/vertices.h",
"chars": 7015,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/viscluster.cpp",
"chars": 2538,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/viscluster.h",
"chars": 5241,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/visibility.cpp",
"chars": 20123,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/visibility.h",
"chars": 1086,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/vpsc.cpp",
"chars": 43450,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libavoid/vpsc.h",
"chars": 9715,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libavoid - Fast, Incremental, Object-avoiding Line Router\n *\n * Copyright (C) 20"
},
{
"path": "cola/libcola/Makefile.am",
"chars": 1279,
"preview": "EXTRA_DIST=libcola.pc.in\n\nlib_LTLIBRARIES = libcola.la\nlibcola_la_CPPFLAGS = -I$(top_srcdir) $(CAIROMM_CFLAGS) -I$(inclu"
},
{
"path": "cola/libcola/box.cpp",
"chars": 2690,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/box.h",
"chars": 2317,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cc_clustercontainmentconstraints.cpp",
"chars": 6824,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cc_clustercontainmentconstraints.h",
"chars": 1705,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cc_nonoverlapconstraints.cpp",
"chars": 20145,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cc_nonoverlapconstraints.h",
"chars": 8309,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cluster.cpp",
"chars": 21140,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cluster.h",
"chars": 13555,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cola.cpp",
"chars": 25584,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cola.h",
"chars": 38101,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/cola_log.h",
"chars": 5179,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the\n * "
},
{
"path": "cola/libcola/colafd.cpp",
"chars": 58187,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the\n * "
},
{
"path": "cola/libcola/commondefs.h",
"chars": 2529,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/compound_constraints.cpp",
"chars": 48427,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/compound_constraints.h",
"chars": 31765,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/conjugate_gradient.cpp",
"chars": 4199,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
},
{
"path": "cola/libcola/conjugate_gradient.h",
"chars": 1187,
"preview": "/*\n * vim: ts=4 sw=4 et tw=0 wm=0\n *\n * libcola - A library providing force-directed network layout using the \n * "
}
]
// ... and 811 more files (download for full content)
About this extraction
This page contains the full source code of the mjwybrow/adaptagrams GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1011 files (16.2 MB), approximately 4.3M tokens, and a symbol index with 2377 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.