/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package flash.tools.debugger; /** * Specific attributes which further qualify a Variable. The values in the low * 16 bits correspond to the enumeration fields defined in the player's * "splay.h" file, e.g. <code>kDontEnumerate</code> etc. The values from the * high 16 bits correspond to <code>enum InVariableFlags</code> from * playerdebugger.h, e.g. <code>kIsArgument</code> etc. */ public interface VariableAttribute { /** * Indicates that this member is invisible to an enumeration * of its parent. */ public static final int DONT_ENUMERATE = 0x00000001; /** * Indicates that a variable is read-only. */ public static final int READ_ONLY = 0x00000004; /** * Indicates that a variable is a local. */ public static final int IS_LOCAL = 0x00000020; /** * Indicates that a variable is an argument to a function. */ public static final int IS_ARGUMENT = 0x00010000; /** * Indicates that a variable is "dynamic" -- that is, whether it * is a dynamic property of a class declared with keyword "dynamic". * Note, this attribute only works with AS3 and above. */ public static final int IS_DYNAMIC = 0x00020000; // 0x00040000 is reserved for IS_EXCEPTION, which is now part of // ValueAttribute rather than VariableAttribute. /** * Indicates that a variable has a getter. */ public static final int HAS_GETTER = 0x00080000; /** * Indicates that a variable has a setter. */ public static final int HAS_SETTER = 0x00100000; /** * Indicates that a variable is a static member of its parent. */ public static final int IS_STATIC = 0x00200000; /** * Indicates that a variable was declared "const". READ_ONLY, on the other * hand, applies both to "const" variables and also to various other types * of objects. IS_CONST implies READ_ONLY; READ_ONLY does not imply * IS_CONST. */ public static final int IS_CONST = 0x00400000; /** * Indicates that a variable is a public member of its parent. * * Note: the scope attributes are not bitfields. To determine the scope * of a variable, use variable.getScope() and compare the result to the * various *_SCOPE values using ==. For example: * * <pre> * if (myVar.getScope() == VariableAttribute.PUBLIC_SCOPE) ... * </pre> */ public static final int PUBLIC_SCOPE = 0x00000000; /** * Indicates that a variable is a private member of its parent. * * Note: the scope attributes are not bitfields. To determine the scope * of a variable, use variable.getScope() and compare the result to the * various *_SCOPE values using ==. For example: * * <pre> * if (myVar.getScope() == VariableAttribute.PRIVATE_SCOPE) ... * </pre> */ public static final int PRIVATE_SCOPE = 0x00800000; /** * Indicates that a variable is a protected member of its parent. * * Note: the scope attributes are not bitfields. To determine the scope * of a variable, use variable.getScope() and compare the result to the * various *_SCOPE values using ==. For example: * * <pre> * if (myVar.getScope() == VariableAttribute.PROTECTED_SCOPE) ... * </pre> */ public static final int PROTECTED_SCOPE = 0x01000000; /** * Indicates that a variable is an internal member of its parent. * Internally scoped variables are visible to all classes that * are in the same package. * * Note: the scope attributes are not bitfields. To determine the scope * of a variable, use variable.getScope() and compare the result to the * various *_SCOPE values using ==. For example: * * <pre> * if (myVar.getScope() == VariableAttribute.INTERNAL_SCOPE) ... * </pre> */ public static final int INTERNAL_SCOPE = 0x01800000; /** * Indicates that a variable is scoped by a namespace. For * example, it may have been declared as: * <code>my_namespace var x;</code> * * Note: the scope attributes are not bitfields. To determine the scope * of a variable, use variable.getScope() and compare the result to the * various *_SCOPE values using ==. For example: * * <pre> * if (myVar.getScope() == VariableAttribute.NAMESPACE_SCOPE) ... * </pre> */ public static final int NAMESPACE_SCOPE = 0x02000000; /** * A mask which can be used to get back only the scope-related * attributes. * * Note: the scope attributes are not bitfields. To determine the scope * of a variable, use variable.getScope() and compare the result to the * various *_SCOPE values using ==. For example: * * <pre> * if (myVar.getScope() == VariableAttribute.PRIVATE_SCOPE) ... * </pre> */ public static final int SCOPE_MASK = PUBLIC_SCOPE|PRIVATE_SCOPE|PROTECTED_SCOPE|INTERNAL_SCOPE|NAMESPACE_SCOPE; // 0x04000000 is reserved for IS_CLASS, which is now part of // ValueAttribute rather than VariableAttribute. }