IntroductionΒΆ
The turing_bbn
project is divided into four namespaces.
com::ooc::bbn::graph
contains all the classes for graph-related itemscom::ooc::bbn::pptc
contains all the class related to exact inferencecom::ooc::bbn::sampling
contains all the classes related to samplingcom::ooc::bbn::util
contains utility classes
Note that there are aliases for nearly all classes as we are wrapping the classes up with shared pointers
or
std::shared_ptr
. This approach is to reduce the chances of memory leaks. These aliases are typically
named starting with an underscore _
and then camel casing of the class name. For example, the Node
class wrapped in a shared pointer std::shared_ptr<Node>
and aliased as _node
.
Additionally, it is discouraged to instantiate objects and pointers directly (using the constructor or new
).
Instead, each class has overloaded factory methods called instance
where you may pass in constructor
arguments to create a shared pointer version of the object/instance. Take a look at the unit test code to
see how to use these instance
methods.
We aim for minimal dependencies to external libraries as we are porting the code across different languages.
In this project, the only external dependency is to the boost
library for unit testing. Some features
available in other ports of the code (e.g. serialization to JSON) are not available here as that would require
an external library to ease the pain of development.