I just found a potential bug:
Here, in cbplugin.h, there are code like:
// Define basic groups for plugins' configuration.
static const int cgCompiler         = 0x01; ///< Compiler related.
static const int cgDebugger         = 0x02; ///< Debugger related.
static const int cgEditor           = 0x04; ///< Editor related.
static const int cgCorePlugin       = 0x08; ///< One of the core plugins.
static const int cgContribPlugin    = 0x10; ///< One of the contrib plugins (or any third-party plugin for that matter).
static const int cgUnknown          = 0x20; ///< Unknown. This will be probably grouped with cgContribPlugin.
This will let all the translation unit which include the "cbplugin.h" have a own copy of those variables. Is that a bug?
Why not just use extern modifier, and define them in the cpp files???
Or just use enum?