Guest User

Untitled

a guest
Oct 22nd, 2018
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.52 KB | None | 0 0
  1. /* DO NOT EDIT. automatically generated by valabind */
  2. var ffi = require('ffi'), ref = require('ref'), Struct = require('ref-struct');
  3. var types = exports.types = {}, ptr = ref.refType;
  4.  
  5. for(var i in ref.types)
  6. types[i] = ref.types[i];
  7.  
  8. function fields(s, f) {
  9. if(s._instanceCreated)
  10. return console.warn('Structure redefined, ignoring...');
  11. for(var i in f)
  12. s.defineProperty(i, f[i]);
  13. s._instanceCreated = true;
  14. }
  15. function makeType(t, o) {
  16. b = new types[t](o);
  17. if(t in exports)
  18. o.__proto__ = exports[t].prototype;
  19. return o;
  20. }
  21.  
  22. types.RAsm = Struct();
  23. exports.RAsmOp = types.RAsmOp = Struct();
  24. types.RAsmPlugin = Struct();
  25. types.RAsmCode = Struct();
  26. types.RNum = Struct();
  27. types.RBuffer = Struct();
  28. types.RRange = Struct();
  29. types.RRangeItem = Struct();
  30. types.RNum = Struct();
  31. types.RBuffer = Struct();
  32. types.RFList = Struct();
  33. types.RList = Struct();
  34. types.RListIter = Struct();
  35. types.RRange = Struct();
  36. types.RRangeItem = Struct();
  37.  
  38. /* RAsm / RAsm */
  39. fields(types.RAsm, {
  40. bits: types.int,
  41. big_endian: types.bool,
  42. syntax: types.int,
  43. pc: types.int64,
  44. plugins: ptr(types.RList)
  45. });
  46.  
  47. /* RAsmOp / RAsm */
  48. fields(types.RAsmOp, {
  49. inst_len: types.int,
  50. buf: ptr(types.uint8),
  51. buf_asm: types.Utf8String,
  52. buf_hex: types.Utf8String,
  53. buf_err: types.Utf8String
  54. });
  55.  
  56. /* RAsmPlugin / RAsmPlugin */
  57. fields(types.RAsmPlugin, {
  58. name: types.Utf8String,
  59. arch: types.Utf8String,
  60. desc: types.Utf8String,
  61. bits: ptr(types.int)
  62. });
  63.  
  64. /* RAsmCode / RAsmCode */
  65. fields(types.RAsmCode, {
  66. len: types.int,
  67. buf: ptr(types.uint8),
  68. buf_hex: types.Utf8String,
  69. buf_asm: types.Utf8String
  70. });
  71.  
  72. /* RBuffer / RBuffer */
  73. fields(types.RBuffer, {
  74. buf: ptr(types.uint8)
  75. });
  76.  
  77. /* RRangeItem / RRangeItem */
  78. fields(types.RRangeItem, {
  79. fr: types.int64,
  80. to: types.int64,
  81. data: ptr(types.uint8),
  82. datalen: types.int
  83. });
  84.  
  85. /* RBuffer / RBuffer */
  86. fields(types.RBuffer, {
  87. buf: ptr(types.uint8)
  88. });
  89.  
  90. /* RList / RList */
  91. fields(types.RList, {
  92. head: ptr(types.RListIter),
  93. tail: ptr(types.RListIter),
  94. free: ptr(types.void)
  95. });
  96.  
  97. /* RListIter / RListIter */
  98. fields(types.RListIter, {
  99. data: ptr(types.void),
  100. n: ptr(types.RListIter),
  101. p: ptr(types.RListIter)
  102. });
  103.  
  104. /* RRangeItem / RRangeItem */
  105. fields(types.RRangeItem, {
  106. fr: types.int64,
  107. to: types.int64,
  108. data: ptr(types.uint8),
  109. datalen: types.int
  110. });
  111.  
  112. var lib = new ffi.Library('libr_asm', {
  113. r_asm_new: [types.void, []],
  114. r_asm_use: [types.bool, [ptr(types.RAsm), types.Utf8String]],
  115. r_asm_set_bits: [types.bool, [ptr(types.RAsm), types.int]],
  116. r_asm_set_syntax: [types.bool, [ptr(types.RAsm), types.int]],
  117. r_asm_set_pc: [types.bool, [ptr(types.RAsm), types.int64]],
  118. r_asm_set_big_endian: [types.bool, [ptr(types.RAsm), types.bool]],
  119. r_asm_disassemble: [types.int, [ptr(types.RAsm), types.RAsmOp, ptr(types.uint8), types.int64]],
  120. r_asm_assemble: [types.int, [ptr(types.RAsm), types.RAsmOp, types.Utf8String]],
  121. r_asm_mdisassemble: [ptr(types.RAsmCode), [ptr(types.RAsm), ptr(types.uint8), types.int64]],
  122. r_asm_mdisassemble_hexstr: [ptr(types.RAsmCode), [ptr(types.RAsm), types.Utf8String]],
  123. r_asm_massemble: [ptr(types.RAsmCode), [ptr(types.RAsm), types.Utf8String]],
  124. r_asm_assemble_file: [ptr(types.RAsmCode), [ptr(types.RAsm), types.Utf8String]],
  125. r_asm_filter_input: [types.bool, [ptr(types.RAsm), types.Utf8String]],
  126. r_asm_filter_output: [types.bool, [ptr(types.RAsm), types.Utf8String]],
  127. r_asm_free: [types.void, [ptr(types.RAsm)]],
  128. r_asm_code_set_equ: [types.int, [ptr(types.RAsmCode), types.Utf8String, types.Utf8String]],
  129. //r_num_new: [types.void, [types.RNumCallback, ptr(types.void)]],
  130. r_num_get: [types.int64, [ptr(types.RNum), types.Utf8String]],
  131. r_num_math: [types.int64, [ptr(types.RNum), types.Utf8String]],
  132. r_buf_new: [types.void, []],
  133. r_buf_read_at: [types.int, [ptr(types.RBuffer), types.int64, ptr(types.uint8), types.int]],
  134. r_buf_write_at: [types.int, [ptr(types.RBuffer), types.int64, ptr(types.uint8), types.int]],
  135. r_buf_set_bytes: [types.bool, [ptr(types.RBuffer), ptr(types.uint8), types.int]],
  136. r_range_new: [types.void, []],
  137. r_range_new_from_string: [types.void, [types.Utf8String]],
  138. r_range_item_get: [ptr(types.RRangeItem), [ptr(types.RRange), types.int64]],
  139. r_range_size: [types.int64, [ptr(types.RRange)]],
  140. r_range_add_from_string: [types.int64, [ptr(types.RRange), types.Utf8String]],
  141. r_range_contains: [types.bool, [ptr(types.RRange), types.int64]],
  142. r_range_sort: [types.bool, [ptr(types.RRange)]],
  143. r_range_list: [types.bool, [ptr(types.RRange), types.bool]],
  144. r_range_get_n: [types.bool, [ptr(types.RRange), types.int, types.int64, types.int64]],
  145. r_range_inverse: [ptr(types.RRange), [ptr(types.RRange), types.int64, types.int64, types.int]],
  146. //r_num_new: [types.void, [types.RNumCallback, ptr(types.void)]],
  147. r_num_get: [types.int64, [ptr(types.RNum), types.Utf8String]],
  148. r_num_math: [types.int64, [ptr(types.RNum), types.Utf8String]],
  149. r_buf_new: [types.void, []],
  150. r_buf_read_at: [types.int, [ptr(types.RBuffer), types.int64, ptr(types.uint8), types.int]],
  151. r_buf_write_at: [types.int, [ptr(types.RBuffer), types.int64, ptr(types.uint8), types.int]],
  152. r_buf_set_bytes: [types.bool, [ptr(types.RBuffer), ptr(types.uint8), types.int]],
  153. r_flist_iterator: [ptr(types.RFList), [ptr(types.RFList)]], //HACK fix return type in valabind
  154. r_flist_next: [types.bool, [ptr(types.RFList)]],
  155. r_flist_get: [ptr(types.void), [ptr(types.RFList)]],
  156. r_list_append: [types.void, [ptr(types.RList), ptr(types.void)]],
  157. r_list_prepend: [types.void, [ptr(types.RList), ptr(types.void)]],
  158. r_list_iterator: [types.RListIter, [ptr(types.RList)]],
  159. r_list_new: [types.void, []],
  160. r_list_length: [types.uint, [ptr(types.RList)]],
  161. r_list_get: [ptr(types.void), [ptr(types.RList)]],
  162. r_list_del_n: [types.bool, [ptr(types.RList), types.int]],
  163. r_list_get_top: [types.bool, [ptr(types.RList)]],
  164. r_list_pop: [ptr(types.void), [ptr(types.RList)]],
  165. r_list_iter_new: [types.void, []],
  166. r_list_iter_get_data: [ptr(types.void), [ptr(types.RListIter)]],
  167. r_list_iter_get_next: [types.RListIter, [ptr(types.RListIter)]],
  168. r_range_new: [types.void, []],
  169. r_range_new_from_string: [types.void, [types.Utf8String]],
  170. r_range_item_get: [ptr(types.RRangeItem), [ptr(types.RRange), types.int64]],
  171. r_range_size: [types.int64, [ptr(types.RRange)]],
  172. r_range_add_from_string: [types.int64, [ptr(types.RRange), types.Utf8String]],
  173. r_range_contains: [types.bool, [ptr(types.RRange), types.int64]],
  174. r_range_sort: [types.bool, [ptr(types.RRange)]],
  175. r_range_list: [types.bool, [ptr(types.RRange), types.bool]],
  176. r_range_get_n: [types.bool, [ptr(types.RRange), types.int, types.int64, types.int64]],
  177. r_range_inverse: [ptr(types.RRange), [ptr(types.RRange), types.int64, types.int64, types.int]]
  178. });
  179.  
  180. /* RAsm / RAsm */
  181. exports.RAsm = function RAsm() {
  182. types.RAsm.call(this, lib.r_asm_new());
  183. };
  184.  
  185. exports.RAsm.prototype = new types.RAsm;
  186. delete exports.RAsm.prototype._pointer;
  187.  
  188. /*
  189. NONE: R_ASM_ARCH_NONE;
  190. X86: R_ASM_ARCH_X86;
  191. ARM: R_ASM_ARCH_ARM;
  192. PPC: R_ASM_ARCH_PPC;
  193. M68K: R_ASM_ARCH_M68K;
  194. JAVA: R_ASM_ARCH_JAVA;
  195. MIPS: R_ASM_ARCH_MIPS;
  196. SPARC: R_ASM_ARCH_SPARC;
  197. CSR: R_ASM_ARCH_CSR;
  198. MSIL: R_ASM_ARCH_MSIL;
  199. OBJD: R_ASM_ARCH_OBJD;
  200. BF: R_ASM_ARCH_BF;
  201. */
  202. /*
  203. NONE: R_ASM_SYNTAX_NONE;
  204. INTEL: R_ASM_SYNTAX_INTEL;
  205. ATT: R_ASM_SYNTAX_ATT;
  206. */
  207. /*
  208. RAWVALUE: R_ASM_MOD_RAWVALUE;
  209. VALUE: R_ASM_MOD_VALUE;
  210. DSTREG: R_ASM_MOD_DSTREG;
  211. SRCREG0: R_ASM_MOD_SRCREG0;
  212. SRCREG1: R_ASM_MOD_SRCREG1;
  213. SRCREG2: R_ASM_MOD_SRCREG2;
  214. */
  215. exports.RAsm.prototype.delete = function() {
  216. this.free()/* I doubt it's the right thing */;
  217. };
  218. exports.RAsm.use = function use($name) {
  219. return lib.r_asm_use(this._pointer, $name);
  220. };
  221. exports.RAsm.set_bits = function set_bits($bits) {
  222. return lib.r_asm_set_bits(this._pointer, $bits);
  223. };
  224. exports.RAsm.set_syntax = function set_syntax($syntax) {
  225. return lib.r_asm_set_syntax(this._pointer, $syntax);
  226. };
  227. exports.RAsm.set_pc = function set_pc($addr) {
  228. return lib.r_asm_set_pc(this._pointer, $addr);
  229. };
  230. exports.RAsm.set_big_endian = function set_big_endian($big) {
  231. return lib.r_asm_set_big_endian(this._pointer, $big);
  232. };
  233. exports.RAsm.disassemble = function disassemble($op, $buf, $length) {
  234. return lib.r_asm_disassemble(this._pointer, $op, $buf, $length);
  235. };
  236. exports.RAsm.assemble = function assemble($op, $buf) {
  237. return lib.r_asm_assemble(this._pointer, $op, $buf);
  238. };
  239. exports.RAsm.mdisassemble = function mdisassemble($buf, $length) {
  240. return makeType('RAsmCode', lib.r_asm_mdisassemble(this._pointer, $buf, $length));
  241. };
  242. exports.RAsm.mdisassemble_hexstr = function mdisassemble_hexstr($hexstr) {
  243. return makeType('RAsmCode', lib.r_asm_mdisassemble_hexstr(this._pointer, $hexstr));
  244. };
  245. exports.RAsm.massemble = function massemble($buf) {
  246. return makeType('RAsmCode', lib.r_asm_massemble(this._pointer, $buf));
  247. };
  248. exports.RAsm.assemble_file = function assemble_file($file) {
  249. return makeType('RAsmCode', lib.r_asm_assemble_file(this._pointer, $file));
  250. };
  251. exports.RAsm.filter_input = function filter_input($filter) {
  252. return lib.r_asm_filter_input(this._pointer, $filter);
  253. };
  254. exports.RAsm.filter_output = function filter_output($filter) {
  255. return lib.r_asm_filter_output(this._pointer, $filter);
  256. };
  257. exports.RAsm.free = function free() {
  258. return lib.r_asm_free(this._pointer);
  259. };
  260.  
  261. /* RAsmPlugin / RAsmPlugin */
  262. exports.RAsmPlugin = function RAsmPlugin() {
  263. types.RAsmPlugin.call(this);
  264. };
  265.  
  266. exports.RAsmPlugin.prototype = new types.RAsmPlugin;
  267. delete exports.RAsmPlugin.prototype._pointer;
  268.  
  269.  
  270. /* RAsmCode / RAsmCode */
  271. exports.RAsmCode = function RAsmCode() {
  272. types.RAsmCode.call(this);
  273. };
  274.  
  275. exports.RAsmCode.prototype = new types.RAsmCode;
  276. delete exports.RAsmCode.prototype._pointer;
  277.  
  278. exports.RAsmCode.prototype.delete = function() {
  279. r_asm_code_free(this._pointer);
  280. };
  281. exports.RAsmCode.set_equ = function set_equ($key, $val) {
  282. return lib.r_asm_code_set_equ(this._pointer, $key, $val);
  283. };
  284.  
  285. /* RNum / RNum */
  286. exports.RNum = function RNum(cbuser) {
  287. types.RNum.call(this, lib.r_num_new(cbuser));
  288. };
  289.  
  290. exports.RNum.prototype = new types.RNum;
  291. delete exports.RNum.prototype._pointer;
  292.  
  293. exports.RNum.prototype.delete = function() {
  294. this.free()/* I doubt it's the right thing */;
  295. };
  296. exports.RNum.get = function get($str) {
  297. return lib.r_num_get(this._pointer, $str);
  298. };
  299. exports.RNum.math = function math($str) {
  300. return lib.r_num_math(this._pointer, $str);
  301. };
  302.  
  303. /* RBuffer / RBuffer */
  304. exports.RBuffer = function RBuffer() {
  305. types.RBuffer.call(this, lib.r_buf_new());
  306. };
  307.  
  308. exports.RBuffer.prototype = new types.RBuffer;
  309. delete exports.RBuffer.prototype._pointer;
  310.  
  311. exports.RBuffer.prototype.delete = function() {
  312. this.free()/* I doubt it's the right thing */;
  313. };
  314. exports.RBuffer.read_at = function read_at($addr, $buf, $len) {
  315. return lib.r_buf_read_at(this._pointer, $addr, $buf, $len);
  316. };
  317. exports.RBuffer.write_at = function write_at($addr, $buf, $len) {
  318. return lib.r_buf_write_at(this._pointer, $addr, $buf, $len);
  319. };
  320. exports.RBuffer.set_bytes = function set_bytes($buf, $len) {
  321. return lib.r_buf_set_bytes(this._pointer, $buf, $len);
  322. };
  323.  
  324. /* RRange / RRange */
  325. exports.RRange = function RRange(str) {
  326. types.RRange.call(this, lib.r_range_new_from_string(str));
  327. };
  328.  
  329. exports.RRange.prototype = new types.RRange;
  330. delete exports.RRange.prototype._pointer;
  331.  
  332. exports.RRange.prototype.delete = function() {
  333. this.free()/* I doubt it's the right thing */;
  334. };
  335. exports.RRange.item_get = function item_get($addr) {
  336. return lib.r_range_item_get(this._pointer, $addr);
  337. };
  338. exports.RRange.size = function size() {
  339. return lib.r_range_size(this._pointer);
  340. };
  341. exports.RRange.add_from_string = function add_from_string($str) {
  342. return lib.r_range_add_from_string(this._pointer, $str);
  343. };
  344. exports.RRange.contains = function contains($addr) {
  345. return lib.r_range_contains(this._pointer, $addr);
  346. };
  347. exports.RRange.sort = function sort() {
  348. return lib.r_range_sort(this._pointer);
  349. };
  350. exports.RRange.list = function list($rad) {
  351. return lib.r_range_list(this._pointer, $rad);
  352. };
  353. exports.RRange.get_n = function get_n($n, $fr, $to) {
  354. return lib.r_range_get_n(this._pointer, $n, $fr, $to);
  355. };
  356. exports.RRange.inverse = function inverse($fr, $to, $flags) {
  357. return lib.r_range_inverse(this._pointer, $fr, $to, $flags);
  358. };
  359.  
  360. /* RRangeItem / RRangeItem */
  361. exports.RRangeItem = function RRangeItem() {
  362. types.RRangeItem.call(this);
  363. };
  364.  
  365. exports.RRangeItem.prototype = new types.RRangeItem;
  366. delete exports.RRangeItem.prototype._pointer;
  367.  
  368.  
  369. /* RNum / RNum */
  370. exports.RNum = function RNum(cbuser) {
  371. types.RNum.call(this, lib.r_num_new(cbuser));
  372. };
  373.  
  374. exports.RNum.prototype = new types.RNum;
  375. delete exports.RNum.prototype._pointer;
  376.  
  377. exports.RNum.prototype.delete = function() {
  378. this.free()/* I doubt it's the right thing */;
  379. };
  380. exports.RNum.get = function get($str) {
  381. return lib.r_num_get(this._pointer, $str);
  382. };
  383. exports.RNum.math = function math($str) {
  384. return lib.r_num_math(this._pointer, $str);
  385. };
  386.  
  387. /* RBuffer / RBuffer */
  388. exports.RBuffer = function RBuffer() {
  389. types.RBuffer.call(this, lib.r_buf_new());
  390. };
  391.  
  392. exports.RBuffer.prototype = new types.RBuffer;
  393. delete exports.RBuffer.prototype._pointer;
  394.  
  395. exports.RBuffer.prototype.delete = function() {
  396. this.free()/* I doubt it's the right thing */;
  397. };
  398. exports.RBuffer.read_at = function read_at($addr, $buf, $len) {
  399. return lib.r_buf_read_at(this._pointer, $addr, $buf, $len);
  400. };
  401. exports.RBuffer.write_at = function write_at($addr, $buf, $len) {
  402. return lib.r_buf_write_at(this._pointer, $addr, $buf, $len);
  403. };
  404. exports.RBuffer.set_bytes = function set_bytes($buf, $len) {
  405. return lib.r_buf_set_bytes(this._pointer, $buf, $len);
  406. };
  407.  
  408. /* RFList / void* */
  409. exports.RFList = function RFList() {
  410. types.RFList.call(this);
  411. };
  412.  
  413. exports.RFList.prototype = new types.RFList;
  414. delete exports.RFList.prototype._pointer;
  415.  
  416. exports.RFList.prototype.delete = function() {
  417. r_flist_unref(this._pointer);
  418. };
  419. exports.RFList.iterator = function iterator() {
  420. return makeType('RFList', lib.r_flist_iterator(this._pointer));
  421. };
  422. exports.RFList.next = function next() {
  423. return lib.r_flist_next(this._pointer);
  424. };
  425. exports.RFList.get = function get() {
  426. return lib.r_flist_get(this._pointer);
  427. };
  428.  
  429. /* RList / RList */
  430. exports.RList = function RList() {
  431. types.RList.call(this, lib.r_list_new());
  432. };
  433.  
  434. exports.RList.prototype = new types.RList;
  435. delete exports.RList.prototype._pointer;
  436.  
  437. exports.RList.prototype.delete = function() {
  438. this.free()/* I doubt it's the right thing */;
  439. };
  440. exports.RList.append = function append($foo) {
  441. return lib.r_list_append(this._pointer, $foo);
  442. };
  443. exports.RList.prepend = function prepend($foo) {
  444. return lib.r_list_prepend(this._pointer, $foo);
  445. };
  446. exports.RList.iterator = function iterator() {
  447. return makeType('RListIter', lib.r_list_iterator(this._pointer));
  448. };
  449. exports.RList.length = function length() {
  450. return lib.r_list_length(this._pointer);
  451. };
  452. exports.RList.get = function get() {
  453. return lib.r_list_get(this._pointer);
  454. };
  455. exports.RList.del_n = function del_n($n) {
  456. return lib.r_list_del_n(this._pointer, $n);
  457. };
  458. exports.RList.get_top = function get_top() {
  459. return lib.r_list_get_top(this._pointer);
  460. };
  461. exports.RList.pop = function pop() {
  462. return lib.r_list_pop(this._pointer);
  463. };
  464.  
  465. /* RListIter / RListIter */
  466. exports.RListIter = function RListIter() {
  467. types.RListIter.call(this, lib.r_list_iter_new());
  468. };
  469.  
  470. exports.RListIter.prototype = new types.RListIter;
  471. delete exports.RListIter.prototype._pointer;
  472.  
  473. exports.RListIter.prototype.delete = function() {
  474. this.free()/* I doubt it's the right thing */;
  475. };
  476. exports.RListIter.get_data = function get_data() {
  477. return lib.r_list_iter_get_data(this._pointer);
  478. };
  479. exports.RListIter.get_next = function get_next() {
  480. return makeType('RListIter', lib.r_list_iter_get_next(this._pointer));
  481. };
  482.  
  483. /* RRange / RRange */
  484. exports.RRange = function RRange(str) {
  485. types.RRange.call(this, lib.r_range_new_from_string(str));
  486. };
  487.  
  488. exports.RRange.prototype = new types.RRange;
  489. delete exports.RRange.prototype._pointer;
  490.  
  491. exports.RRange.prototype.delete = function() {
  492. this.free()/* I doubt it's the right thing */;
  493. };
  494. exports.RRange.item_get = function item_get($addr) {
  495. return lib.r_range_item_get(this._pointer, $addr);
  496. };
  497. exports.RRange.size = function size() {
  498. return lib.r_range_size(this._pointer);
  499. };
  500. exports.RRange.add_from_string = function add_from_string($str) {
  501. return lib.r_range_add_from_string(this._pointer, $str);
  502. };
  503. exports.RRange.contains = function contains($addr) {
  504. return lib.r_range_contains(this._pointer, $addr);
  505. };
  506. exports.RRange.sort = function sort() {
  507. return lib.r_range_sort(this._pointer);
  508. };
  509. exports.RRange.list = function list($rad) {
  510. return lib.r_range_list(this._pointer, $rad);
  511. };
  512. exports.RRange.get_n = function get_n($n, $fr, $to) {
  513. return lib.r_range_get_n(this._pointer, $n, $fr, $to);
  514. };
  515. exports.RRange.inverse = function inverse($fr, $to, $flags) {
  516. return lib.r_range_inverse(this._pointer, $fr, $to, $flags);
  517. };
  518.  
  519. /* RRangeItem / RRangeItem */
  520. exports.RRangeItem = function RRangeItem() {
  521. types.RRangeItem.call(this);
  522. };
  523.  
  524. exports.RRangeItem.prototype = new types.RRangeItem;
  525. delete exports.RRangeItem.prototype._pointer;
Add Comment
Please, Sign In to add comment