/*
* 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());
}
}