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 package experiments; 26 27 import hat.Accelerator; 28 import hat.backend.DebugBackend; 29 import hat.buffer.S32Array2D; 30 import hat.ifacemapper.BoundSchema; 31 import hat.buffer.Buffer; 32 33 import java.lang.foreign.GroupLayout; 34 import java.lang.foreign.MemoryLayout; 35 import java.lang.invoke.MethodHandles; 36 37 public class S32ArrayTest implements Buffer { 38 39 public static void main(String[] args) { 40 Accelerator accelerator = new Accelerator(MethodHandles.lookup(),new DebugBackend()); 41 42 hat.buffer.S32Array2D s32Array2D = S32Array2D.create(accelerator, 100, 200); 43 GroupLayout groupLayout = (GroupLayout) Buffer.getLayout(s32Array2D); 44 System.out.println("Layout from buffer "+groupLayout); 45 BoundSchema<?> boundSchema = Buffer.getBoundSchema(s32Array2D); 46 System.out.println("BoundSchema from buffer "+boundSchema); 47 48 BoundSchema.FieldLayout<?> fieldLayout = boundSchema.rootBoundSchemaNode().getName("array"); 49 long arrayOffset = fieldLayout.offset(); 50 MemoryLayout layout = fieldLayout.layout(); 51 52 if (fieldLayout instanceof BoundSchema.ArrayFieldLayout arrayFieldLayout){ 53 System.out.println("isArray"); 54 arrayFieldLayout.elementOffset(0); 55 arrayFieldLayout.elementLayout(0); 56 if (arrayFieldLayout instanceof BoundSchema.BoundArrayFieldLayout boundArrayFieldLayout){ 57 boundArrayFieldLayout.dimFields.forEach(dimLayout->{ 58 System.out.println(dimLayout.field.name + " "+dimLayout.offset()); 59 }); 60 } 61 } 62 S32Array2D.schema.toText(t->System.out.print(t)); 63 } 64 65 }