aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils/src/abi_encoder/abstract_data_types
diff options
context:
space:
mode:
authorGreg Hysen <greg.hysen@gmail.com>2018-11-26 12:05:41 +0800
committerGreg Hysen <greg.hysen@gmail.com>2018-11-29 08:38:11 +0800
commit8f73f53c95d8ba887558863b8b726a2b3f5b7e2b (patch)
treed819b2412b59e484fffea54701f5441108ce122d /packages/utils/src/abi_encoder/abstract_data_types
parent9a51af46ee4a35b3d1ce2fcdc6f561aa68307cf0 (diff)
downloaddexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.tar
dexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.tar.gz
dexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.tar.bz2
dexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.tar.lz
dexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.tar.xz
dexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.tar.zst
dexon-0x-contracts-8f73f53c95d8ba887558863b8b726a2b3f5b7e2b.zip
Moved calldata iterator logic into its own iterator clas
Diffstat (limited to 'packages/utils/src/abi_encoder/abstract_data_types')
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts8
-rw-r--r--packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts21
2 files changed, 14 insertions, 15 deletions
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts
index f4246c893..35ccc0586 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/blob.ts
@@ -8,11 +8,11 @@ import { DataType } from '../data_type';
import { DataTypeFactory } from '../interfaces';
export abstract class Blob extends DataType {
- protected _hasConstantSize: boolean;
+ protected _sizeKnownAtCompileTime: boolean;
- public constructor(dataItem: DataItem, factory: DataTypeFactory, hasConstantSize: boolean) {
+ public constructor(dataItem: DataItem, factory: DataTypeFactory, sizeKnownAtCompileTime: boolean) {
super(dataItem, factory);
- this._hasConstantSize = hasConstantSize;
+ this._sizeKnownAtCompileTime = sizeKnownAtCompileTime;
}
public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): CalldataBlocks.Blob {
@@ -30,7 +30,7 @@ export abstract class Blob extends DataType {
}
public isStatic(): boolean {
- return this._hasConstantSize;
+ return this._sizeKnownAtCompileTime;
}
public abstract encodeValue(value: any): Buffer;
diff --git a/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts b/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts
index 47efac521..46e60979a 100644
--- a/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts
+++ b/packages/utils/src/abi_encoder/abstract_data_types/types/pointer.ts
@@ -1,3 +1,4 @@
+/* tslint:disable prefer-function-over-method */
import { DataItem } from 'ethereum-types';
import * as ethUtil from 'ethereumjs-util';
import * as _ from 'lodash';
@@ -10,26 +11,24 @@ import { DataType } from '../data_type';
import { DataTypeFactory } from '../interfaces';
export abstract class Pointer extends DataType {
- protected _dependency: DataType;
+ protected _destination: DataType;
protected _parent: DataType;
- private readonly _isStatic: boolean;
- public constructor(dataItem: DataItem, factory: DataTypeFactory, dependency: DataType, parent: DataType) {
+ public constructor(dataItem: DataItem, factory: DataTypeFactory, destination: DataType, parent: DataType) {
super(dataItem, factory);
- this._dependency = dependency;
+ this._destination = destination;
this._parent = parent;
- this._isStatic = true;
}
public generateCalldataBlock(value: any, parentBlock?: CalldataBlock): CalldataBlocks.Pointer {
- if (parentBlock === undefined) {
+ if (!parentBlock) {
throw new Error(`DependentDataType requires a parent block to generate its block`);
}
- const dependencyBlock = this._dependency.generateCalldataBlock(value, parentBlock);
+ const destinationBlock = this._destination.generateCalldataBlock(value, parentBlock);
const name = this.getDataItem().name;
const signature = this.getSignature();
- const parentName = parentBlock ? parentBlock.getName() : '';
- const block = new CalldataBlocks.Pointer(name, signature, parentName, dependencyBlock, parentBlock);
+ const parentName = parentBlock.getName();
+ const block = new CalldataBlocks.Pointer(name, signature, parentName, destinationBlock, parentBlock);
return block;
}
@@ -40,12 +39,12 @@ export abstract class Pointer extends DataType {
const destinationOffsetAbsolute = calldata.toAbsoluteOffset(destinationOffsetRelative);
const currentOffset = calldata.getOffset();
calldata.setOffset(destinationOffsetAbsolute);
- const value = this._dependency.generateValue(calldata, rules);
+ const value = this._destination.generateValue(calldata, rules);
calldata.setOffset(currentOffset);
return value;
}
public isStatic(): boolean {
- return this._isStatic;
+ return true;
}
}