Structure of the code base (ToDo update)¶
First level hierarchy¶
Tympan
, C++ files hierarchyPython
, Python files hierarchytests
, test files hierarchydoc
, project’s developper documentationtools
, various developping utilities3rdparty
, third party code, to be filed with the dependencies archive’s contentresources
, GUI assets (images, fonts, etc.)cmake
, cmake scriptsdebian
, debian packaging
C++ code hierarchy (i.e. the Tympan directory)¶
DISCLAIMER: this is a proposal of the targeted hierarchy. We should reach this situation from the legacy one step by step.
The strong point considered here is that the layout must reflect the actual dependencies between binary components of the application.
Also notice sub-directories will probably have to be inserted, but quoting Tim Peters, remember that flat is better than nested (import this).
Tympan
\_ core
_ models
\_ site - application model (former `DataManagerMetier`)
_ solver - problem and result models for the solver
_ common - common representations (former `CommonTools`)
_ solvers
\_ default
_ anime3d
_ gui
\_ widgets (former `DataManagerIHM`)
_ gl (former `DataManagerGraphics`)
_ app (former `TympanApp`)
core
may not include from other Tympan directoriesmodels
may only include fromcore
(and common representation ???)gui
may only include fromcore
andmodel/site
solvers
may only include fromcore`, ``model/solver
andmodel/results
Python code hierarchy (i.e. the Python directory)¶
File hierarchy¶
Python
\_ include
_ tympan
\
_ __init__
_ models
\_ site
_ solver
_ results
_ altimetry
_ site2solver
This deliberately not specify yet which are module from which are package. To-be-compiled Cython modules (.pyx / .pxd) should be named and located according to the resulting python module.
Python namespaces¶
tympan.models.site
tympan.models.solver
tympan.altimetry
tympan.site2solver
tympan.main.solve_project
tympan.main.compute_altimetry
Test code hierarchy¶
XXX to be completed
Mirror the code hiearchy - functional tests at the root.
Prefer writing tests in Python even for C++ code !
Executables (ToDo update)¶
XXX to be completed
starts the GUI (binary)
used by the GUI to start computation for a site XML file (python)
used by the GUI to computate altimetry for a site XML file (python)
used by the python library to start computation for a solver model (python thin wrapper around solvers code)