/* Attribute.java
Copyright 2003, Bil Lewis
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 2 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, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.insa.LSD;
public class Attribute {
// For all Events
static Attribute PORT = new Attribute("PORT");
static Attribute SOURCE_LINE = new Attribute("SOURCE_LINE");
static Attribute SOURCE_FILE = new Attribute("SOURCE_FILE");
static Attribute THREAD = new Attribute("THREAD");
static Attribute THREAD_CLASS = new Attribute("THREAD_CLASS");
static Attribute THIS_OBJECT = new Attribute("THIS_OBJECT");
static Attribute THIS_OBJECT_CLASS = new Attribute("THIS_OBJECT_CLASS");
static Attribute METHOD_NAME = new Attribute("METHOD_NAME");
static Attribute IS_METHOD_STATIC = new Attribute("IS_METHOD_STATIC");
static Attribute PARAMETERS = new Attribute("PARAMETERS");
static Attribute PARAMETER_VALUE0 = new Attribute("PARAMETER_VALUE0");
static Attribute PARAMETER_VALUE1 = new Attribute("PARAMETER_VALUE1");
static Attribute PARAMETER_VALUE2 = new Attribute("PARAMETER_VALUE2");
static Attribute PARAMETER_VALUE3 = new Attribute("PARAMETER_VALUE3");
static Attribute PARAMETER_VALUE4 = new Attribute("PARAMETER_VALUE4");
static Attribute PARAMETER_VALUE5 = new Attribute("PARAMETER_VALUE5");
static Attribute PARAMETER_VALUE6 = new Attribute("PARAMETER_VALUE6");
static Attribute PARAMETER_VALUE7 = new Attribute("PARAMETER_VALUE7");
static Attribute PARAMETER_VALUE8 = new Attribute("PARAMETER_VALUE8");
static Attribute PARAMETER_VALUE9 = new Attribute("PARAMETER_VALUE9");
static Attribute PRINT_STRING = new Attribute("PRINT_STRING");
// For CallEvents
static Attribute CALL_METHOD_NAME = new Attribute("CALL_METHOD_NAME");
static Attribute IS_CALL_METHOD_STATIC = new Attribute("IS_CALL_METHOD_STATIC");
static Attribute CALL_OBJECT = new Attribute("CALL_OBJECT");
static Attribute CALL_OBJECT_CLASS = new Attribute("CALL_OBJECT_CLASS");
static Attribute CALL_RETURN_TYPE = new Attribute("CALL_RETURN_TYPE");
static Attribute CALL_ARGUMENTS = new Attribute("CALL_ARGUMENTS");
static Attribute CALL_ARGUMENT_VALUE0 = new Attribute("CALL_ARGUMENT_VALUE0");
static Attribute CALL_ARGUMENT_VALUE1 = new Attribute("CALL_ARGUMENT_VALUE1");
static Attribute CALL_ARGUMENT_VALUE2 = new Attribute("CALL_ARGUMENT_VALUE2");
static Attribute CALL_ARGUMENT_VALUE3 = new Attribute("CALL_ARGUMENT_VALUE3");
static Attribute CALL_ARGUMENT_VALUE4 = new Attribute("CALL_ARGUMENT_VALUE4");
static Attribute CALL_ARGUMENT_VALUE5 = new Attribute("CALL_ARGUMENT_VALUE5");
static Attribute CALL_ARGUMENT_VALUE6 = new Attribute("CALL_ARGUMENT_VALUE6");
static Attribute CALL_ARGUMENT_VALUE7 = new Attribute("CALL_ARGUMENT_VALUE7");
static Attribute CALL_ARGUMENT_VALUE8 = new Attribute("CALL_ARGUMENT_VALUE8");
static Attribute CALL_ARGUMENT_VALUE9 = new Attribute("CALL_ARGUMENT_VALUE9");
// For ReturnEvents
static Attribute RETURN_TYPE = new Attribute("RETURN_TYPE");
static Attribute RETURN_VALUE = new Attribute("RETURN_VALUE");
// For ExitEvents (the two above)
// For ChangeLocalEvents
static Attribute NAME = new Attribute("NAME");
static Attribute TYPE = new Attribute("TYPE");
static Attribute NEW_VALUE = new Attribute("NEW_VALUE");
static Attribute OLD_VALUE = new Attribute("OLD_VALUE");
// For ChangeIVEvents (along with: NEW_VALUE, OLD_VALUE, NAME, TYPE)
static Attribute OBJECT = new Attribute("OBJECT");
static Attribute OBJECT_CLASS = new Attribute("OBJECT_CLASS");
static Attribute IS_IVAR_STATIC = new Attribute("IS_IVAR_STATIC");
// For ChangeArrayEvents (along with: NEW_VALUE, OLD_VALUE, OBJECT, OBJECT_CLASS)
static Attribute INDEX = new Attribute("INDEX");
static Attribute ARRAY = new Attribute("ARRAY");
static Attribute ARRAY_CLASS = new Attribute("ARRAY_CLASS");
// For LockEvents
static Attribute LOCK_TYPE = new Attribute("LOCK_TYPE");
static Attribute BLOCKED_ON_OBJECT = new Attribute("BLOCKED_ON_OBJECT");
static Attribute BLOCKED_ON_OBJECT_CLASS = new Attribute("BLOCKED_ON_OBJECT_CLASS");
// For CatchEvents
static Attribute EXCEPTION = new Attribute("EXCEPTION");
static Attribute EXCEPTION_CLASS = new Attribute("EXCEPTION_CLASS");
static Attribute THROWING_METHOD_NAME = new Attribute("THROWING_METHOD_NAME");
// For State Queries
static Attribute STACK_FRAMES = new Attribute("STACK_FRAMES");
static Attribute OBJECTS = new Attribute("OBJECTS");
static Attribute VARIABLE0 = new Attribute("VARIABLE0");
static Attribute VARIABLE1 = new Attribute("VARIABLE1");
static Attribute VARIABLES = new Attribute("VARIABLES");
public final String name;
// Constructors
Attribute(String s) {name=s;}
// public static Attribute create(String s) {return new Attribute(s);}
public static Attribute find(String s) { // Used only by parser
int dot = s.indexOf('.');
if (dot != -1) {
String port = s.substring(0, dot);
String var = s.substring(dot+1, s.length());
var = var.intern();
Attribute a = find(port);
if (port == null) return null;
return AttributeVariable.create(var, a);
}
if (s.equals("port") || s.equals("p")) return PORT;
if (s.equals("sourceLine") || s.equals("sl")) return SOURCE_LINE;
if (s.equals("sourceFile") || s.equals("sf")) return SOURCE_FILE;
if (s.equals("thread") || s.equals("thr")) return THREAD;
if (s.equals("threadClass") || s.equals("thrc")) return THREAD_CLASS;
if (s.equals("thisObject") || s.equals("to")) return THIS_OBJECT;
if (s.equals("thisObjectClass") || s.equals("toc")) return THIS_OBJECT_CLASS;
if (s.equals("methodName") || s.equals("mn")) return METHOD_NAME;
if (s.equals("isMethodStatic") || s.equals("ims")) return IS_METHOD_STATIC;
if (s.equals("parameters") || s.equals("params")) return PARAMETERS;
if (s.equals("callMethodName") || s.equals("cmn")) return CALL_METHOD_NAME;
if (s.equals("isCallMethodStatic") || s.equals("icms")) return IS_CALL_METHOD_STATIC;
if (s.equals("callObject") || s.equals("co")) return CALL_OBJECT;
if (s.equals("callObjectClass") || s.equals("coc")) return CALL_OBJECT_CLASS;
if (s.equals("callArguments") || s.equals("args")) return CALL_ARGUMENTS;
if (s.equals("returnType") || s.equals("rt")) return RETURN_TYPE;
if (s.equals("returnValue") || s.equals("rv")) return RETURN_VALUE;
if (s.equals("name") || s.equals("varName") || s.equals("vn")) return NAME;
if (s.equals("type") || s.equals("varType") || s.equals("vt")) return TYPE;
if (s.equals("newValue") || s.equals("nv")) return NEW_VALUE;
if (s.equals("oldValue") || s.equals("ov")) return OLD_VALUE;
if (s.equals("object") || s.equals("o")) return OBJECT;
if (s.equals("lockType") || s.equals("lt")) return LOCK_TYPE;
if (s.equals("objectClass") || s.equals("oc")) return OBJECT_CLASS;
if (s.equals("isIvarStatic") || s.equals("iivs")) return IS_IVAR_STATIC;
if (s.equals("blockedOnObject") || s.equals("boo")) return BLOCKED_ON_OBJECT;
if (s.equals("blockedOnObjectClass") || s.equals("booc")) return BLOCKED_ON_OBJECT_CLASS;
if (s.equals("exception") || s.equals("ex")) return EXCEPTION;
if (s.equals("exceptionClass") || s.equals("exc")) return EXCEPTION_CLASS;
if (s.equals("throwingMethodName") || s.equals("thn")) return THROWING_METHOD_NAME;
if (s.equals("callArgumentValue0") || s.equals("a0") || s.equals("arg0")) return CALL_ARGUMENT_VALUE0;
if (s.equals("callArgumentValue1") || s.equals("a1") || s.equals("arg1")) return CALL_ARGUMENT_VALUE1;
if (s.equals("callArgumentValue2") || s.equals("a2") || s.equals("arg2")) return CALL_ARGUMENT_VALUE2;
if (s.equals("callArgumentValue3") || s.equals("a3") || s.equals("arg3")) return CALL_ARGUMENT_VALUE3;
if (s.equals("callArgumentValue4") || s.equals("a4") || s.equals("arg4")) return CALL_ARGUMENT_VALUE4;
if (s.equals("callArgumentValue5") || s.equals("a5") || s.equals("arg5")) return CALL_ARGUMENT_VALUE5;
if (s.equals("callArgumentValue6") || s.equals("a6") || s.equals("arg6")) return CALL_ARGUMENT_VALUE6;
if (s.equals("callArgumentValue7") || s.equals("a7") || s.equals("arg7")) return CALL_ARGUMENT_VALUE7;
if (s.equals("callArgumentValue8") || s.equals("a8") || s.equals("arg8")) return CALL_ARGUMENT_VALUE8;
if (s.equals("callArgumentValue9") || s.equals("a9") || s.equals("arg9")) return CALL_ARGUMENT_VALUE9;
if (s.equals("parameterValue0") || s.equals("p0")) return PARAMETER_VALUE0;
if (s.equals("parameterValue1") || s.equals("p1")) return PARAMETER_VALUE1;
if (s.equals("parameterValue2") || s.equals("p2")) return PARAMETER_VALUE2;
if (s.equals("parameterValue3") || s.equals("p3")) return PARAMETER_VALUE3;
if (s.equals("parameterValue4") || s.equals("p4")) return PARAMETER_VALUE4;
if (s.equals("parameterValue5") || s.equals("p5")) return PARAMETER_VALUE5;
if (s.equals("parameterValue6") || s.equals("p6")) return PARAMETER_VALUE6;
if (s.equals("parameterValue7") || s.equals("p7")) return PARAMETER_VALUE7;
if (s.equals("parameterValue8") || s.equals("p8")) return PARAMETER_VALUE8;
if (s.equals("parameterValue9") || s.equals("p9")) return PARAMETER_VALUE9;
if (s.equals("objects") || s.equals("os")) return OBJECTS;
if (s.equals("var0") || s.equals("v0")) return VARIABLE0;
if (s.equals("var1") || s.equals("v1")) return VARIABLE1;
if (s.equals("vars") || s.equals("vs")) return VARIABLES;
if (s.equals("index") || s.equals("i")) return INDEX;
if (s.equals("array") || s.equals("a")) return ARRAY;
if (s.equals("arrayClass") || s.equals("ac")) return ARRAY_CLASS;
if (s.equals("stackFrames") || s.equals("sf")) return STACK_FRAMES;
if (s.equals("printString") || s.equals("ps")) return PRINT_STRING;
return null;
}
public String toString() {
return name;
}
}