blob: 82831371780a72c73d6f9ce9dc1351c9b6a3bf7a [file] [log] [blame]
/*
* 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.
}