struct gen_class * jvm_create_class(const char * dir, char * full_name); void jvm_destroy_class(struct gen_class * class); gen_proc_t * jvm_create_proc(struct gen_class * class); void jvm_generate_function_header(gen_proc_t * p, char * access, char * name, char * signature); void jvm_generate_function_end(gen_proc_t * p); int jvm_new_label_id(gen_proc_t * p); void jvm_generate_label(gen_proc_t * p, int label_id); void jvm_stack_push(gen_proc_t * p, unsigned size); void jvm_stack_pop(gen_proc_t * p, unsigned size); void jvm_generate(gen_proc_t * p, unsigned get, unsigned push, char * format, ...); void jvm_generate_comment(gen_proc_t * p, char * format, ...); void jvm_generate_push_int(gen_proc_t * p, int64_t i); void jvm_generate_push_int_size(gen_proc_t * p, int64_t i, int size); void jvm_generate_push_float(gen_proc_t * p, double f, int size); void jvm_generate_push_string(gen_proc_t * p, char * str, int char_size);