FleCSI Design Patterns

FleCSI uses several standard C++ design patterns. If you are a FleCSI developer (as opposed to a FleCSI user), understanding these patterns is a first step towards understanding the design philosophy and structure of the FleCSI core library. If you are not a FleCSI developer, you can safely skip this informaiton.