/* * This file is part of JOP, the Java Optimized Processor * see <http://www.jopdesign.com/> * * Copyright (C) 2010, Stefan Hepp (stefan@stefant.org). * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.jopdesign.common.misc; /** * @author Stefan Hepp (stefan@stefant.org) */ public enum Ternary { TRUE, FALSE, UNKNOWN; public static Ternary and(Ternary a, Ternary b) { if ( a == FALSE || b == FALSE ) return FALSE; if ( a == UNKNOWN || b == UNKNOWN ) return UNKNOWN; return TRUE; } public static Ternary or(Ternary a, Ternary b) { if ( a == TRUE || b == TRUE ) return TRUE; if ( a == UNKNOWN || b == UNKNOWN ) return UNKNOWN; return FALSE; } public static Ternary not(Ternary a) { if ( a == TRUE ) return FALSE; if ( a == FALSE ) return TRUE; return UNKNOWN; } public Ternary and(Ternary b) { return and(this, b); } public Ternary or(Ternary b) { return or(this, b); } public Ternary not() { return not(this); } public String toString() { switch (this) { case TRUE: return "true"; case FALSE: return "false"; case UNKNOWN: return "unknown"; } return "invalid"; } public static Ternary valueOf(boolean val) { return val ? TRUE : FALSE; } }