Improve TS annotations when calling readObjectField/readStructField
This commit is contained in:
parent
c81d537ea3
commit
855d93ce67
|
|
@ -116,8 +116,8 @@ export const monoPlatform: Platform = {
|
|||
return Module.getValue((baseAddress as any as number) + (fieldOffset || 0), 'i32');
|
||||
},
|
||||
|
||||
readObjectField: function readHeapObject(baseAddress: Pointer, fieldOffset?: number): System_Object {
|
||||
return Module.getValue((baseAddress as any as number) + (fieldOffset || 0), 'i32') as any as System_Object;
|
||||
readObjectField: function readHeapObject<T extends System_Object>(baseAddress: Pointer, fieldOffset?: number): T {
|
||||
return Module.getValue((baseAddress as any as number) + (fieldOffset || 0), 'i32') as any as T;
|
||||
},
|
||||
|
||||
readStringField: function readHeapObject(baseAddress: Pointer, fieldOffset?: number): string | null {
|
||||
|
|
@ -125,8 +125,8 @@ export const monoPlatform: Platform = {
|
|||
return fieldValue === 0 ? null : monoPlatform.toJavaScriptString(fieldValue as any as System_String);
|
||||
},
|
||||
|
||||
readStructField: function readStructField(baseAddress: Pointer, fieldOffset?: number): Pointer {
|
||||
return ((baseAddress as any as number) + (fieldOffset || 0)) as any as Pointer;
|
||||
readStructField: function readStructField<T extends Pointer>(baseAddress: Pointer, fieldOffset?: number): T {
|
||||
return ((baseAddress as any as number) + (fieldOffset || 0)) as any as T;
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -13,9 +13,9 @@
|
|||
|
||||
getObjectFieldsBaseAddress(referenceTypedObject: System_Object): Pointer;
|
||||
readInt32Field(baseAddress: Pointer, fieldOffset?: number): number;
|
||||
readObjectField(baseAddress: Pointer, fieldOffset?: number): System_Object;
|
||||
readObjectField<T extends System_Object>(baseAddress: Pointer, fieldOffset?: number): T;
|
||||
readStringField(baseAddress: Pointer, fieldOffset?: number): string | null;
|
||||
readStructField(baseAddress: Pointer, fieldOffset?: number): Pointer;
|
||||
readStructField<T extends Pointer>(baseAddress: Pointer, fieldOffset?: number): T;
|
||||
}
|
||||
|
||||
// We don't actually instantiate any of these at runtime. For perf it's preferable to
|
||||
|
|
|
|||
|
|
@ -4,20 +4,20 @@ import { platform } from '../Environment';
|
|||
// Keep in sync with the structs in .NET code
|
||||
|
||||
export const renderBatch = {
|
||||
updatedComponents: (obj: RenderBatchPointer) => platform.readStructField(obj, 0) as ArrayRangePointer,
|
||||
updatedComponents: (obj: RenderBatchPointer) => platform.readStructField<ArrayRangePointer>(obj, 0),
|
||||
};
|
||||
|
||||
const arrayRangeStructLength = 8;
|
||||
export const arrayRange = {
|
||||
array: (obj: ArrayRangePointer) => platform.readObjectField(obj, 0) as System_Array,
|
||||
array: (obj: ArrayRangePointer) => platform.readObjectField<System_Array>(obj, 0),
|
||||
count: (obj: ArrayRangePointer) => platform.readInt32Field(obj, 4),
|
||||
};
|
||||
|
||||
export const renderTreeDiffStructLength = 4 + 2 * arrayRangeStructLength;
|
||||
export const renderTreeDiff = {
|
||||
componentId: (obj: RenderTreeDiffPointer) => platform.readInt32Field(obj, 0),
|
||||
edits: (obj: RenderTreeDiffPointer) => platform.readStructField(obj, 4) as ArrayRangePointer,
|
||||
currentState: (obj: RenderTreeDiffPointer) => platform.readStructField(obj, 4 + arrayRangeStructLength) as ArrayRangePointer,
|
||||
edits: (obj: RenderTreeDiffPointer) => platform.readStructField<ArrayRangePointer>(obj, 4),
|
||||
currentState: (obj: RenderTreeDiffPointer) => platform.readStructField<ArrayRangePointer>(obj, 4 + arrayRangeStructLength),
|
||||
};
|
||||
|
||||
// Nominal types to ensure only valid pointers are passed to the functions above.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ export const renderTreeNode = {
|
|||
attributeName: (node: RenderTreeNodePointer) => platform.readStringField(node, 20),
|
||||
attributeValue: (node: RenderTreeNodePointer) => platform.readStringField(node, 24),
|
||||
componentId: (node: RenderTreeNodePointer) => platform.readInt32Field(node, 32),
|
||||
component: (node: RenderTreeNodePointer) => platform.readObjectField(node, 36),
|
||||
};
|
||||
|
||||
export enum NodeType {
|
||||
|
|
|
|||
Loading…
Reference in New Issue