1 /* 2 * Copyright (c) 2012 Joyent, Inc. All rights reserved. 3 */ 4 5 /* 6 * 'example' is a native C module that provides a partial implementation of 7 * an unsigned 64-bit integer type. This is a simple consumer that 8 * demonstrates creation and manipulation of these objects, which should be 9 * self-explanatory. See example.c for the implementation. 10 */ 11 12 var example = require('./example'); 13 var util = require('util'); 14 var EventEmitter = require('events').EventEmitter; 15 16 var e = example.create(); 17 var f = example.create('8000000000'); 18 19 console.log('e = ' + e.toString()); 20 console.log('f = ' + f.toString()); 21 22 e.add(132); 23 console.log('e = ' + e.toString()); 24 25 try { 26 e.set(0x1111111111111111); 27 } catch (e) { 28 console.log('got exception: ' + e.name + ' (' + e.message + ')'); 29 } 30 31 e.set('0x1111111111111111'); 32 console.log('e = ' + e.toString()); 33 34 e.multiply(5); 35 console.log('e = ' + e.toString()); 36 37 try { 38 e.toString(33, 'fred'); 39 } catch (e) { 40 console.log('got exception: ' + e.name + ' (' + e.message + ')'); 41 console.log(util.inspect(e, false, null)); 42 } 43 44 e.set(50000000); 45 f.set(22222222); 46 e.multiply(f.toString()); 47 console.log('e = ' + e.toString()); 48 console.log('f = ' + f.toString()); 49 50 e.set(33); 51 e.multiplyAsync(100, function () { 52 console.log('background e = ' + e.toString()); 53 }); 54 55 function 56 Wrapper(ex) 57 { 58 var self = this; 59 60 ex.__emit = function (name) { 61 var args = Array.prototype.slice.call(arguments); 62 self.emit.apply(self, args); 63 }; 64 } 65 66 util.inherits(Wrapper, EventEmitter); 67 68 var g = example.create('543'); 69 var gw = new Wrapper(g); 70 71 gw.on('add', function () { 72 console.log('someone added something'); 73 }); 74 75 g.add(200); 76 g.add(300); 77 g.add(400); 78 79 console.log('1000000000000000000 + 3333333333333333333 = ' + 80 example.static_add('1000000000000000000', '3333333333333333333')); 81 82 console.log(example.static_object());