radio/libjs/wType/factory.js

43 lines
1.1 KiB
JavaScript

"use strict";
var Object = require("./object");
var types = {
"String" : require("./string"),
"Vocabulary": require("./vocabulary"),
"Uint64" : require("./uint64"),
"Address" : require("./address"),
"Boolean" : require("./boolean"),
"Event" : require("./event"),
"Vector" : require("./vector"),
"Blob" : require("./blob")
}
var storage = global.Object.create(null);
for (var name in types) {
if (types.hasOwnProperty(name)) {
var typeId = Object.objectType[name];
if (typeId === undefined) {
throw new Error("wType initialization error - can't find type id for type " + name);
}
storage[typeId] = types[name];
}
}
function create(/*ByteArray*/ba) {
var type = ba.pop8();
var Type = storage[type];
if (Type === undefined) {
throw new Error("Unsupported data type found during deserialization: " + type);
}
var obj = new Type();
obj.deserialize(ba);
return obj;
}
Object.fromByteArray = create;
module.exports = create;