rizin/librz/bin/format/java/class_method.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

43 lines
1.4 KiB
C

// SPDX-FileCopyrightText: 2021 deroad <wargio@libero.it>
// SPDX-License-Identifier: LGPL-3.0-only
#ifndef RZ_BIN_JAVA_CLASS_METHOD_H
#define RZ_BIN_JAVA_CLASS_METHOD_H
#include <rz_types.h>
#include <rz_util.h>
#include <rz_bin.h>
#include "class_attribute.h"
typedef enum {
METHOD_ACCESS_FLAG_PUBLIC /* */ = 0x0001,
METHOD_ACCESS_FLAG_PRIVATE /* */ = 0x0002,
METHOD_ACCESS_FLAG_PROTECTED /* */ = 0x0004,
METHOD_ACCESS_FLAG_STATIC /* */ = 0x0008,
METHOD_ACCESS_FLAG_FINAL /* */ = 0x0010,
METHOD_ACCESS_FLAG_SYNCHRONIZED /**/ = 0x0020,
METHOD_ACCESS_FLAG_BRIDGE /* */ = 0x0040,
METHOD_ACCESS_FLAG_VARARGS /* */ = 0x0080,
METHOD_ACCESS_FLAG_NATIVE /* */ = 0x0100,
METHOD_ACCESS_FLAG_INTERFACE /* */ = 0x0200,
METHOD_ACCESS_FLAG_ABSTRACT /* */ = 0x0400,
METHOD_ACCESS_FLAG_STRICT /* */ = 0x0800,
METHOD_ACCESS_FLAG_SYNTHETIC /* */ = 0x1000,
METHOD_ACCESS_FLAG_ANNOTATION /* */ = 0x2000,
METHOD_ACCESS_FLAG_ENUM /* */ = 0x4000
} MethodAccessFlag;
typedef struct java_method_t {
ut64 offset;
ut16 access_flags;
ut16 name_index;
ut16 descriptor_index;
ut16 attributes_count;
Attribute **attributes;
} Method;
Method *java_method_new(ConstPool **pool, ut32 poolsize, RzBuffer *buf, ut64 offset, bool is_oak);
void java_method_free(Method *method);
char *java_method_access_flags_readable(const Method *method);
bool java_method_is_global(const Method *method);
#endif /* RZ_BIN_JAVA_CLASS_METHOD_H */