Main Page   Packages   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

Abstraction.java

00001 package edu.ksu.cis.bandera.abstraction;
00002 
00003 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
00004  * Bandera, a Java(TM) analysis and transformation toolkit           *
00005  * Copyright (C) 2000   Robby (robby@cis.ksu.edu)                    *
00006  * All rights reserved.                                              *
00007  *                                                                   *
00008  * This work was done as a project in the SAnToS Laboratory,         *
00009  * Department of Computing and Information Sciences, Kansas State    *
00010  * University, USA (http://www.cis.ksu.edu/santos).                  *
00011  * It is understood that any modification not identified as such is  *
00012  * not covered by the preceding statement.                           *
00013  *                                                                   *
00014  * This work is free software; you can redistribute it and/or        *
00015  * modify it under the terms of the GNU Library General Public       *
00016  * License as published by the Free Software Foundation; either      *
00017  * version 2 of the License, or (at your option) any later version.  *
00018  *                                                                   *
00019  * This work is distributed in the hope that it will be useful,      *
00020  * but WITHOUT ANY WARRANTY; without even the implied warranty of    *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU *
00022  * Library General Public License for more details.                  *
00023  *                                                                   *
00024  * You should have received a copy of the GNU Library General Public *
00025  * License along with this toolkit; if not, write to the             *
00026  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,      *
00027  * Boston, MA  02111-1307, USA.                                      *
00028  *                                                                   *
00029  * Java is a trademark of Sun Microsystems, Inc.                     *
00030  *                                                                   *
00031  * To submit a bug report, send a comment, or get the latest news on *
00032  * this project and other SAnToS projects, please visit the web-site *
00033  *                http://www.cis.ksu.edu/santos                      *
00034  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
00035 public abstract class Abstraction {
00036     public static final int FALSE = 0;
00037     public static final int TRUE = 1;
00038     public static final int TRUE_OR_FALSE = 2;
00039     public static final int NOTHING = 0;
00040 
00041     //TOP tokens used for generation of dummy values
00042     public final static int TOP_INT = 0;
00043     public final static byte TOP_BYTE = 0;
00044     public final static short TOP_SHORT = 0;
00045     public final static double TOP_DOUBLE = 0;
00046     public final static float TOP_FLOAT = 0;
00047     public final static long TOP_LONG = 0;
00048     public final static boolean TOP_BOOL = false;
00049     public final static char TOP_CHAR = '\0';
00050     public final static Object TOP_REF = null;
00051 
00052 /**
00053  * 
00054  * @return int
00055  */
00056 public static boolean choose() {
00057     return true;
00058 }
00059 /**
00060  * 
00061  * @return int
00062  * @param values int
00063  */
00064 public static int choose(int values) {
00065     if (values == 0) {
00066         throw new RuntimeException("Abstraction.choose(int) called with 0-valued\n");
00067     }
00068     int value;
00069     for (value = 0; values != 1; value++, values >>= 1) {
00070         if ((values & 1) == 1) {
00071             if (choose()) {
00072                 return value;
00073             }
00074         }
00075     }
00076     return value;
00077 }
00078 /**
00079  *
00080  * @return int
00081  * @param tokens1 int
00082  * @param tokens2 int
00083  * @param isTest boolean
00084  */
00085 public static int meetArith(int tokens1, int tokens2) {
00086     return tokens1 | tokens2;
00087 }
00088 /**
00089  * 
00090  * @return byte
00091  * @param tokens1 int
00092  * @param tokens2 int
00093  */
00094 public static byte meetTest(int tokens1, int tokens2) {
00095     switch (tokens1) {
00096         case FALSE: if (tokens2 == TRUE) return TRUE_OR_FALSE;
00097             return (byte) tokens2;
00098         case TRUE: if (tokens2 == FALSE) return TRUE_OR_FALSE;
00099             return (byte) tokens2;
00100         case TRUE_OR_FALSE: return TRUE_OR_FALSE;
00101         default :   throw new RuntimeException();
00102     }
00103 }
00104 /**
00105  * 
00106  * @return java.lang.String
00107  */
00108 public abstract String toString();
00109 }

Generated at Thu Feb 7 06:36:36 2002 for Bandera by doxygen1.2.10 written by Dimitri van Heesch, © 1997-2001