82858e8851a039376ee1b424b5f0d8a9fcd39ef8.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. System.register(["__unresolved_0", "cc", "__unresolved_1"], function (_export, _context) {
  2. "use strict";
  3. var _reporterNs, _cclegacy, ECSModel, ECSMask, _crd;
  4. function _reportPossibleCrUseOfECSModel(extras) {
  5. _reporterNs.report("ECSModel", "./ECSModel", _context.meta, extras);
  6. }
  7. _export("ECSMask", void 0);
  8. return {
  9. setters: [function (_unresolved_) {
  10. _reporterNs = _unresolved_;
  11. }, function (_cc) {
  12. _cclegacy = _cc.cclegacy;
  13. }, function (_unresolved_2) {
  14. ECSModel = _unresolved_2.ECSModel;
  15. }],
  16. execute: function () {
  17. _crd = true;
  18. _cclegacy._RF.push({}, "d18694PPbtGs5Ipgo/vaJBX", "ECSMask", undefined);
  19. /*
  20. * @Author: dgflash
  21. * @Date: 2022-05-12 14:18:44
  22. * @LastEditors: dgflash
  23. * @LastEditTime: 2022-05-24 11:09:49
  24. */
  25. _export("ECSMask", ECSMask = class ECSMask {
  26. constructor() {
  27. this.mask = void 0;
  28. this.size = 0;
  29. var length = Math.ceil((_crd && ECSModel === void 0 ? (_reportPossibleCrUseOfECSModel({
  30. error: Error()
  31. }), ECSModel) : ECSModel).compTid / 31);
  32. this.mask = new Uint32Array(length);
  33. this.size = length;
  34. }
  35. set(num) {
  36. // https://stackoverflow.com/questions/34896909/is-it-correct-to-set-bit-31-in-javascript
  37. // this.mask[((num / 32) >>> 0)] |= ((1 << (num % 32)) >>> 0);
  38. this.mask[num / 31 >>> 0] |= 1 << num % 31;
  39. }
  40. delete(num) {
  41. this.mask[num / 31 >>> 0] &= ~(1 << num % 31);
  42. }
  43. has(num) {
  44. return !!(this.mask[num / 31 >>> 0] & 1 << num % 31);
  45. }
  46. or(other) {
  47. for (var i = 0; i < this.size; i++) {
  48. // &操作符最大也只能对2^30进行操作,如果对2^31&2^31会得到负数。当然可以(2^31&2^31) >>> 0,这样多了一步右移操作。
  49. if (this.mask[i] & other.mask[i]) {
  50. return true;
  51. }
  52. }
  53. return false;
  54. }
  55. and(other) {
  56. for (var i = 0; i < this.size; i++) {
  57. if ((this.mask[i] & other.mask[i]) != this.mask[i]) {
  58. return false;
  59. }
  60. }
  61. return true;
  62. }
  63. clear() {
  64. for (var i = 0; i < this.size; i++) {
  65. this.mask[i] = 0;
  66. }
  67. }
  68. });
  69. _cclegacy._RF.pop();
  70. _crd = false;
  71. }
  72. };
  73. });
  74. //# sourceMappingURL=82858e8851a039376ee1b424b5f0d8a9fcd39ef8.js.map