/*******************************************************************************
 * Copyright (c) 2011 itemis AG (http://www.itemis.eu) 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
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************/
package org.eclipse.xtend.core.resource;

import org.eclipse.xtext.resource.IEObjectDescription;

/**
 * @author Jan Koehnlein - Initial contribution and API
 */
public class DescriptionFlags {

	public static final String KEY = "Flags";
	
	public static final int DISPATCHER_OPERATION = 1;
	public static final int IS_STATIC = 2;
	
	public boolean isDispatcherOperation(IEObjectDescription eObjectDescription) {
		int flags = getFlags(eObjectDescription);
		return (flags & DISPATCHER_OPERATION) != 0;
	}

	public boolean isStatic(IEObjectDescription eObjectDescription) {
		int flags = getFlags(eObjectDescription);
		return (flags & IS_STATIC) != 0;
	}

	public int setDispatcherOperation(int flags) {
		return flags | DISPATCHER_OPERATION;
	}
	
	public int setStatic(int flags) {
		return flags | IS_STATIC;
	}
	
	protected int getFlags(IEObjectDescription eObjectDescription) {
		String value = eObjectDescription.getUserData(KEY);
		return value == null ? 0 : Integer.parseInt(value);
	}
	
}