export { Base };

//import * as ParamDesc from "../Unpacker/ParamDesc.js";
import * as ValueDesc from "../Unpacker/ValueDesc.js";
import * as ValueRange from "../Unpacker/ValueRange.js";
import * as PointDepthPoint from "../Conv/PointDepthPoint.js";
import * as PointDepthPoint_Reference from "./PointDepthPoint_Reference.js";

class Base {

  constructor() {
  }

  /**
   *
   *
   *
   *
   * @yield {object}
   *   Yield an object. The object's data members represent every parameters of the PointDepthPoint.Params's constructor. That is, it has
   * the following data members: inputFloat32Array, byteOffsetBegin, pointwise1ChannelCount, bPointwise1Bias, pointwise1ActivationId,
   * depthwise_AvgMax_Or_ChannelMultiplier, depthwiseFilterHeight, depthwiseStridesPad, bDepthwiseBias, depthwiseActivationId,
   * pointwise21ChannelCount, bPointwise21Bias, pointwise21ActivationId, pointwise22ChannelCount, bPointwise22Bias, pointwise22ActivationId,
   * inputTensorCount.
   *
   */
  static *ParamsGenerator() {

//!!! ...unfinished... (2021/05/24)
//     paramsInArray, paramsOutArray,
//     pointwise1FiltersArray, pointwise1BiasesArray,
//     depthwiseFiltersArray, depthwiseBiasesArray,
//     pointwise21FiltersArray, pointwise21BiasesArray,
//     pointwise22FiltersArray, pointwise22BiasesArray,

    let result = {};

//!!! ...unfinished... (2021/05/24)
    for ( let pointwise1ChannelCount of PointDepthPoint.Params.pointwise1ChannelCount.range.valueInputOutputPairGenerator() ) {

      result.pointwise1ChannelCount = null;

      pointwise1ChannelCount.valueInput;
      pointwise1ChannelCount.valueOutput;

      result.pointwise1ChannelCount = pointwise1ChannelCount.valueInput;
    }

    PointDepthPoint.Params.bPointwise1Bias.range;
    PointDepthPoint.Params.pointwise1ActivationId.range;
    PointDepthPoint.Params.depthwise_AvgMax_Or_ChannelMultiplier.range;
    PointDepthPoint.Params.depthwiseFilterHeight.range;
    PointDepthPoint.Params.depthwiseStridesPad.range;
    PointDepthPoint.Params.bDepthwiseBias.range;
    PointDepthPoint.Params.depthwiseActivationId.range;
    PointDepthPoint.Params.pointwise21ChannelCount.range;
    PointDepthPoint.Params.bPointwise21Bias.range;
    PointDepthPoint.Params.pointwise21ActivationId.range;
    PointDepthPoint.Params.pointwise22ChannelCount.range;
    PointDepthPoint.Params.bPointwise22Bias.range;
    PointDepthPoint.Params.pointwise22ActivationId.range;
    PointDepthPoint.Params.inputTensorCount.range;

//!!! ...unfinished... (2021/05/24)

  }

}

@@ -431,14 +431,61 @@
 ject
-. The 
+ %7B in, out %7D which has two sub-objects. The %22in%22 sub-
 obje
@@ -535,16 +535,21 @@
 s of the
+%0A   *
  PointDe
@@ -594,21 +594,16 @@
 , it has
-%0A   *
  the fol
@@ -658,16 +658,21 @@
 etBegin,
+%0A   *
  pointwi
@@ -728,21 +728,16 @@
 ationId,
-%0A   *
  depthwi
@@ -790,16 +790,21 @@
 rHeight,
+%0A   *
  depthwi
@@ -855,21 +855,16 @@
 ationId,
-%0A   *
  pointwi
@@ -915,32 +915,37 @@
 e21ActivationId,
+%0A   *
  pointwise22Chan
@@ -996,21 +996,16 @@
 ationId,
-%0A   *
  inputTe
@@ -1014,16 +1014,216 @@
 orCount.
+ The %22out%22 sub-object's data members represent%0A   * the %22should-be%22 result of PointDepthPoint.Params's extract(). That is, it has the above data members except inputFloat32Array,%0A   * byteOffsetBegin.
 %0A   *%0A  
@@ -1562,18 +1562,63 @@
 let 
-result = %7B
+paramsInArray = %5B%5D;%0A    let result = %7B in: %7B%7D, out: %7B%7D 
 %7D;%0A%0A
@@ -1765,12 +1765,8 @@
 tput
-Pair
 Gene
@@ -1783,32 +1783,36 @@
 %7B%0A%0A      result.
+out.
 pointwise1Channe
@@ -1821,23 +1821,74 @@
 ount
- = null;%0A%0A     
+( pointwise1ChannelCount.valueOutput );%0A%0A      paramsInArray.push(
  poi
@@ -1921,16 +1921,18 @@
 nput
+ )
 ;%0A      
 poin
@@ -1923,24 +1923,34 @@
 ut );%0A      
+result.in.
 pointwise1Ch
@@ -1963,22 +1963,45 @@
 ount
-.valueOutput;%0A
+ = null;%0A%0A%0A      paramsInArray.pop();
 %0A   
@@ -2010,16 +2010,19 @@
  result.
+in.
 pointwis

Update PointDepthPoint_ParamsGenerator.js