nv-facutil-slct-ta 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +31 -1
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1,3 +1,14 @@
1
+ function check_sz_and_algn(sz,algnsz) {
2
+ if(sz<algnsz) {
3
+ return [false,`size(${sz}) MUST >= algnsz(${algnsz})`]
4
+ } else if(sz % algnsz !== 0) {
5
+ return [false,`size(${sz}) % algnsz(${algnsz}) = ${sz % algnsz} MUST == 0`]
6
+ } else {
7
+ return [true,null]
8
+ }
9
+ }
10
+
11
+
1
12
  function calc_algn_si(si,algnsz) {
2
13
  var r = si % algnsz;
3
14
  if(r === 0) {
@@ -177,8 +188,25 @@ function creat_debug_view(o) {
177
188
  return view;
178
189
  }
179
190
 
191
+ const is_ablike = (ab)=>toString.call(ab) === '[object ArrayBuffer]' || toString.call(ab) === '[object sharedArrayBuffer]';
192
+ const creat_on_ab =(Cls,requested_cnt,ab,offset=0)=>{
193
+ var algnsz = Cls.BYTES_PER_ELEMENT;
194
+ if(offset % algnsz === 0 ) {
195
+ var capacity = ab.byteLength - offset;
196
+ var requested_bytsz = algnsz * requested_cnt;
197
+ if(capacity >= requested_bytsz) {
198
+ var tar = new Cls(ab,offset,requested_cnt)
199
+ return [true,ta]
200
+ } else {
201
+ return [false,`ab.byteLength(${ab.byteLength}) - offset(${offset}) MUST >= requested_bytsz(${requested_bytsz})`]
202
+ }
203
+ } else {
204
+ return [false,`offset(${offset}) % algnsz(${algnsz}) MUST === 0`]
205
+ }
206
+ }
180
207
 
181
208
  module.exports = {
209
+ check_sz_and_algn,
182
210
  calc_algn_si,
183
211
  calc_max_incr_cnt,
184
212
  get_ta_cls_with_max_cnt,
@@ -196,5 +224,7 @@ module.exports = {
196
224
  setv,
197
225
  is_readonly,
198
226
  ////
199
- creat_debug_view
227
+ creat_debug_view,
228
+ is_ablike,
229
+ creat_on_ab
200
230
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nv-facutil-slct-ta",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"