1 /*
   2  * Copyright (c) 2018, 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.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 package com.acme;
  25  
  26 import java.foreign.annotations.NativeAddressof;
  27 import java.foreign.annotations.NativeGetter;
  28 import java.foreign.annotations.NativeHeader;
  29 import java.foreign.annotations.NativeLocation;
  30 import java.foreign.annotations.NativeSetter;
  31 import java.foreign.annotations.NativeStruct;
  32 import java.foreign.memory.Struct;
  33 
  34 @NativeHeader(path="pad.h")
  35 public interface pad_h {
  36     @NativeStruct(
  37             "[" +
  38                 "u8(c1)" +
  39                 "x56" +
  40                 "[" +
  41                     "i64(l)|" +
  42                     "[" +
  43                         "u8(x1)" +
  44                         "x56" +
  45                         "f64(y1)" +
  46                     "](anon$pad_h$1123)|" +
  47                     "${anon$pad_h$1195}(p2)" +
  48                 "](anon$pad_h$1086)" +
  49                 "f32(f1)" +
  50                 "x32" +
  51             "](PaddyStruct)")
  52     interface PaddyStruct extends Struct<PaddyStruct> {
  53         @NativeGetter("c1")
  54         public abstract byte c1$get();
  55         @NativeSetter("c1")
  56         public abstract void c1$set(byte c1);
  57         @NativeAddressof("c1")
  58         public abstract java.foreign.memory.Pointer<java.lang.Byte> c1$ptr();
  59         @NativeGetter("l")
  60         public abstract long l$get();
  61         @NativeSetter("l")
  62         public abstract void l$set(long l);
  63         @NativeAddressof("l")
  64         public abstract java.foreign.memory.Pointer<java.lang.Long> l$ptr();
  65         @NativeGetter("x1")
  66         public abstract byte x1$get();
  67         @NativeSetter("x1")
  68         public abstract void x1$set(byte x1);
  69         @NativeAddressof("x1")
  70         public abstract java.foreign.memory.Pointer<java.lang.Byte> x1$ptr();
  71         @NativeGetter("y1")
  72         public abstract double y1$get();
  73         @NativeSetter("y1")
  74         public abstract void y1$set(double y1);
  75         @NativeAddressof("y1")
  76         public abstract java.foreign.memory.Pointer<java.lang.Double> y1$ptr();
  77         @NativeGetter("p2")
  78         public abstract anon$pad_h$1195 p2$get();
  79         @NativeSetter("p2")
  80         public abstract void p2$set(anon$pad_h$1195 p2);
  81         @NativeAddressof("p2")
  82         public abstract java.foreign.memory.Pointer<anon$pad_h$1195> p2$ptr();
  83         @NativeGetter("f1")
  84         public abstract float f1$get();
  85         @NativeSetter("f1")
  86         public abstract void f1$set(float f1);
  87         @NativeAddressof("f1")
  88         public abstract java.foreign.memory.Pointer<java.lang.Float> f1$ptr();
  89     }
  90 
  91     @NativeStruct(
  92             "[" +
  93                 "f64(x2)" +
  94                 "f32(y2)" +
  95                 "u8(z2)" +
  96                 "x24" +
  97             "](anon$pad_h$1195)")
  98     interface anon$pad_h$1195 extends java.foreign.memory.Struct<anon$pad_h$1195> {
  99         @NativeGetter("x2")
 100         public abstract double x2$get();
 101         @NativeSetter("x2")
 102         public abstract void x2$set(double x2);
 103         @NativeAddressof("x2")
 104         public abstract java.foreign.memory.Pointer<java.lang.Double> x2$ptr();
 105         @NativeGetter("y2")
 106         public abstract float y2$get();
 107         @NativeSetter("y2")
 108         public abstract void y2$set(float y2);
 109         @NativeAddressof("y2")
 110         public abstract java.foreign.memory.Pointer<java.lang.Float> y2$ptr();
 111         @NativeGetter("z2")
 112         public abstract byte z2$get();
 113         @NativeSetter("z2")
 114         public abstract void z2$set(byte z2);
 115         @NativeAddressof("z2")
 116         public abstract java.foreign.memory.Pointer<java.lang.Byte> z2$ptr();
 117     }
 118 }