| /******************************************************************************* |
| * Copyright (c) 2009 Oracle. All rights reserved. |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v1.0, which accompanies this distribution |
| * and is available at http://www.eclipse.org/legal/epl-v10.html. |
| * |
| * Contributors: |
| * Oracle - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.jpt.common.utility.internal; |
| |
| /** |
| * Assorted "Capital-B Boolean" operations. |
| */ |
| // commented code is just playing around with building *everything* from NAND |
| public final class BooleanTools { |
| |
| /** |
| * Return the NOT of the specified Boolean. |
| * Boolean#not() |
| */ |
| public static Boolean not(Boolean b) { |
| return Boolean.valueOf( ! b.booleanValue()); |
| // return nand(b, b); |
| } |
| |
| /** |
| * Return the AND of the specified Booleans. |
| * Boolean#and(Boolean) |
| */ |
| public static Boolean and(Boolean b1, Boolean b2) { |
| return Boolean.valueOf(b1.booleanValue() && b2.booleanValue()); |
| // Boolean nand = nand(b1, b2); |
| // return nand(nand, nand); |
| } |
| |
| /** |
| * Return the OR of the specified Booleans. |
| * Boolean#or(Boolean) |
| */ |
| public static Boolean or(Boolean b1, Boolean b2) { |
| return Boolean.valueOf(b1.booleanValue() || b2.booleanValue()); |
| // Boolean nand = nand(b1, b2); |
| // Boolean xor = nand(nand(b1, nand), nand(b2, nand)); |
| // Boolean and = nand(nand, nand); |
| // Boolean nand2 = nand(xor, and); |
| // return nand(nand(xor, nand2), nand(and, nand2)); |
| } |
| |
| /** |
| * Return the XOR of the specified Booleans. |
| * Boolean#xor(Boolean) |
| */ |
| public static Boolean xor(Boolean b1, Boolean b2) { |
| return and(or(b1, b2), nand(b1, b2)); |
| // Boolean nand = nand(b1, b2); |
| // return nand(nand(b1, nand), nand(b2, nand)); |
| } |
| |
| /** |
| * Return the NAND of the specified Booleans. |
| * Boolean#nand(Boolean) |
| */ |
| public static Boolean nand(Boolean b1, Boolean b2) { |
| return not(and(b1, b2)); |
| // return Boolean.valueOf( ! (b1.booleanValue() && b2.booleanValue())); |
| } |
| |
| /** |
| * Return the NOR of the specified Booleans. |
| * Boolean#nor(Boolean) |
| */ |
| public static Boolean nor(Boolean b1, Boolean b2) { |
| return not(or(b1, b2)); |
| // Boolean nand = nand(b1, b2); |
| // Boolean xor = nand(nand(b1, nand), nand(b2, nand)); |
| // Boolean and = nand(nand, nand); |
| // Boolean nand2 = nand(xor, and); |
| // Boolean nand3 = nand(nand(xor, nand2), nand(and, nand2)); |
| // return nand(nand3, nand3); |
| } |
| |
| /** |
| * Return the XNOR of the specified Booleans. |
| * Boolean#xnor(Boolean) |
| */ |
| public static Boolean xnor(Boolean b1, Boolean b2) { |
| return not(xor(b1, b2)); |
| // Boolean nand = nand(b1, b2); |
| // Boolean xor = nand(nand(b1, nand), nand(b2, nand)); |
| // return nand(xor, xor); |
| } |
| |
| |
| // ********** constructor ********** |
| |
| /** |
| * Suppress default constructor, ensuring non-instantiability. |
| */ |
| private BooleanTools() { |
| super(); |
| throw new UnsupportedOperationException(); |
| } |
| |
| } |