My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads
Wiki pages
Links

PocoCapsule is an Inversion of Control (IoC) container, a.k.a Dependency Injection (DI) framework (see article IoC vs DI), as well as a Domain Specific Modeling (DSM) engine (see article DSM in IoC). The main goals of PocoCapsule are to support declarative assemblying/deploying/configuring of component-based C/C++ applications and also to provide a platform that can easily be used even by domain users to quickly build other component frameworks in a descriptive modeling approach.

  • PocoCapsule is non-invasive and enforces neither a proprietary component programming model (such as their base classes or a set of pre-defined methods) nor any component-container couplings (such as registry or context lookup). It accepts container-agnostic plain-old C/C++ objects (POCO) as components. Examples of such components include instances of arbitrary C++ classes, template classes (such as all STL container classes), K&R structs, arrays, and even functions (as function pointers).
  • PocoCapsule supports almost all useful IoC invocation scenarios regardless the numbers of their value/reference inject arguments (in various types, aggregated types, and even user defined types). These invocations include:
    • Constructors (and destructors in lifecycle control) of arbitrary C++ classes/structs/unions/arrays.
    • Global C or C++ functions, operators, and variables.
    • Non-static member functions and operators of C++ classes/structs.
    • Static member functions of C++ classes/structs.
    • Non-static data members of C++ classes/structs.
    • Static data members of C++ classes/structs.
    • Union field accesses.
    • Array (as well as C++ classes/structs with index operator) indexed accesses.
  • PocoCapsule supports component lifecycle control with any of the following methods specified by user:
    • constructors of C++ classes/structs/unions/arrays
    • global or static factory methods
    • non-static factory methods of factory-beans
    • global or static ref duplicate methods
    • non-static duplicate methods of the beans themselves
    • global or static ref release/destroy methods (and destructors)
    • non-static ref release/destroy methods of destroy-beans.
    • non-static release/destroy methods of the beans themselves.
  • PocoCapsule ensures type safety. All type conversions are validated statically in building dynamic invocation proxies. The dynamic reflection engine only uses proxies that exactly match the signatures of IoC invocations.
  • PocoCapsule supports dynamic wiring that allows application to be deployed without immediately being wired with dependent services. These services can be wired or rewired to applications transparently after or upon they (these services) become available or being replaced.
  • PocoCapsule is portable to almost all Unix/Windows and realtime embedded operating systems (such as VxWorks and Symbian OS). The 1.0 source code can be built on Linux, Solaris, Windows, and VxWorks out-of-the-box.
Powered by Google Project Hosting