Разбор структуры c к интерфейсу Java
Существуют ли какие-либо инструменты, которые я могу использовать для автоматического разбора структуры c на интерфейс Java? пример будет:
typedef struct C {
int x;
byte y;
}C;
//Java
interface C {
public int x();
public byte y();
public void x(int val);
public void y(byte val);
}
2 ответа
Да, попробуйте заменить регулярное выражение. В Java, например:
String javaCode = cCode.replaceAll("(\\w+) +(\\w+);", "public void $1 $2();\n public $1 x($1 $2);");
Демо здесь: http://regexr.com/?388h8
Теперь, чтобы изменить синтаксис самого определения структуры, требуются минимальные усилия.
Javolution - это библиотека, которая обеспечивает такую функциональность простым способом, пример взят из документации:
public enum Gender { MALE, FEMALE };
public static class Date extends Struct {
public final Unsigned16 year = new Unsigned16();
public final Unsigned8 month = new Unsigned8();
public final Unsigned8 day = new Unsigned8();
}
public static class Student extends Struct {
public final Enum32<Gender> gender = new Enum32<Gender>(Gender.values());
public final UTF8String name = new UTF8String(64);
public final Date birth = inner(new Date());
public final Float32[] grades = array(new Float32[10]);
public final Reference32<Student> next = new Reference32<Student>();
}