1 /******************************************************************************* 2 * SAT4J: a SATisfiability library for Java Copyright (C) 2004-2008 Daniel Le Berre 3 * 4 * All rights reserved. This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License v1.0 6 * which accompanies this distribution, and is available at 7 * http://www.eclipse.org/legal/epl-v10.html 8 * 9 * Alternatively, the contents of this file may be used under the terms of 10 * either the GNU Lesser General Public License Version 2.1 or later (the 11 * "LGPL"), in which case the provisions of the LGPL are applicable instead 12 * of those above. If you wish to allow use of your version of this file only 13 * under the terms of the LGPL, and not to allow others to use your version of 14 * this file under the terms of the EPL, indicate your decision by deleting 15 * the provisions above and replace them with the notice and other provisions 16 * required by the LGPL. If you do not delete the provisions above, a recipient 17 * may use your version of this file under the terms of the EPL or the LGPL. 18 *******************************************************************************/ 19 package org.sat4j.csp; 20 21 import java.util.NoSuchElementException; 22 23 import org.sat4j.specs.IteratorInt; 24 25 /** 26 * Represents a domain with a single value. 27 * 28 * @author leberre 29 */ 30 public class SingletonDomain implements Domain { 31 32 private final int value; 33 34 public SingletonDomain(int v) { 35 value = v; 36 } 37 38 public int get(int i) { 39 if (i != 0) { 40 throw new IllegalArgumentException(); 41 } 42 return value; 43 } 44 45 public int size() { 46 return 1; 47 } 48 49 public IteratorInt iterator() { 50 return new IteratorInt() { 51 private int i = 0; 52 53 public boolean hasNext() { 54 return i < 1; 55 } 56 57 public int next() { 58 if (i == 1) 59 throw new NoSuchElementException(); 60 return value; 61 } 62 }; 63 } 64 65 public int pos(int theValue) { 66 if (theValue != this.value) { 67 throw new IllegalArgumentException(); 68 } 69 return 0; 70 } 71 72 }