Last active
August 29, 2015 13:57
-
-
Save 3demax/9658227 to your computer and use it in GitHub Desktop.
fail
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* DO NOT EDIT. Automatically generated by valabind from toxcore */ | |
| var ffi = require('ffi'), ref = require('ref'), Struct = require('ref-struct'); | |
| var lib = new ffi.DynamicLibrary('libtoxcore'+ffi.LIB_EXT); | |
| function Tname(T) { | |
| return T.hasOwnProperty('$name') ? T.$name : T.name; | |
| } | |
| var types = exports.type = {}; | |
| for(var i in ref.types) | |
| if(i != 'Utf8String') // Try not to trip the deprecated warning. | |
| types[i] = ref.types[i]; | |
| types.staticCString = function staticCString(N) { | |
| var r = Object.create(types.char); | |
| r.name = 'char['+N+']'; | |
| r.size *= N; | |
| r.get = function get(buf, offset) { | |
| if(buf.isNull()) | |
| return null; | |
| // TODO enforce maxLength of N | |
| return buf.readCString(offset); | |
| }; | |
| r.set = function set(buf, offset, val) { | |
| // TODO enforce maxLength of N | |
| return buf.writeCString(val, offset); | |
| }; | |
| return r; | |
| }; | |
| var ptrCache = [], ptrCacheTo = []; | |
| types.ptr = function PointerType(T) { | |
| T = ref.coerceType(T); | |
| if(T == types.char) | |
| return types.CString; | |
| var i = ptrCache.indexOf(T); | |
| return i === -1 ? ptrCacheTo[ptrCache.push(T)-1] = ref.refType(T) : ptrCacheTo[i]; | |
| }; | |
| var refCache = [], refCacheTo = []; | |
| types.ref = function ReferenceType(T) { | |
| T = ref.coerceType(T); | |
| var i = refCache.indexOf(T); | |
| if(i !== -1) | |
| return refCacheTo[i]; | |
| var p = types.ptr(T), r = refCacheTo[refCache.push(T)-1] = Object.create(p); | |
| r.indirection = 1; | |
| r.size = ref.sizeof.pointer; | |
| r.alignment = ref.alignof.pointer; | |
| r.name = Tname(T)+'&'; | |
| r.ffi_type = ffi.FFI_TYPES.pointer; | |
| r.get = function get(buf, offset) { | |
| buf = ref.get(buf, offset, p); | |
| if(buf.isNull()) | |
| return null; | |
| return buf.deref(); | |
| }; | |
| r.set = function set(buf, offset, val) { | |
| if(!val) | |
| return ref.set(buf, offset, null, p); | |
| if(!val.buffer) | |
| throw new TypeError('valabind ['+r.name+']#set got a bad value'); | |
| return ref.set(buf, offset, val.buffer, p); | |
| }; | |
| return r; | |
| }; | |
| types.array = function ArrayType(T, N) { | |
| T = ref.coerceType(T); | |
| if(T == types.char) | |
| return types.staticCString(N); | |
| var r = Object.create(T); | |
| r.size *= N; | |
| r.name = Tname(T)+'['+N+']'; | |
| function ArrayType(buffer, base) { | |
| this.buffer = buffer; | |
| this._base = base; | |
| } | |
| ArrayType.prototype = []; | |
| ArrayType.prototype.constructor = ArrayType; | |
| for(var i = 0; i < N; i++) | |
| Object.defineProperty(ArrayType.prototype, i, { | |
| get: function get() { | |
| return ref.get(this.buffer, this._base+T.size*i, T); | |
| }, | |
| set: function set(val) { | |
| return ref.set(this.buffer, this._base+T.size*i, val, T); | |
| }, | |
| enumerable: true | |
| }); | |
| r.get = function get(buf, offset) { | |
| return new ArrayType(buf, offset); | |
| }; | |
| r.set = function set(buf, offset, val) { | |
| for(var i in val) { | |
| if(isNaN(i = +i) || i >= N) | |
| continue; | |
| ref.set(buf, offset+T.size*i, val[i], T); | |
| } | |
| }; | |
| return r; | |
| }; | |
| types.delegate = function DelegateType(ret, args) { | |
| var p = types.ptr(types.void), r = Object.create(p); | |
| r.indirection = 1; | |
| r.name = Tname(ret)+'('+args.map(function(T) {return Tname(T);}).join(', ')+')'; | |
| r.get = function get(buf, offset) { | |
| buf = ref.get(buf, offset, p); | |
| if(buf.isNull()) | |
| return null; | |
| return ffi.ForeignFunction(buf, ret, args); | |
| }; | |
| r.set = function set(buf, offset, val) { | |
| return ref.set(buf, offset, ffi.Callback(ret, args, void(0), val)); | |
| }; | |
| return r; | |
| }; | |
| var defaults = { | |
| forEach: function forEach(callback, thisArg) { | |
| if({}.toString.call(callback) != '[object Function]') | |
| throw new TypeError(callback + ' is not a function'); | |
| for(var T = thisArg || T, iter = this.iterator(); iter; iter = iter.get_next()) | |
| callback.call(T, iter.get_data(), iter, this); | |
| } | |
| }; | |
| function bindings(s) { | |
| function method(name, ret, args, static, more) { | |
| var f = (more == 'variadic' ? ffi.VariadicForeignFunction : | |
| ffi.ForeignFunction)(lib.get(name), ret, args); | |
| if(static) | |
| return f; | |
| return function() { | |
| [].unshift.call(arguments, this); | |
| return f.apply(null, arguments); | |
| }; | |
| } | |
| function define(base, n, m) { | |
| var static = n[0] == '$' && ((n = n.slice(1)), true); | |
| static = static || base[0] == '$' && ((base = base.slice(1)), true); | |
| if(Array.isArray(m)) | |
| m = method(m[0], m[1], m[2], static, m[3]); | |
| static ? exports[base][n] = m : types[base].prototype[n] = m; | |
| } | |
| function makeGeneric(G, n) { | |
| var cache = [], cacheTo = []; | |
| types[n] = function() { | |
| var l = arguments.length, args = [], c; | |
| // Coerce all type arguments. | |
| for(var i = 0; i < l; i++) | |
| args[i] = ref.coerceType(arguments[i].$type || arguments[i]); | |
| // Look in the cache, if the generic was already built. | |
| for(var i = 0; i < cache.length; i++) { | |
| if((c = cache[i]).length !== l) | |
| continue; | |
| for(var j = 0; j < l && c[j] === args[j]; j++); | |
| if(j === l) | |
| return cacheTo[i]; | |
| } | |
| // Create the new generic. | |
| var generic = cacheTo[cache.push(args)-1] = Struct(), g = G.apply(null, args); | |
| generic.$name = n+'<'+args.map(function(T) {return Tname(T);}).join(', ')+'>'; | |
| // Define all the generic's propoerties. | |
| for(var i in g[0]) | |
| generic.defineProperty(i, g[0][i]); | |
| // Insert all the generic's methods. | |
| if(g[1]) | |
| for(var i in g[1]) { | |
| var m = g[1][i]; | |
| if(Array.isArray(m)) | |
| m = method(m[0], m[1], m[2], false, m[3]); | |
| generic.prototype[i] = m; | |
| } | |
| return generic; | |
| }; | |
| } | |
| for(var i in s) { | |
| if(s[i].length) | |
| makeGeneric(s[i], i); | |
| else if(i[0] == '$') | |
| exports[i.slice(1)] = {}; | |
| else | |
| exports[i] = types[i] = Struct(), types[i].$name = i; | |
| } | |
| for(var i in s) { | |
| if(s[i].length) { | |
| // TODO insert constructor | |
| delete s[i]; | |
| continue; | |
| } | |
| s[i] = s[i](); | |
| if(Array.isArray(s[i])) { | |
| for(var j in s[i][0]) | |
| types[i].defineProperty(j, s[i][0][j]); | |
| s[i] = s[i][1]; | |
| } | |
| } | |
| for(var i in s) { | |
| if('$constructor' in s[i]) { | |
| var ctor = s[i].$constructor; | |
| exports[i] = method(ctor[0], ctor[1], ctor[2], true, ctor[3]), exports[i].$type = types[i]; | |
| delete s[i].$constructor; | |
| } | |
| for(var j in s[i]) | |
| define(i, j, s[i][j]); | |
| } | |
| } | |
| var _ = types; | |
| bindings({ | |
| /* SignalSource: function() {return [{}, { | |
| delete: ['g_source_unref', _.void, [_.ref(_.SignalSource)]], | |
| $constructor: ['g_unix_signal_source_new', _.ref(_.SignalSource), [_.int]] | |
| }];},*/ | |
| Tox: function() {return [{}, { | |
| delete: ['tox_kill', _.void, [_.ref(_.Tox)]], | |
| $constructor: ['tox_new', _.ref(_.Tox), [_.uint8]], | |
| get_address: ['tox_get_address', _.void, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| add_friend: ['tox_add_friend', _.int, [_.ref(_.Tox), _.ptr(_.uint8), _.ptr(_.uint8)]], | |
| add_friend_norequest: ['tox_add_friend_norequest', _.int32, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| tox_get_friend_number: ['tox_get_friend_number', _.int32, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| get_client_id: ['tox_get_client_id', _.int, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)]], | |
| del_friend: ['tox_del_friend', _.int, [_.ref(_.Tox), _.int32]], | |
| get_friend_connection_status: ['tox_get_friend_connection_status', _.int, [_.ref(_.Tox), _.int32]], | |
| friend_exists: ['tox_friend_exists', _.int, [_.ref(_.Tox), _.int32]], | |
| send_message: ['tox_send_message', _.uint32, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)]], | |
| send_message_withid: ['tox_send_message_withid', _.uint32, [_.ref(_.Tox), _.int32, _.uint32, _.ptr(_.uint8)]], | |
| send_action: ['tox_send_action', _.uint32, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)]], | |
| send_action_withid: ['tox_send_action_withid', _.uint32, [_.ref(_.Tox), _.int32, _.uint32, _.ptr(_.uint8)]], | |
| set_name: ['tox_set_name', _.int, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| get_self_name: ['tox_get_self_name', _.uint16, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| get_name: ['tox_get_name', _.int, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)]], | |
| get_name_size: ['tox_get_name_size', _.int, [_.ref(_.Tox), _.int32]], | |
| get_self_name_size: ['tox_get_self_name_size', _.int, [_.ref(_.Tox)]], | |
| set_status_message: ['tox_set_status_message', _.int, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| set_user_status: ['tox_set_user_status', _.int, [_.ref(_.Tox), _.int]], | |
| get_status_message_size: ['tox_get_status_message_size', _.int, [_.ref(_.Tox), _.int32]], | |
| get_self_status_message_size: ['tox_get_self_status_message_size', _.int, [_.ref(_.Tox)]], | |
| get_status_message: ['tox_get_status_message', _.int, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)]], | |
| get_self_status_message: ['tox_get_self_status_message', _.int, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| get_user_status: ['tox_get_user_status', _.int, [_.ref(_.Tox), _.int32]], | |
| get_self_user_status: ['tox_get_self_user_status', _.int, [_.ref(_.Tox)]], | |
| get_last_online: ['tox_get_last_online', _.uint64, [_.ref(_.Tox), _.int32]], | |
| set_user_is_typing: ['tox_set_user_is_typing', _.int, [_.ref(_.Tox), _.int32, _.uint8]], | |
| get_is_typing: ['tox_get_is_typing', _.int, [_.ref(_.Tox), _.int32]], | |
| set_send_receipts: ['tox_set_sends_receipts', _.void, [_.ref(_.Tox), _.int32, _.int]], | |
| count_friendlist: ['tox_count_friendlist', _.uint32, [_.ref(_.Tox)]], | |
| get_num_online_friends: ['tox_get_num_online_friends', _.uint32, [_.ref(_.Tox)]], | |
| get_friendlist: ['tox_get_friendlist', _.uint32, [_.ref(_.Tox), _.ptr(_.int)]], | |
| callback_friend_request: ['tox_callback_friend_request', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.ptr(_.uint8), _.ptr(_.uint8)])]], | |
| callback_friend_message: ['tox_callback_friend_message', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int, _.ptr(_.uint8)])]], | |
| callback_friend_action: ['tox_callback_friend_action', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)])]], | |
| callback_name_change: ['tox_callback_name_change', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)])]], | |
| callback_status_message: ['tox_callback_status_message', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)])]], | |
| callback_user_status: ['tox_callback_user_status', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.uint8])]], | |
| callback_typing_change: ['tox_callback_typing_change', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.int])]], | |
| callback_read_receipt: ['tox_callback_read_receipt', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.uint32])]], | |
| callback_connection_status: ['tox_callback_connection_status', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.uint8])]], | |
| callback_group_invite: ['tox_callback_group_invite', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)])]], | |
| callback_group_message: ['tox_callback_group_message', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int, _.int, _.ptr(_.uint8)])]], | |
| callback_group_action: ['tox_callback_group_action', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int, _.int, _.ptr(_.uint8)])]], | |
| callback_group_namelist_change: ['tox_callback_group_namelist_change', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int, _.int, _.int])]], | |
| add_groupchat: ['tox_add_groupchat', _.int, [_.ref(_.Tox)]], | |
| del_groupchat: ['tox_del_groupchat', _.int, [_.ref(_.Tox), _.int]], | |
| group_peername: ['tox_group_peername', _.int, [_.ref(_.Tox), _.int, _.int, _.ptr(_.uint8)]], | |
| invite_friend: ['tox_invite_friend', _.int, [_.ref(_.Tox), _.int32, _.int]], | |
| join_groupchat: ['tox_join_groupchat', _.int, [_.ref(_.Tox), _.int32, _.ptr(_.uint8)]], | |
| group_message_send: ['tox_group_message_send', _.int, [_.ref(_.Tox), _.int, _.ptr(_.uint8)]], | |
| group_action_send: ['tox_group_action_send', _.int, [_.ref(_.Tox), _.int, _.ptr(_.uint8)]], | |
| group_number_peers: ['tox_group_number_peers', _.int, [_.ref(_.Tox), _.int]], | |
| count_chatlist: ['tox_count_chatlist', _.uint32, [_.ref(_.Tox)]], | |
| get_chatlist: ['tox_get_chatlist', _.uint32, [_.ref(_.Tox), _.ptr(_.int)]], | |
| callback_file_send_request: ['tox_callback_file_send_request', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.uint8, _.uint64, _.ptr(_.uint8)])]], | |
| callback_file_control: ['tox_callback_file_control', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.uint8, _.uint8, _.uint8, _.ptr(_.uint8)])]], | |
| callback_file_data: ['tox_callback_file_data', _.void, [_.ref(_.Tox), _.delegate(_.void, [_.ref(_.Tox), _.int32, _.uint8, _.ptr(_.uint8)])]], | |
| new_file_sender: ['tox_new_file_sender', _.int, [_.ref(_.Tox), _.int32, _.uint64, _.ptr(_.uint8)]], | |
| file_send_control: ['tox_file_send_control', _.int, [_.ref(_.Tox), _.int32, _.uint8, _.uint8, _.uint8, _.ptr(_.uint8)]], | |
| file_send_data: ['tox_file_send_data', _.int, [_.ref(_.Tox), _.int32, _.uint8, _.ptr(_.uint8)]], | |
| file_data_size: ['tox_file_data_size', _.int, [_.ref(_.Tox), _.int32]], | |
| file_data_remaining: ['tox_file_data_remaining', _.uint64, [_.ref(_.Tox), _.int32, _.uint8, _.uint8]], | |
| bootstrap_from_address: ['tox_bootstrap_from_address', _.int, [_.ref(_.Tox), _.CString, _.uint8, _.uint16, _.ptr(_.uint8)]], | |
| isconnected: ['tox_isconnected', _.int, [_.ref(_.Tox)]], | |
| do: ['tox_do', _.void, [_.ref(_.Tox)]], | |
| wait_prepare: ['tox_wait_prepare', _.int, [_.ref(_.Tox), _.ptr(_.uint8), _.uint16]], | |
| wait_execute: ['tox_wait_execute', _.int, [_.ref(_.Tox), _.ptr(_.uint8), _.uint16]], | |
| wait_cleanup: ['tox_wait_cleanup', _.void, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| size: ['tox_size', _.uint32, [_.ref(_.Tox)]], | |
| save: ['tox_save', _.void, [_.ref(_.Tox), _.ptr(_.uint8)]], | |
| load: ['tox_load', _.int, [_.ref(_.Tox), _.ptr(_.uint8)]] | |
| }];} | |
| }); | |
| exports.CollectType = {}/*types.Enum*/; | |
| exports.CollectType.INVALID = 0; | |
| exports.CollectType.STRING = 1; | |
| exports.CollectType.STRDUP = 2; | |
| exports.CollectType.BOOLEAN = 3; | |
| exports.CollectType.TRISTATE = 4; | |
| exports.CollectType.OPTIONAL = 65536; | |
| exports.FriendAddError = {}/*types.Enum*/; | |
| exports.FriendAddError.TOOLONG = -1; | |
| exports.FriendAddError.NOMESSAGE = -2; | |
| exports.FriendAddError.OWNKEY = -3; | |
| exports.FriendAddError.ALREADYSENT = -4; | |
| exports.FriendAddError.UNKNOWN = -5; | |
| exports.FriendAddError.BADCHECKSUM = -6; | |
| exports.FriendAddError.SETNEWNOSPAM = -7; | |
| exports.FriendAddError.NOMEM = -8; | |
| exports.UserStatus = {}/*types.Enum*/; | |
| exports.UserStatus.NONE = 0; | |
| exports.UserStatus.AWAY = 1; | |
| exports.UserStatus.BUSY = 2; | |
| exports.UserStatus.INVALID = 3; | |
| exports.FileControlStatus = {}/*types.Enum*/; | |
| exports.FileControlStatus.ACCEPT = 0; | |
| exports.FileControlStatus.PAUSE = 1; | |
| exports.FileControlStatus.KILL = 2; | |
| exports.FileControlStatus.FINISHED = 3; | |
| exports.FileControlStatus.RESUME_BROKEN = 4; | |
| exports.ChatChange = {}/*types.Enum*/; | |
| exports.ChatChange.PEER_ADD = 0; | |
| exports.ChatChange.PEER_DEL = 1; | |
| exports.ChatChange.PEER_NAME = 2; | |
| var Tox = exports.Tox | |
| var tox = new Tox(0) | |
| console.log(tox, tox.size()) // <- point of failure |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment