Dart/thirdPartySrc/vmServiceDrivers/org/dartlang/vm/service/element/Instance.java (225 lines of code) (raw):
/*
* Copyright (c) 2015, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html
*
* 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 org.dartlang.vm.service.element;
// This file is generated by the script: pkg/vm_service/tool/generate.dart in dart-lang/sdk.
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
/**
* An {@link Instance} represents an instance of the Dart language class {@link Obj}.
*/
@SuppressWarnings({"WeakerAccess", "unused"})
public class Instance extends Obj {
public Instance(JsonObject json) {
super(json);
}
/**
* The stack trace associated with the allocation of a ReceivePort.
*
* Provided for instance kinds:
* - ReceivePort
*
* Can return <code>null</code>.
*/
public InstanceRef getAllocationLocation() {
JsonObject obj = (JsonObject) json.get("allocationLocation");
if (obj == null) return null;
return new InstanceRef(obj);
}
/**
* The elements of a Map instance.
*
* Provided for instance kinds:
* - Map
*
* Can return <code>null</code>.
*/
public ElementList<MapAssociation> getAssociations() {
if (json.get("associations") == null) return null;
return new ElementList<MapAssociation>(json.get("associations").getAsJsonArray()) {
@Override
protected MapAssociation basicGet(JsonArray array, int index) {
return new MapAssociation(array.get(index).getAsJsonObject());
}
};
}
/**
* The bound of a TypeParameter or BoundedType.
*
* The value will always be of one of the kinds: Type, TypeRef, TypeParameter, BoundedType.
*
* Provided for instance kinds:
* - BoundedType
* - TypeParameter
*
* Can return <code>null</code>.
*/
public InstanceRef getBound() {
JsonObject obj = (JsonObject) json.get("bound");
if (obj == null) return null;
return new InstanceRef(obj);
}
/**
* The bytes of a TypedData instance.
*
* The data is provided as a Base64 encoded string.
*
* Provided for instance kinds:
* - Uint8ClampedList
* - Uint8List
* - Uint16List
* - Uint32List
* - Uint64List
* - Int8List
* - Int16List
* - Int32List
* - Int64List
* - Float32List
* - Float64List
* - Int32x4List
* - Float32x4List
* - Float64x2List
*
* Can return <code>null</code>.
*/
public String getBytes() {
return getAsString("bytes");
}
/**
* Instance references always include their class.
*/
@Override
public ClassRef getClassRef() {
return new ClassRef((JsonObject) json.get("class"));
}
/**
* The context associated with a Closure instance.
*
* Provided for instance kinds:
* - Closure
*
* Can return <code>null</code>.
*/
public ContextRef getClosureContext() {
JsonObject obj = (JsonObject) json.get("closureContext");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ContextRef(obj);
}
/**
* The function associated with a Closure instance.
*
* Provided for instance kinds:
* - Closure
*
* Can return <code>null</code>.
*/
public FuncRef getClosureFunction() {
JsonObject obj = (JsonObject) json.get("closureFunction");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new FuncRef(obj);
}
/**
* The number of elements or associations or codeunits returned. This is only provided when it is
* less than length.
*
* Provided for instance kinds:
* - String
* - List
* - Map
* - Set
* - Uint8ClampedList
* - Uint8List
* - Uint16List
* - Uint32List
* - Uint64List
* - Int8List
* - Int16List
* - Int32List
* - Int64List
* - Float32List
* - Float64List
* - Int32x4List
* - Float32x4List
* - Float64x2List
*
* Can return <code>null</code>.
*/
public int getCount() {
return getAsInt("count");
}
/**
* A name associated with a ReceivePort used for debugging purposes.
*
* Provided for instance kinds:
* - ReceivePort
*
* Can return <code>null</code>.
*/
public String getDebugName() {
return getAsString("debugName");
}
/**
* The elements of a List or Set instance.
*
* Provided for instance kinds:
* - List
* - Set
*
* @return one of <code>ElementList<InstanceRef></code> or <code>ElementList<Sentinel></code>
*
* Can return <code>null</code>.
*/
public ElementList<InstanceRef> getElements() {
if (json.get("elements") == null) return null;
return new ElementList<InstanceRef>(json.get("elements").getAsJsonArray()) {
@Override
protected InstanceRef basicGet(JsonArray array, int index) {
return new InstanceRef(array.get(index).getAsJsonObject());
}
};
}
/**
* The (non-static) fields of this Instance.
*
* Provided for instance kinds:
* - PlainInstance
* - Record
*
* Can return <code>null</code>.
*/
public ElementList<BoundField> getFields() {
if (json.get("fields") == null) return null;
return new ElementList<BoundField>(json.get("fields").getAsJsonArray()) {
@Override
protected BoundField basicGet(JsonArray array, int index) {
return new BoundField(array.get(index).getAsJsonObject());
}
};
}
/**
* The identityHashCode assigned to the allocated object. This hash code is the same as the hash
* code provided in HeapSnapshot and CpuSample's returned by getAllocationTraces().
*/
public int getIdentityHashCode() {
return getAsInt("identityHashCode");
}
/**
* Whether this regular expression is case sensitive.
*
* Provided for instance kinds:
* - RegExp
*
* Can return <code>null</code>.
*/
public boolean getIsCaseSensitive() {
return getAsBoolean("isCaseSensitive");
}
/**
* Whether this regular expression matches multiple lines.
*
* Provided for instance kinds:
* - RegExp
*
* Can return <code>null</code>.
*/
public boolean getIsMultiLine() {
return getAsBoolean("isMultiLine");
}
/**
* What kind of instance is this?
*/
public InstanceKind getKind() {
final JsonElement value = json.get("kind");
try {
return value == null ? InstanceKind.Unknown : InstanceKind.valueOf(value.getAsString());
} catch (IllegalArgumentException e) {
return InstanceKind.Unknown;
}
}
/**
* The number of (non-static) fields of a PlainInstance, or the length of a List, or the number
* of associations in a Map, or the number of codeunits in a String, or the total number of
* fields (positional and named) in a Record.
*
* Provided for instance kinds:
* - PlainInstance
* - String
* - List
* - Map
* - Set
* - Uint8ClampedList
* - Uint8List
* - Uint16List
* - Uint32List
* - Uint64List
* - Int8List
* - Int16List
* - Int32List
* - Int64List
* - Float32List
* - Float64List
* - Int32x4List
* - Float32x4List
* - Float64x2List
* - Record
*
* Can return <code>null</code>.
*/
public int getLength() {
return getAsInt("length");
}
/**
* The referent of a MirrorReference instance.
*
* Provided for instance kinds:
* - MirrorReference
*
* Can return <code>null</code>.
*/
public ObjRef getMirrorReferent() {
JsonObject obj = (JsonObject) json.get("mirrorReferent");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ObjRef(obj);
}
/**
* The name of a Type instance.
*
* Provided for instance kinds:
* - Type
*
* Can return <code>null</code>.
*/
public String getName() {
return getAsString("name");
}
/**
* The index of the first element or association or codeunit returned. This is only provided when
* it is non-zero.
*
* Provided for instance kinds:
* - String
* - List
* - Map
* - Set
* - Uint8ClampedList
* - Uint8List
* - Uint16List
* - Uint32List
* - Uint64List
* - Int8List
* - Int16List
* - Int32List
* - Int64List
* - Float32List
* - Float64List
* - Int32x4List
* - Float32x4List
* - Float64x2List
*
* Can return <code>null</code>.
*/
public int getOffset() {
return getAsInt("offset");
}
/**
* The index of a TypeParameter instance.
*
* Provided for instance kinds:
* - TypeParameter
*
* Can return <code>null</code>.
*/
public int getParameterIndex() {
return getAsInt("parameterIndex");
}
/**
* The parameterized class of a type parameter:
*
* Provided for instance kinds:
* - TypeParameter
*
* Can return <code>null</code>.
*/
public ClassRef getParameterizedClass() {
JsonObject obj = (JsonObject) json.get("parameterizedClass");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ClassRef(obj);
}
/**
* The list of parameter types for a function.
*
* Provided for instance kinds:
* - FunctionType
*
* Can return <code>null</code>.
*/
public ElementList<Parameter> getParameters() {
if (json.get("parameters") == null) return null;
return new ElementList<Parameter>(json.get("parameters").getAsJsonArray()) {
@Override
protected Parameter basicGet(JsonArray array, int index) {
return new Parameter(array.get(index).getAsJsonObject());
}
};
}
/**
* The pattern of a RegExp instance.
*
* Provided for instance kinds:
* - RegExp
*
* Can return <code>null</code>.
*/
public InstanceRef getPattern() {
JsonObject obj = (JsonObject) json.get("pattern");
if (obj == null) return null;
return new InstanceRef(obj);
}
/**
* The port ID for a ReceivePort.
*
* Provided for instance kinds:
* - ReceivePort
*
* Can return <code>null</code>.
*/
public int getPortId() {
return getAsInt("portId");
}
/**
* The key for a WeakProperty instance.
*
* Provided for instance kinds:
* - WeakProperty
*
* Can return <code>null</code>.
*/
public ObjRef getPropertyKey() {
JsonObject obj = (JsonObject) json.get("propertyKey");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ObjRef(obj);
}
/**
* The key for a WeakProperty instance.
*
* Provided for instance kinds:
* - WeakProperty
*
* Can return <code>null</code>.
*/
public ObjRef getPropertyValue() {
JsonObject obj = (JsonObject) json.get("propertyValue");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ObjRef(obj);
}
/**
* The return type of a function.
*
* Provided for instance kinds:
* - FunctionType
*
* Can return <code>null</code>.
*/
public InstanceRef getReturnType() {
JsonObject obj = (JsonObject) json.get("returnType");
if (obj == null) return null;
return new InstanceRef(obj);
}
/**
* The target for a WeakReference instance.
*
* Provided for instance kinds:
* - WeakReference
*
* Can return <code>null</code>.
*/
public ObjRef getTarget() {
JsonObject obj = (JsonObject) json.get("target");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ObjRef(obj);
}
/**
* The type bounded by a BoundedType instance - or - the referent of a TypeRef instance.
*
* The value will always be of one of the kinds: Type, TypeRef, TypeParameter, BoundedType.
*
* Provided for instance kinds:
* - BoundedType
* - TypeRef
*
* Can return <code>null</code>.
*/
public InstanceRef getTargetType() {
JsonObject obj = (JsonObject) json.get("targetType");
if (obj == null) return null;
return new InstanceRef(obj);
}
/**
* The type arguments for this type.
*
* Provided for instance kinds:
* - Type
*
* Can return <code>null</code>.
*/
public TypeArgumentsRef getTypeArguments() {
JsonObject obj = (JsonObject) json.get("typeArguments");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new TypeArgumentsRef(obj);
}
/**
* The corresponding Class if this Type is canonical.
*
* Provided for instance kinds:
* - Type
*
* Can return <code>null</code>.
*/
public ClassRef getTypeClass() {
JsonObject obj = (JsonObject) json.get("typeClass");
if (obj == null) return null;
final String type = json.get("type").getAsString();
if ("Instance".equals(type) || "@Instance".equals(type)) {
final String kind = json.get("kind").getAsString();
if ("Null".equals(kind)) return null;
}
return new ClassRef(obj);
}
/**
* The type parameters for a function.
*
* Provided for instance kinds:
* - FunctionType
*
* Can return <code>null</code>.
*/
public ElementList<InstanceRef> getTypeParameters() {
if (json.get("typeParameters") == null) return null;
return new ElementList<InstanceRef>(json.get("typeParameters").getAsJsonArray()) {
@Override
protected InstanceRef basicGet(JsonArray array, int index) {
return new InstanceRef(array.get(index).getAsJsonObject());
}
};
}
/**
* The value of this instance as a string.
*
* Provided for the instance kinds:
* - Bool (true or false)
* - Double (suitable for passing to Double.parse())
* - Int (suitable for passing to int.parse())
* - String (value may be truncated)
* - StackTrace
*
* Can return <code>null</code>.
*/
public String getValueAsString() {
return getAsString("valueAsString");
}
/**
* The valueAsString for String references may be truncated. If so, this property is added with
* the value 'true'.
*
* New code should use 'length' and 'count' instead.
*
* Can return <code>null</code>.
*/
public boolean getValueAsStringIsTruncated() {
final JsonElement elem = json.get("valueAsStringIsTruncated");
return elem != null ? elem.getAsBoolean() : false;
}
/**
* Returns whether this instance represents null.
*/
public boolean isNull() {
return getKind() == InstanceKind.Null;
}
}