/*=============================================================================#
 # Copyright (c) 2015, 2020 Stephan Wahlbrink and others.
 # 
 # This program and the accompanying materials are made available under the
 # terms of the Eclipse Public License 2.0 which is available at
 # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0
 # which is available at https://www.apache.org/licenses/LICENSE-2.0.
 # 
 # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0
 # 
 # Contributors:
 #     Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation
 #=============================================================================*/

package org.eclipse.statet.ltk.model.core.impl;

import org.eclipse.statet.ltk.core.ISourceModelStamp;


public class SourceModelStamp implements ISourceModelStamp {
	
	
	private final long sourceStamp;
	
	
	public SourceModelStamp(final long sourceStamp) {
		this.sourceStamp= sourceStamp;
	}
	
	
	@Override
	public final long getSourceStamp() {
		return this.sourceStamp;
	}
	
	
	@Override
	public int hashCode() {
		return (int) (this.sourceStamp ^ (this.sourceStamp >>> 32));
	}
	
	@Override
	public boolean equals(final Object other) {
		return (other instanceof ISourceModelStamp
				&& getClass() == other.getClass()
				&& this.sourceStamp == ((ISourceModelStamp) other).getSourceStamp() );
	}
	
}
