/*******************************************************************************
 * Copyright (c) 2004-2008 Akos Horvath, Gergely Varro and Daniel Varro
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Akos Horvath, Gergely Varro - initial API and implementation
 *******************************************************************************/

 package org.eclipse.viatra2.gtasm.patternmatcher.impl.patternmatcher.internal.callgraph;

import org.eclipse.viatra2.gtasmmodel.gtasm.metamodel.gt.GTPattern;

// TODO gervarro: refactor (normalis DFS-t csinalni) (iterative deepening DFS-t hasznalni???)
public abstract class CallGraphNode {
    int index;
    int currentLocation;

    abstract protected PatternNode causesRecursion(GTPattern patternToTest);
    abstract protected boolean traverse(PatternVariantIterator token);
    
    CallGraphNode() {
        this.index = 0;
        this.currentLocation = 0;
    }
    
    public void setCurrentLocation(int currentLocation) {
    	this.currentLocation = currentLocation;
    }
}
