mirror of
https://github.com/rizinorg/jsdec.git
synced 2026-11-09 04:39:32 -10:00
53 lines
1.6 KiB
JavaScript
53 lines
1.6 KiB
JavaScript
// SPDX-FileCopyrightText: 2019-2021 Giovanni Dante Grazioli <[email protected]>
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
import Extra from './extra.js';
|
|
|
|
const _java = {
|
|
array: function(type, size, create, init) {
|
|
this.size = size || 0;
|
|
this.type = Extra.replace.object(type);
|
|
this.init = init;
|
|
this.toString = function() {
|
|
var t = [Global().printer.theme.flow('new'), Global().printer.theme.callname(this.type), '[' + this.size + ']'];
|
|
if (this.init && this.init.length > 0) {
|
|
t.push('{' + this.init.join(', ') + '}');
|
|
}
|
|
return t.join(' ');
|
|
};
|
|
},
|
|
object: function(type, args, create) {
|
|
this.args = args || [];
|
|
this.type = Extra.replace.object(type);
|
|
this.create = create || false;
|
|
this.toString = function() {
|
|
var a = this.args.length > 0 ? '(' + this.args.join(', ') + ')' : '';
|
|
if (this.create) {
|
|
return [Global().printer.theme.flow('new'), Global().printer.theme.callname(this.type), a].join(' ').trim();
|
|
}
|
|
return [Global().printer.theme.callname(this.type), a].join(' ').trim();
|
|
};
|
|
}
|
|
};
|
|
|
|
const _all_langs = {
|
|
java: _java,
|
|
dalvik: _java,
|
|
};
|
|
|
|
export default {
|
|
array: function(type, size, create, lang, init) {
|
|
lang = lang || Global().evars.arch;
|
|
if (!_all_langs[lang]) {
|
|
throw new Error('Missing lang for array (objects.js)');
|
|
}
|
|
return new _all_langs[lang].array(type, size, create, init || []);
|
|
},
|
|
object: function(type, args, create, lang) {
|
|
lang = lang || Global().evars.arch;
|
|
if (!_all_langs[lang]) {
|
|
throw new Error('Missing lang for object (objects.js)');
|
|
}
|
|
return new _all_langs[lang].object(type, args, create);
|
|
}
|
|
}; |