From a25388f72b453cd399a25f64a38219c3023d456d Mon Sep 17 00:00:00 2001 From: Mikhail Sennikovsky Date: Thu, 19 Apr 2007 13:27:59 +0000 Subject: [PATCH] Tool-chain modification fixes --- .../managedbuilder/core/ManagedBuildManager.java | 5 +++++ .../managedbuilder/internal/core/Builder.java | 15 +++++++++++++++ .../internal/core/IMatchKeyProvider.java | 2 +- .../cdt/managedbuilder/internal/core/Tool.java | 16 ++++++++++++++++ .../managedbuilder/internal/core/ToolChain.java | 16 ++++++++++++++++ 5 files changed, 53 insertions(+), 1 deletion(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java index 46281b74fa0..c0546eba001 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/ManagedBuildManager.java @@ -18,6 +18,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -3978,6 +3979,10 @@ public class ManagedBuildManager extends AbstractCExtension implements IScannerI list.add(p); p.setIdenticalList(list); } + + for(Iterator iter = map.values().iterator(); iter.hasNext();){ + Collections.sort((List)iter.next()); + } return map; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java index 77592dd6d07..231e67c22b1 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Builder.java @@ -2416,5 +2416,20 @@ public class Builder extends BuildObject implements IBuilder, IMatchKeyProvider else outputEntries = null; } + + private int getSuperClassNum(){ + int num = 0; + for(IBuilder superTool = getSuperClass(); superTool != null; superTool = superTool.getSuperClass()){ + num++; + } + return num; + } + public int compareTo(Object o) { + Builder other = (Builder)o; + if(other.isSystemObject() != isSystemObject()) + return isSystemObject() ? 1 : -1; + + return getSuperClassNum() - other.getSuperClassNum(); + } } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/IMatchKeyProvider.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/IMatchKeyProvider.java index e3855c0c13b..5e266ce935a 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/IMatchKeyProvider.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/IMatchKeyProvider.java @@ -12,7 +12,7 @@ package org.eclipse.cdt.managedbuilder.internal.core; import java.util.List; -public interface IMatchKeyProvider { +public interface IMatchKeyProvider extends Comparable { Object getMatchKey(); void setIdenticalList(List list); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java index 357a1355290..5c1ab62acc0 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Tool.java @@ -4082,4 +4082,20 @@ public class Tool extends HoldsOptions implements ITool, IOptionCategory, IMatch } } } + + private int getSuperClassNum(){ + int num = 0; + for(ITool superTool = getSuperClass(); superTool != null; superTool = superTool.getSuperClass()){ + num++; + } + return num; + } + + public int compareTo(Object o) { + Tool other = (Tool)o; + if(other.isSystemObject() != isSystemObject()) + return isSystemObject() ? 1 : -1; + + return getSuperClassNum() - other.getSuperClassNum(); + } } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java index 50922bbcae0..2d15f5e21d4 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/ToolChain.java @@ -2657,4 +2657,20 @@ public class ToolChain extends HoldsOptions implements IToolChain, IBuildPropert } return false; } + + private int getSuperClassNum(){ + int num = 0; + for(IToolChain superTool = getSuperClass(); superTool != null; superTool = superTool.getSuperClass()){ + num++; + } + return num; + } + + public int compareTo(Object o) { + ToolChain other = (ToolChain)o; + if(other.isSystemObject() != isSystemObject()) + return isSystemObject() ? 1 : -1; + + return getSuperClassNum() - other.getSuperClassNum(); + } }