Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/typedObjects.js

Issue 5728072976302080: Issue 151 - [Typed objects] Implement dynamically-sized array types (Closed)
Patch Set: Use Uint8Array as constructor, not a function Created May 19, 2014, 7:57 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | lib/typedObjects/arrayTypes.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 * 44 *
45 * The optional second parameter sets type metadata: 45 * The optional second parameter sets type metadata:
46 * 46 *
47 * constructor: function that will be called whenever an object of the type 47 * constructor: function that will be called whenever an object of the type
48 * is created. Parameters supplied during object creation will be passed 48 * is created. Parameters supplied during object creation will be passed
49 * to the constructor. 49 * to the constructor.
50 * destructor: function that will be called when an object of the type is 50 * destructor: function that will be called when an object of the type is
51 * freed. 51 * freed.
52 * bufferSize: number of objects that should be placed into a single typed 52 * bufferSize: number of objects that should be placed into a single typed
53 * buffer (by default 128). 53 * buffer (by default 128).
54 * watch: a map assigning watcher functions to properties. These functions
55 * are called with the new property value before the property is set.
56 * They have to return the value that should actually be set for the
57 * property, it doesn't necessarily have to be the original value.
54 * 58 *
55 * Creating and releasing an object instance 59 * Creating and releasing an object instance
56 * ----------------------------------------- 60 * -----------------------------------------
57 * 61 *
58 * var point = Point2D(5, 10); 62 * var point = Point2D(5, 10);
59 * point.rotate(10); 63 * point.rotate(10);
60 * console.log(point.x + ", " + point.y); 64 * console.log(point.x + ", " + point.y);
61 * 65 *
62 * The parameters 5 and 10 will be passed to the constructor function defined 66 * The parameters 5 and 10 will be passed to the constructor function defined
63 * for this type. 67 * for this type.
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 * All objects inherit from ObjectBase type implicitly and share its methods. 106 * All objects inherit from ObjectBase type implicitly and share its methods.
103 * In particular, object.equals() can be used to compare objects: 107 * In particular, object.equals() can be used to compare objects:
104 * 108 *
105 * var point1 = Point2D(5, 10); 109 * var point1 = Point2D(5, 10);
106 * var point2 = Point2D(6, 12); 110 * var point2 = Point2D(6, 12);
107 * console.log(point1.equals(point2)); // false 111 * console.log(point1.equals(point2)); // false
108 * console.log(point1.equals(point1)); // true 112 * console.log(point1.equals(point1)); // true
109 * 113 *
110 * Note that JavaScript comparison operators == and != won't always produce 114 * Note that JavaScript comparison operators == and != won't always produce
111 * correct results for typed objects. 115 * correct results for typed objects.
116 *
117 * Array types
118 * -----------
119 *
120 * An array type can be created with any other type as element type:
121 *
122 * var uint8Array = uint8.Array();
123 * var array = uint8Array();
124 * array.length = 2;
125 * array.set(0, 5);
126 * array.set(1, 8);
127 *
128 * var Blob = ObjectType({
129 * name: uint8Array,
130 * data: uint8Array
131 * });
132 * var blob = Blob();
133 * blob.data = array;
134 * array.release();
135 *
136 * Array() function takes the same parameters as ObjectType(), meaning that an
137 * array can have a constructor, destructor and custom properties or methods.
138 * This also means that there can be multiple array types for each element type,
139 * each Array() call will generate a new type that won't be compatible with
140 * the other types. The metadata parameter for arrays can have the additional
141 * arrayBufferSize property determining the number of array elements stored in
142 * a single buffer (not the same as bufferSize property which applies to buffers
143 * containing array metadata and custom array properties and determines the
144 * number of arrays stored in these buffers).
145 *
146 * An array is an object meaning that it has the properties common for all
147 * objects, in particular retain() and release() determining when the array is
148 * garbage collected. In addition, it has the following properties and methods:
149 *
150 * get(index): retrieves the array element at specified index.
151 * set(index, value): sets the array element at specified index.
152 * length: number of elements in the array, by default 0. Increase the length
153 * to match your data size.
154 * size: size of the allocated buffer in array elements, will be at least
155 * equal to length. Normally you won't need to set the size explicitly.
156 * However, the size won't decrease automatically if the array gets
157 * smaller so you might want to set it in order to shrink the array.
112 */ 158 */
113 159
114 function forwardExports(module) 160 function forwardExports(module)
115 { 161 {
116 let moduleExports = require(module); 162 let moduleExports = require(module);
117 for (let key in moduleExports) 163 for (let key in moduleExports)
118 exports[key] = moduleExports[key]; 164 exports[key] = moduleExports[key];
119 } 165 }
120 166
121 forwardExports("typedObjects/primitiveTypes"); 167 forwardExports("typedObjects/primitiveTypes");
122 forwardExports("typedObjects/objectTypes"); 168 forwardExports("typedObjects/objectTypes");
OLDNEW
« no previous file with comments | « no previous file | lib/typedObjects/arrayTypes.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld