/*
* This file is part of GumTree.
*
* GumTree is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* GumTree is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with GumTree. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2011-2015 Jean-Rémy Falleri <jr.falleri@gmail.com>
* Copyright 2011-2015 Floréal Morandat <florealm@gmail.com>
*/
package com.github.gumtreediff.matchers;
import com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerBottomUpMatcher;
import com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerLeavesMatcher;
import com.github.gumtreediff.matchers.heuristic.gt.CompleteBottomUpMatcher;
import com.github.gumtreediff.matchers.heuristic.XyBottomUpMatcher;
import com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerBottomUpMatcher;
import com.github.gumtreediff.matchers.heuristic.cd.ChangeDistillerLeavesMatcher;
import com.github.gumtreediff.matchers.heuristic.gt.CliqueSubtreeMatcher;
import com.github.gumtreediff.matchers.heuristic.gt.CompleteBottomUpMatcher;
import com.github.gumtreediff.matchers.heuristic.gt.GreedyBottomUpMatcher;
import com.github.gumtreediff.matchers.heuristic.gt.GreedySubtreeMatcher;
import com.github.gumtreediff.tree.ITree;
public class CompositeMatchers {
@Register(id = "gumtree", defaultMatcher = true)
public static class ClassicGumtree extends CompositeMatcher {
public ClassicGumtree(ITree src, ITree dst, MappingStore store) {
super(src, dst, store, new Matcher[]{
new GreedySubtreeMatcher(src, dst, store),
new GreedyBottomUpMatcher(src, dst, store)
});
}
}
@Register(id = "gumtree-complete")
public static class CompleteGumtreeMatche extends CompositeMatcher {
public CompleteGumtreeMatche(ITree src, ITree dst, MappingStore store) {
super(src, dst, store, new Matcher[]{
new CliqueSubtreeMatcher(src, dst, store),
new CompleteBottomUpMatcher(src, dst, store)
});
}
}
@Register(id = "change-distiller", defaultMatcher = true)
public class ChangeDistiller extends CompositeMatcher {
public ChangeDistiller(ITree src, ITree dst, MappingStore store) {
super(src, dst, store, new Matcher[]{
new ChangeDistillerLeavesMatcher(src, dst, store),
new ChangeDistillerBottomUpMatcher(src, dst, store)
});
}
}
@Register(id = "xy", defaultMatcher = true)
public static class XyMatcher extends CompositeMatcher {
public XyMatcher(ITree src, ITree dst, MappingStore store) {
super(src, dst, store, new Matcher[]{
new GreedySubtreeMatcher(src, dst, store),
new XyBottomUpMatcher(src, dst, store)
});
}
}
}