org.antlr.v4.codegen.model.decl.ContextGetterDecl Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of antlr4 Show documentation
Show all versions of antlr4 Show documentation
The ANTLR 4 grammar compiler.
/*
* Copyright (c) 2012 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.
*/
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.
*/
@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());
}
}