/*******************************************************************************
 * Copyright (c) 2004-2008 Andras Balogh 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:
 *    Andras Balogh - initial API and implementation
 *******************************************************************************/

 package org.eclipse.viatra2.imports.vtml;

import org.eclipse.viatra2.errors.VPMCoreException;

/**
 * @author babo
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class TypeDefinition extends RelationshipDefinition {
	public TypeDefinition(int l,String n,String m, String s)
	{
		super(l,n,m,s);
	}
	/* (non-Javadoc)
	 * @see org.eclipse.viatra2.imports.vtcl.ASTNode#resolveReferences(org.eclipse.viatra2.imports.vtcl.ASTBuilder)
	 */
	public void resolveReferences(ASTBuilder ab) throws VPMCoreException {
		
		ab.mm.newInstanceOf(_mstr.getElement(),_slv.getElement());

	}
}
