1

我正在尝试将 ac 结构映射到 Java 类。到目前为止一切正常,但我不知道如何映射具有另一个结构作为成员的结构。

在 Struct 类 javadoc 中有一个包含指向同一结构的指针的结构示例(使用类 Reference32),但这不是我需要的。

我找不到有关如何实现此目的的更多文档。

这是一个简化的例子:

// c types --------------------------------

enum Enum16{VALUE1, VALUE2, VALUE3};

struct t_composite {
   int number;
   char text[20];
   };

struct t_demo {
   char _char2[2];        
   char _char14[14];      
   int _int;
   float _float;
   double _double;
   enum Enum16 enum16;
   struct t_composite _otherStruct;
   };

// Java class -------------------------

public class Composite extends Struct {

public final Signed32 number = new Signed32();
public final UTF8String text = new UTF8String(20);
// ...
}

public class Demo extends Struct {

public enum EnumValues {
    VALUE1, VALUE2, VALUE3
};

public final UTF8String _char2 = new UTF8String(2);
public final UTF8String _char15 = new UTF8String(14);
public final Signed32 _int = new Signed32();
public final Float32 _float = new Float32();
public final Float64 _double = new Float64();
public final Enum32<EnumValues> _enum32 = new Enum32<EnumValues>(EnumValues.values());
//  public final Reference32<Composite> _otherStruct = new Reference32<Composite>();  // incorrect
public final Composite _otherStruct = new Composite(); // doesn't work

// ....
}

变量“_otherStruct”永远不会在 Java 中填充。我尝试将 java 变量定义为 Composite 类而不是 Reference32,但它没有成功。

这样做的正确方法是什么?

先感谢您

更新

正如主要开发人员 Jean-Marie Dautelle 向我指出的那样,这是通过使用内部方法完全支持的:

public final Composite _otherStruct = inner(new Composite());

这完美地工作

4

0 回答 0