/* src/vm/annotation.h - class annotations
- Copyright (C) 2006 R. Grafl, A. Krall, C. Kruegel, C. Oates,
- R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
- C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
- Institut f. Computersprachen - TU Wien
+ Copyright (C) 2006, 2007, 2008
+ CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
This file is part of CACAO.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Christian Thalinger
-
- $Id: utf8.h 5920 2006-11-05 21:23:09Z twisti $
-
*/
#ifndef _ANNOTATION_H
#define _ANNOTATION_H
-/* forward typedefs ***********************************************************/
-
-typedef struct annotation_t annotation_t;
-typedef struct element_value_t element_value_t;
#include "config.h"
+
#include "vm/types.h"
+#include "vm/class.hpp"
+#include "vm/field.hpp"
#include "vm/global.h"
-#include "vm/loader.h"
-#include "vm/utf8.h"
+#include "vm/loader.hpp"
+#include "vm/method.hpp"
-/* annotation *****************************************************************/
+/* function prototypes ********************************************************/
-struct annotation_t {
- utf *type;
- s4 element_valuescount;
- element_value_t *element_values;
-};
+#ifdef __cplusplus
+extern "C" {
+#endif
+bool annotation_load_class_attribute_runtimevisibleannotations(
+ classbuffer *cb);
-/* element_value **************************************************************/
+bool annotation_load_class_attribute_runtimeinvisibleannotations(
+ classbuffer *cb);
-struct element_value_t {
- utf *name;
- u1 tag;
-};
+bool annotation_load_method_attribute_runtimevisibleannotations(
+ classbuffer *cb, methodinfo *m);
+bool annotation_load_method_attribute_runtimeinvisibleannotations(
+ classbuffer *cb, methodinfo *m);
-/* function prototypes ********************************************************/
+bool annotation_load_field_attribute_runtimevisibleannotations(
+ classbuffer *cb, fieldinfo *f);
+
+bool annotation_load_field_attribute_runtimeinvisibleannotations(
+ classbuffer *cb, fieldinfo *f);
+
+bool annotation_load_method_attribute_annotationdefault(
+ classbuffer *cb, methodinfo *m);
+
+bool annotation_load_method_attribute_runtimevisibleparameterannotations(
+ classbuffer *cb, methodinfo *m);
+
+bool annotation_load_method_attribute_runtimeinvisibleparameterannotations(
+ classbuffer *cb, methodinfo *m);
-bool annotation_load_attribute_runtimevisibleannotations(classbuffer *cb);
+#ifdef __cplusplus
+}
+#endif
#endif /* _ANNOTATION_H */