/**
 * This class file was automatically generated by jASN1 v1.8.0 (http://www.openmuc.org)
 */

package org.onosproject.xran.codecs.api;

import org.onosproject.xran.codecs.ber.types.BerInteger;

import java.math.BigInteger;


public class PhysCellId extends BerInteger {

	private static final long serialVersionUID = 1L;

	public PhysCellId() {
	}

	public PhysCellId(byte[] code) {
		super(code);
	}

	public PhysCellId(BigInteger value) {
		super(value);
	}

	public PhysCellId(long value) {
		super(value);
	}

	@Override
	public int hashCode() {
		return value.intValue();
	}

	@Override
	public boolean equals(Object obj) {
		if (obj instanceof PhysCellId) {
			return value.intValue() == ((PhysCellId) obj).value.intValue();
		}
		return super.equals(obj);
	}
}
