[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-dev] Getting methods/fields from CPPClassTemplate
|
I have attached a trivial patch which
adds the implementations for the get* methods in CPPClassTemplate. As you
have indicated the implementation is same as that in CPPClassType and hence
there is code replication here..however, I am not sure if we need to refactor
and if yes then what would be a good place to refactor the code into. It
would be great if somebody can review the patch. Andrew?
--
neeraj
cdt-dev-bounces@xxxxxxxxxxx wrote on 01/27/2006 09:28:38
PM:
>
> The first thing to note is that your are mixing 2 different models
here. The
> cdt.core.model classes are unrelated to the cdt.core.dom.ast
> classes. It is incorrect to be mixing the two models.
>
> CPPClassTemplate actually extends CPPTemplateDefinition, not
> CPPClassType, the get* methods that return null do so simply because
> I never had time to implement them.
> Assuming I'm not forgetting something, you can probably use the same
> kind of the implementation as CPPClassType.
>
> There is still work to be done here. Note that these methods
are
> also unimplemented for the instantiations and specializations of
> class templates (CPPClassInstance, CPPClassSpecialization).
> However, you can't just use the CPPClassType implementations here
> since the members need to be instantiated or specialized as
> appropriate. CPPClassInstance should likely implement
> ICPPInternalClassType, proper implementations of getConstructors and
> getConversionOperators would improve the resolution of template
> bindings in arbitrary code.
>
> -Andrew
>
> cdt-dev-bounces@xxxxxxxxxxx wrote on 01/27/2006 10:17:05 AM:
>
> >
> > I need to get the field and methods objects in the AST from a
> > template. However, org.eclipse.cdt.internal.core.dom.parser.cpp.
> > CPPClassTemplate that extends CPPClassType explicitly returns
null
> > from the following methods: getDeclaredFields, getMethods,
> > getAllDeclaredMethods & getDeclaredMethods. I was able to
find a
> > workaround for getting the fields by doing something like the
code
> > below. However, I still have not figured out how to get the methods.
> > Can anybody point out the reasons why the methods were overridden
to
> > return null and what would be the best way to get the fields
& methods?
> >
> >
org.eclipse.cdt.core.dom.ast.IField[]
> > astFields = null;
> >
ICppClassType type = getTemplateType();
> >
ICElement elem = getICElement(type);
> >
if (elem instanceof IStructureTemplate) {
> >
IStructureTemplate template
=
> > (IStructureTemplate) elem;
> >
org.eclipse.cdt.core.model.IField[]
> > fields = template.getFields();
> >
astFields = new IField[fields.length];
> >
for (int i = 0; i <
fields.length; i++) {
> >
astFields[i] = type.
> > findField(fields[i].getElementName());
> >
}
> >
}
> >
> > --
> > neeraj_______________________________________________
> > cdt-dev mailing list
> > cdt-dev@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/cdt-dev
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev
Attachment:
CPPClassTemplate.patch
Description: Binary data