| OLD | NEW |
| 1 /* | 1 /* |
| 2 * This file is part of Adblock Plus <http://adblockplus.org/>, | 2 * This file is part of Adblock Plus <http://adblockplus.org/>, |
| 3 * Copyright (C) 2006-2014 Eyeo GmbH | 3 * Copyright (C) 2006-2014 Eyeo GmbH |
| 4 * | 4 * |
| 5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
| 6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
| 7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
| 8 * | 8 * |
| 9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 } | 84 } |
| 85 result.push(views[index]); | 85 result.push(views[index]); |
| 86 } | 86 } |
| 87 return result; | 87 return result; |
| 88 }; | 88 }; |
| 89 | 89 |
| 90 /** | 90 /** |
| 91 * Defines properties with given name and type on an object. | 91 * Defines properties with given name and type on an object. |
| 92 * | 92 * |
| 93 * @param obj object to define properties on | 93 * @param obj object to define properties on |
| 94 * @param propList array of properties where each property is represented by | 94 * @param properties object mapping property names to their respective types |
| 95 * [name, type] | |
| 96 * @param viewTypes see getViewsForType() | 95 * @param viewTypes see getViewsForType() |
| 97 * @param views see getViewsForType() | 96 * @param views see getViewsForType() |
| 98 * @param [offset] byte array offset at which the properties should start | 97 * @param [offset] byte array offset at which the properties should start |
| 99 * @return new start offset for additional properties | 98 * @return new start offset for additional properties |
| 100 */ | 99 */ |
| 101 exports.defineProperties = function defineProperties(obj, propList, viewTypes, v
iews, offset) | 100 exports.defineProperties = function defineProperties(obj, properties, viewTypes,
views, offset) |
| 102 { | 101 { |
| 103 offset = offset | 0; | 102 offset = offset | 0; |
| 104 | 103 |
| 104 let propList = []; |
| 105 for (let name in properties) |
| 106 propList.push([name, properties[name]]); |
| 107 |
| 105 // Put larger properties first to make sure alignment requirements are met. | 108 // Put larger properties first to make sure alignment requirements are met. |
| 106 propList.sort(function(a, b) | 109 propList.sort(function(a, b) |
| 107 { | 110 { |
| 108 return b[1].referenceLength - a[1].referenceLength; | 111 return b[1].referenceLength - a[1].referenceLength; |
| 109 }); | 112 }); |
| 110 | 113 |
| 111 // Generates getters and setters for each property. | 114 // Generates getters and setters for each property. |
| 112 let descriptors = {}; | 115 let descriptors = {}; |
| 113 for (let i = 0, l = propList.length | 0; i < l; i++) | 116 for (let i = 0, l = propList.length | 0; i < l; i++) |
| 114 { | 117 { |
| 115 let [name, type] = propList[i]; | 118 let [name, type] = propList[i]; |
| 116 | 119 |
| 117 let viewParams = getViewsForType(type, viewTypes, views); | 120 let viewParams = getViewsForType(type, viewTypes, views); |
| 118 descriptors[name] = { | 121 descriptors[name] = { |
| 119 get: type.createGetter.apply(type, [offset].concat(viewParams)), | 122 get: type.createGetter.apply(type, [offset].concat(viewParams)), |
| 120 set: type.createSetter.apply(type, [offset].concat(viewParams)), | 123 set: type.createSetter.apply(type, [offset].concat(viewParams)), |
| 121 configurable: false, | 124 configurable: false, |
| 122 enumerable: true | 125 enumerable: true |
| 123 }; | 126 }; |
| 124 offset += type.referenceLength; | 127 offset += type.referenceLength; |
| 125 } | 128 } |
| 126 | 129 |
| 127 // Define properties | 130 // Define properties |
| 128 Object.defineProperties(obj, descriptors); | 131 Object.defineProperties(obj, descriptors); |
| 129 | 132 |
| 130 return offset; | 133 return offset; |
| 131 }; | 134 }; |
| OLD | NEW |