/*
 * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
 * Use of this file is governed by the BSD 3-clause license that
 * can be found in the LICENSE.txt file in the project root.
 */

package org.antlr.v4.codegen.model.decl;

import org.antlr.v4.codegen.OutputModelFactory;
import org.antlr.v4.runtime.misc.MurmurHash;

public abstract class ContextGetterDecl extends Decl {
	public ContextGetterDecl(OutputModelFactory factory, String name) {
		super(factory, name);
	}

	
Not used for output; just used to distinguish between decl types to avoid dups.
/** Not used for output; just used to distinguish between decl types * to avoid dups. */
public String getArgType() { return ""; }; // assume no args @Override public int hashCode() { int hash = MurmurHash.initialize(); hash = MurmurHash.update(hash, name); hash = MurmurHash.update(hash, getArgType()); hash = MurmurHash.finish(hash, 2); return hash; }
Make sure that a getter does not equal a label. X() and X are ok. OTOH, treat X() with two diff return values as the same. Treat two X() with diff args as different.
/** Make sure that a getter does not equal a label. X() and X are ok. * OTOH, treat X() with two diff return values as the same. Treat * two X() with diff args as different. */
@Override public boolean equals(Object obj) { if ( this==obj ) return true; // A() and label A are different if ( !(obj instanceof ContextGetterDecl) ) return false; return name.equals(((Decl) obj).name) && getArgType().equals(((ContextGetterDecl) obj).getArgType()); } }