/*******************************************************************************
 * 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.core;

import java.util.Hashtable;

import org.eclipse.viatra2.gtasm.patternmatcher.patterns.IPatternMatcher;
import org.eclipse.viatra2.gtasmmodel.gtasm.metamodel.gt.GTPattern;



public class PatternMatchers extends Hashtable<GTPattern, IPatternMatcher> {

	/**
	 * Stores the pattern matchers previously created
	 * 
	 * @author Akos Horvath and Gergely Varro
	 */
	private static final long serialVersionUID = 1L;
	private static PatternMatchers  _instance=new PatternMatchers();
	public static PatternMatchers  getInstance()
	{
		return _instance;
	}
	
	private PatternMatchers() {
		super();
	}
}
