001package org.clafer.ir; 002 003import gnu.trove.TIntCollection; 004import gnu.trove.iterator.TIntIterator; 005import org.clafer.collection.EmptyIntIterator; 006 007/** 008 * A domain of size 0. Contains nothing. 009 * 010 * @author jimmy 011 */ 012public class IrEmptyDomain implements IrDomain { 013 014 /** 015 * {@inheritDoc} 016 */ 017 @Override 018 public boolean isBounded() { 019 return false; 020 } 021 022 /** 023 * {@inheritDoc} 024 */ 025 @Override 026 public boolean contains(int value) { 027 return false; 028 } 029 030 /** 031 * {@inheritDoc} 032 */ 033 @Override 034 public int getLowBound() { 035 throw new IrException("Emtpy domain does not have a low bound."); 036 } 037 038 /** 039 * {@inheritDoc} 040 */ 041 @Override 042 public int getHighBound() { 043 throw new IrException("Emtpy domain does not have a high bound."); 044 } 045 046 /** 047 * {@inheritDoc} 048 */ 049 @Override 050 public boolean isEmpty() { 051 return true; 052 } 053 054 /** 055 * {@inheritDoc} 056 */ 057 @Override 058 public int size() { 059 return 0; 060 } 061 062 /** 063 * {@inheritDoc} 064 */ 065 @Override 066 public int[] getValues() { 067 return new int[]{}; 068 } 069 070 /** 071 * {@inheritDoc} 072 */ 073 @Override 074 public TIntIterator iterator() { 075 return EmptyIntIterator.getIterator(); 076 } 077 078 /** 079 * {@inheritDoc} 080 */ 081 @Override 082 public TIntIterator iterator(boolean increasing) { 083 return EmptyIntIterator.getIterator(); 084 } 085 086 /** 087 * {@inheritDoc} 088 */ 089 @Override 090 public void transferTo(TIntCollection collection) { 091 } 092 093 /** 094 * {@inheritDoc} 095 */ 096 @Override 097 public boolean equals(Object obj) { 098 return obj instanceof IrEmptyDomain; 099 } 100 101 /** 102 * {@inheritDoc} 103 */ 104 @Override 105 public int hashCode() { 106 return 305419896; 107 } 108 109 /** 110 * {@inheritDoc} 111 */ 112 @Override 113 public String toString() { 114 return "{}"; 115 } 116}