[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-dev] Creating a CDT_INCLUDE IPathEntry for a filesystem path
|
>
> All,
>
> Any clues on how to programmatically create a CDT_INCLUDE type IPathEntry
> for a standard make project that references a filesystem location?
>
> Currently, I have code that works with paths within the project:
>
> for (int i = 0; i < includePaths.length; i++) {
> currentElement = new CPElement(cProj, IPathEntry.CDT_INCLUDE,
> proj.getFullPath(), proj.getFolder(includePaths[i]));
> currentElement.setAttribute(CPElement.INCLUDE,
> proj.getFolder(includePaths[i]).getLocation());
> checkedPaths.add(currentElement.getPathEntry());
> }
> cProj.setRawPathEntries((IPathEntry[]) checkedPaths.toArray(new
> IPathEntry[] {}), new SubProgressMonitor(monitor, 7));
>
> But, what if includePaths[i] == C:\Local_Includes? How do I add this as a
> valid IPathEntry? I tried creating a simple PathEntry() object, but got a
> ClassCastException down the road. I then looked at the constructor
> parameters for IncludeEntry:
>
> IPath resourcePath,
> IPath basePath,
> IPath baseRef,
> IPath includePath,
> boolean isSystemInclude,
> IPath[] exclusionPatterns,
> boolean isExported
>
> ...but, I don't know what these parameters expect from a filesystem path.
>
Use the CoreModel class factory.
IProject project = ...
..
IPath myIncludePath = new Path("C:\Local_Includes");
IIncludeEntry include = CoreModel.newIncludeEntry(project.getFullPath(), null, myIncludePath));
checkedPaths.add(include);
...
cProject.setRawPathEntries((IPathEntry[])checkedPaths.toArray(new IPathEntry[checkedPaths.size()]), null);
The JavaDoc:
/**
* Creates and returns a new entry of kind <code>CDT_INCLUDE</code>
*
* @param resourcePath
* the affected project-relative resource path
* @param basePath
* the base path of the includePath
* @param includePath
* the absolute path of the include
* @return IIncludeEntry
*/
public static IIncludeEntry newIncludeEntry(IPath resourcePath, IPath basePath, IPath includePath) {
return newIncludeEntry(resourcePath, basePath, includePath, false);
}
I definitively agree with what you are saying implicitely... we need some ISV docs 8-)
And we should be put in the plan items for CDT-3.0 ....