Hi all,

to make the tooling library more widely applicable, we'd like to make the
CompilationDatabase architecture extensible, i.e. provide the option of
implementing custom adapters to other kinds of compilation databases (other
than the currently available JSONCompilationDatabase).

In r160061, I provided a hack that enables this, but we definitely want
something nicer.

In the attached patch, I am using LLVM's plugin registry to enable
registering new compilation databases. To provide a new
CompilationDatabase, you'd need to subclass CompilationDatabasePlugin and
CompilationDatabase and register the former with
CompilationDatabasePluginRegistry::Add (as shown for
JSONCompilationDatabase). This is not a finished patch for review, I'd just
like to get feedback on the approach. What do you think?

Also, several points that need to be addressed:
- Error handling: In CompilationDatabase::loadFromDirectory, I currently
simply try each plugin until I find a compilation database. Any ideas, what
I should do with the error messages, especially if I do not find any
compilation database. Should I concatenate them, potentially with the
plugin-name as a prefix?
- Should I move the JSONCompilationDatabase to a separate set of files as
it is now loosely coupled?

Cheers,
Daniel

Attachment: compilationdatabaseplugins.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to