rizin/librz/bin/format/java/class_field.h
Giovanni 7cfddb1da8
Java rewrite with LGPL license (#804)
* Rewritten RzBin java plugin (LGPL3)
* Rewritten java_core.c (LGPL3)
* Rewritten java RzAsm plugin (LGPL3)
* Rewritten java RzAnalysis plugin (LGPL3)
* Resolve constant_pool.<index> when rzbin is available.
* Updated tests with proper ones
* Support java <1.0.2 (i.e. OAK) file format
* Added constant pool resolver `javar`
* Added tests from java 1.7 to 15
2021-03-19 22:00:19 +08:00

37 lines
1.1 KiB
C

// SPDX-FileCopyrightText: 2021 deroad <wargio@libero.it>
// SPDX-License-Identifier: LGPL-3.0-only
#ifndef RZ_BIN_JAVA_CLASS_FIELD_H
#define RZ_BIN_JAVA_CLASS_FIELD_H
#include <rz_types.h>
#include <rz_util.h>
#include <rz_bin.h>
#include "class_attribute.h"
typedef enum {
FIELD_ACCESS_FLAG_PUBLIC /* */ = 0x0001,
FIELD_ACCESS_FLAG_PRIVATE /* */ = 0x0002,
FIELD_ACCESS_FLAG_PROTECTED /**/ = 0x0004,
FIELD_ACCESS_FLAG_STATIC /* */ = 0x0008,
FIELD_ACCESS_FLAG_FINAL /* */ = 0x0010,
FIELD_ACCESS_FLAG_VOLATILE /* */ = 0x0040,
FIELD_ACCESS_FLAG_TRANSIENT /**/ = 0x0080,
FIELD_ACCESS_FLAG_SYNTHETIC /**/ = 0x1000,
FIELD_ACCESS_FLAG_ENUM /* */ = 0x4000
} FieldAccessFlag;
typedef struct java_field_t {
ut64 offset;
ut16 access_flags;
ut16 name_index;
ut16 descriptor_index;
ut16 attributes_count;
Attribute **attributes;
} Field;
Field *java_field_new(ConstPool **pool, ut32 poolsize, RzBuffer *buf, ut64 offset);
void java_field_free(Field *field);
char *java_field_access_flags_readable(const Field *field);
bool java_field_is_global(const Field *field);
#endif /* RZ_BIN_JAVA_CLASS_FIELD_H */