// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/ControlException.java
// public class ControlException extends V4L4JException{
// 
// 	private static final long serialVersionUID = -8310718978974706151L;
// 
// 	public ControlException(String message) {
// 		super(message);
// 	}
// 
// 	public ControlException(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public ControlException(Throwable throwable) {
// 		super(throwable);
// 	}
// 
// }
// 
// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/StateException.java
// public class StateException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 1351714754008657462L;
// 
// 	public StateException(String message) {
// 		super(message);
// 	}
// 
// 	public StateException(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public StateException(Throwable throwable) {
// 		super(throwable);
// 	}
// }
// 
// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/UnsupportedMethod.java
// public class UnsupportedMethod extends RuntimeException {
// 	private static final long serialVersionUID = -8801339441741012577L;
// 
// 	public UnsupportedMethod(String message) {
// 		super(message);
// 	}
// 
// 	public UnsupportedMethod(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public UnsupportedMethod(Throwable throwable) {
// 		super(throwable);
// 	}
// }


import au.edu.jcu.v4l4j.exceptions.StateException;
import au.edu.jcu.v4l4j.exceptions.UnsupportedMethod;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import au.edu.jcu.v4l4j.exceptions.ControlException;
			for(String s: names)
					this.names.add(s);
		}
		this.values = values;
		
		if(min<=0 && 0<=max)
			this.defaultValue = 0;
		else
			this.defaultValue = (int) Math.round((max - min) / 2.0) + min;
		v4l4jObject = o;
		state = new State();
	}
	
	/**
	 * This method retrieves the current value of this control. Some controls
	 * (for example relative values like pan or tilt) are write-only and getting
	 * their value does not make sense. Invoking this method on this kind of
	 * controls will trigger a ControlException.   
	 * @return the current value of this control (0 if it is a button)
	 * @throws ControlException if the value cannot be retrieved
	 * @throws UnsupportedMethod if this control is of type {@link V4L4JConstants#CTRL_TYPE_STRING}
	 * (and you should be using {@link #getStringValue()} instead) or 
	 * if this control is of type {@link V4L4JConstants#CTRL_TYPE_LONG}
	 * (and you should be using {@link #setLongValue(long)} instead).
	 * @throws StateException if this control has been released and must not be used anymore.
	 */
	public int getValue() throws ControlException{
		int v = 0;

		if(type==V4L4JConstants.CTRL_TYPE_STRING)
// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/ControlException.java
// public class ControlException extends V4L4JException{
// 
// 	private static final long serialVersionUID = -8310718978974706151L;
// 
// 	public ControlException(String message) {
// 		super(message);
// 	}
// 
// 	public ControlException(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public ControlException(Throwable throwable) {
// 		super(throwable);
// 	}
// 
// }
// 
// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/StateException.java
// public class StateException extends RuntimeException {
// 
// 	private static final long serialVersionUID = 1351714754008657462L;
// 
// 	public StateException(String message) {
// 		super(message);
// 	}
// 
// 	public StateException(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public StateException(Throwable throwable) {
// 		super(throwable);
// 	}
// }
// 
// Path: src/main/java/au/edu/jcu/v4l4j/exceptions/UnsupportedMethod.java
// public class UnsupportedMethod extends RuntimeException {
// 	private static final long serialVersionUID = -8801339441741012577L;
// 
// 	public UnsupportedMethod(String message) {
// 		super(message);
// 	}
// 
// 	public UnsupportedMethod(String message, Throwable throwable) {
// 		super(message, throwable);
// 	}
// 
// 	public UnsupportedMethod(Throwable throwable) {
// 		super(throwable);
// 	}
// }


// Path: src/main/java/au/edu/jcu/v4l4j/Control.java
import au.edu.jcu.v4l4j.exceptions.StateException;
import au.edu.jcu.v4l4j.exceptions.UnsupportedMethod;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import au.edu.jcu.v4l4j.exceptions.ControlException;

			for(String s: names)
					this.names.add(s);
		}
		this.values = values;
		
		if(min<=0 && 0<=max)
			this.defaultValue = 0;
		else
			this.defaultValue = (int) Math.round((max - min) / 2.0) + min;
		v4l4jObject = o;
		state = new State();
	}
	
	/**
	 * This method retrieves the current value of this control. Some controls
	 * (for example relative values like pan or tilt) are write-only and getting
	 * their value does not make sense. Invoking this method on this kind of
	 * controls will trigger a ControlException.   
	 * @return the current value of this control (0 if it is a button)
	 * @throws ControlException if the value cannot be retrieved
	 * @throws UnsupportedMethod if this control is of type {@link V4L4JConstants#CTRL_TYPE_STRING}
	 * (and you should be using {@link #getStringValue()} instead) or 
	 * if this control is of type {@link V4L4JConstants#CTRL_TYPE_LONG}
	 * (and you should be using {@link #setLongValue(long)} instead).
	 * @throws StateException if this control has been released and must not be used anymore.
	 */
	public int getValue() throws ControlException{
		int v = 0;

		if(type==V4L4JConstants.CTRL_TYPE_STRING)
			throw new UnsupportedMethod("This control is a string control and does not accept calls to getValue()");