Source code organization¶
To a first approximation, SMTK’s directory structure mirrors the namespaces used:
classes in the
smtk::attribute namespace are mostly found in the
Exceptions occur where classes that belong in a namespace depend on third-party libraries
that should not be linked to SMTK’s core library.
For example, Qt widgets for attributes are in
smtk/extensions/qt, not in
because they depend on Qt, which is optional when building SMTK (so that, for instance,
solid modeling kernels like Cubit may be supported without issue).
With that in mind:
smtk — this directory contains all of the source code for SMTK libraries and tests
common — source for classes used throughout the smtkCore library
resource — SMTK’s Resource System defines base resources (files) and components used elsewhere
attribute — source for SMTK’s Attribute Resource in the smtkCore library
model — source for SMTK’s Geometric Model Resource in the smtkCore library
mesh — source for SMTK’s Mesh Resource in the smtkCore library
operation — SMTK’s Operation System provides asynchronous operations that act on resources
simulation — aids to exporting simulation input decks in the smtkCore library
io — file and string I/O in the smtkCore library, a mix of XML and JSON
view — source for providing views (user presentations) of resources in the smtkCore library
session — source for additional libraries that session solid modeling kernels into SMTK
extensions — source for additional libraries that expose SMTK to other software
cJSON — used to serialize geometric model information
pugiXML — used to serialize attribute resources
utilities — scripts to aid in the development of SMTK. * encode – a C++ utility used to encode a file’s contents into a C++ function,
a C++ string literal, or a Python block-quote in order to embed it into a plugin or module.
smtk/, subdirectories, there are
testing/ directories that
cxx/ directories for Python and C++ tests, respectively.
These are discussed more in smtk-testing-sys.