Custom CodeModel like Repository
David Nolden
zwabel at googlemail.com
Wed Feb 17 20:20:00 UTC 2010
Am Mittwoch 17 Februar 2010 15:49:55 schrieb Niko Sams:
> On Wed, Feb 17, 2010 at 14:02, David Nolden <zwabel at googlemail.com> wrote:
> > Am Dienstag 16 Februar 2010 18:32:23 schrieb Niko Sams:
> >> Hi David,
> >>
> >> For my Php problem we talked about yesterday I think I found a pretty
> >> good solution.
> >> I created a custom Repository where I store the needed information.
> >> Basically I copied CodeModel, added additional needed members and
> >> store class declarations
> >> in there.
> >> It's blazingly fast :D
> >>
> >> But the problem I have with it: it's a almost exact copy of CodeModel.
> >>
> >> Do you think it's a good idea?
> >>
> >> Do you think it is a good idea to make a generic base class and add a
> >> mechanism that allows
> >> declarations updating multiple CodeModels?
> >
> > Not sure if such a base class really makes sense. Since it would have to
> > deal with different data-types in each case, it would have to be a
> > template class, and it would be ugly.
>
> Yes, it would be more complex and ugly. But I'd prefer not to maintain
> this class
> in Php as I don't understand the code...
> I'll try to come up with something.
Well, there is not much to maintain, as this class hasn't seen any
modifications for a long time. It's stable.
If it would be a template-class, it would be even more complex than it already
is. I don't see any benefit in creating new code-models all over the place, so
we also don't need a template code-model class. In most languages, the duchain
is supposed to hold the information that you're trying to gather.
That the copied code-model helps you is fine, but we should strive for a
better solution.
I guess what you do using the code-model is something like:
for(file in project) {
for(declaration in file) {
if(isVisible(declaration))
completionList.add(declaration)
}
}
You probably use the code-model now to iterate over the declarations for each
file, but why don't you simply load the top-context for each file and iterate
over its declarations directly?
Greetings, David
More information about the KDevelop-devel
mailing list