1 /*
  2  * Copyright (c) 2024, Oracle and/or its affiliates. All rights reserved.
  3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  4  *
  5  * This code is free software; you can redistribute it and/or modify it
  6  * under the terms of the GNU General Public License version 2 only, as
  7  * published by the Free Software Foundation.  Oracle designates this
  8  * particular file as subject to the "Classpath" exception as provided
  9  * by Oracle in the LICENSE file that accompanied this code.
 10  *
 11  * This code is distributed in the hope that it will be useful, but WITHOUT
 12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 14  * version 2 for more details (a copy is included in the LICENSE file that
 15  * accompanied this code).
 16  *
 17  * You should have received a copy of the GNU General Public License version
 18  * 2 along with this work; if not, write to the Free Software Foundation,
 19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 20  *
 21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 22  * or visit www.oracle.com if you need additional information or have any
 23  * questions.
 24  */
 25 
 26 #include "schema.h"
 27 
 28 int main(int argc, char **argv) {
 29     const char *rgbToGrey = R"(3
 30        (!:32#KernelContext:{
 31           x:s32,
 32           maxX:s32
 33        }),
 34        (?:16+RgbS08x3Image:{
 35            width:s32,height:s32,elementsPerPixel:s32,bufferedImageType:s32,data:[*:?:s8]}),
 36        (?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]})
 37     )";
 38     const char *gradientRow =
 39             "4(!:32#KernelContext:{x:s32,maxX:s32}),(?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]}),(?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]}),(?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]})";
 40     const char *gradientCol =
 41             "3(!:32#KernelContext:{x:s32,maxX:s32}),(?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]}),(?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]})";
 42     const char *squares = "2(!:32#KernelContext:{x:s32,maxX:s32}),(?:4+S32Array:{length:s32,array:[*:?:s32]})";
 43     const char *suaresadd =
 44             "3(!:32#KernelContext:{x:s32,maxX:s32}),(?:4+S32Array:{length:s32,array:[*:?:s32]}),(?:s32)";
 45     const char *cascadeSchema = R"(6
 46         (!:32#KernelContext:{x:s32,maxX:s32}),
 47         (!:163472#Cascade:{
 48             width:s32,
 49             height:s32,
 50             featureCount:s32,
 51             feature:[2913:
 52                 Feature:{
 53                    id:s32,
 54                    threshold:f32,
 55                    left:{
 56                         hasValue:z8,
 57                         ?:x3,
 58                         anon:<
 59                              featureId:s32|
 60                              value:f32
 61                         >
 62                    },
 63                    right:{
 64                          hasValue:z8,
 65                          ?:x3,
 66                          anon:<
 67                               featureId:s32|
 68                               value:f32
 69                          >
 70                    },
 71                    rect:[3:
 72                        Rect:{
 73                            x:s8,
 74                            y:s8,
 75                            width:s8,
 76                            height:s8,
 77                            weight:f32
 78                        }
 79                    ]
 80                 }
 81             ],
 82             stageCount:s32,
 83             stage:[25:
 84                 Stage:{
 85                     id:s32,
 86                     threshold:f32,
 87                     firstTreeId:s16,
 88                     treeCount:s16
 89                 }
 90             ],
 91             treeCount:s32,
 92             tree:[2913:
 93                 Tree:{
 94                     id:s32,
 95                     firstFeatureId:s16,
 96                     featureCount:s16
 97                 }
 98             ]
 99         }
100         ),
101         (?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]}),
102         (?:8+F32Array2D:{width:s32,height:s32,array:[*:?:f32]}),
103         (?:8+ScaleTable:{length:s32,multiScaleAccumulativeRange:s32,scale:[*:Scale:{scaleValue:f32,scaledXInc:f32,scaledYInc:f32,invArea:f32,scaledFeatureWidth:s32,scaledFeatureHeight:s32,gridWidth:s32,gridHeight:s32,gridSize:s32,accumGridSizeMin:s32,accumGridSizeMax:s32}]}),
104         (?:8+ResultTable:{length:s32,atomicResultTableCount:s32,result:[*:Result:{x:f32,y:f32,width:f32,height:f32}]}))";
105     char *schema = (char *) suaresadd;
106     std::cout << "schema = '" << schema << "'" << std::endl;
107     SchemaCursor cursor(schema);
108     Schema::SchemaNode schemaNode;
109     schemaNode.parse(&cursor);
110 
111 
112     Schema::show(std::cout, &schemaNode);
113 }