Fields/Methods

Fields/Methods — Functions for fields and methods.

Synopsis


#include <jclass/field.h>


enum        JCVisibility;
typedef     Field;
int         jclass_field_is_visible         (Field *field,
                                             ConstantPool *cpool,
                                             JCVisibility visibility);
char*       jclass_field_get_name           (Field *field,
                                             ConstantPool *cpool);
char*       jclass_field_get_descriptor     (Field *field,
                                             ConstantPool *cpool);
CodeAttribute* jclass_field_get_code_attribute
                                            (Field *field,
                                             ConstantPool *cpool);

Description

libjclass treats fields and methods in the same way. This is because they are very similar in their representation.

Details

enum JCVisibility

typedef enum {
	V_PUBLIC,
	V_PACKAGE,
	V_PROTECTED,
	V_PRIVATE,
	V_SYNTHETIC
} JCVisibility;

Visibility

V_PUBLICPublic .
V_PACKAGEPackage.
V_PROTECTEDProtected.
V_PRIVATEPrivate.
V_SYNTHETICSynthetic.

Field

typedef struct {
	/* A 16-bit integer with the access flags for this field/method */
	uint16_t access_flags;
	/* The index in the constant pool for the UTF8Entry 
	with the name of this field */
	uint16_t name_index;
	/* The index in the constant pool for the UTF8Entry 
	with the descriptor for this field */
	uint16_t descriptor_index;
	/* The number of attributes for this field */
	uint16_t attributes_count;
	/* The attributes for this field */
	AttributeContainer* attributes;
} Field;

Information for a field or method.


jclass_field_is_visible ()

int         jclass_field_is_visible         (Field *field,
                                             ConstantPool *cpool,
                                             JCVisibility visibility);

Checks whether the field given is visible with the visibility given.

field :The field to check.
cpool :The constant pool of the class.
visibility :The visibility to check.
Returns :1 if the field is visible, 0 otherwise.

jclass_field_get_name ()

char*       jclass_field_get_name           (Field *field,
                                             ConstantPool *cpool);

Gives the name of a field/method.

field :The field/method to get its name.
cpool :The costant pool of the class.
Returns :A newly constructed string with the name.

jclass_field_get_descriptor ()

char*       jclass_field_get_descriptor     (Field *field,
                                             ConstantPool *cpool);

Gives the descriptor of a field/method. The descriptor is a string with a special format that describes the type and parameters for a field/method. You can get those as strings with the jclass_descriptor_get_type() and jclass_descriptor_get_parameters() functions.

field :The field/method to get its descriptor.
cpool :The constant pool of the class.
Returns :A newly constructed string with the descriptor.

jclass_field_get_code_attribute ()

CodeAttribute* jclass_field_get_code_attribute
                                            (Field *field,
                                             ConstantPool *cpool);

Returns the code attribute for a method. If the Field is a field or a method without code it returns NULL.

field :The field to get its code attribute.
cpool :The constant pool of the class.
Returns :A newly constructed CodeAttribute struct.