2 * Copyright (C) 2001-2003, Parrot Foundation.
6 * Vtable manipulation code. Not to be confused with vtable.h
7 * Data Structure and Algorithms:
13 #ifndef PARROT_VTABLES_H_GUARD
14 #define PARROT_VTABLES_H_GUARD
17 /* HEADERIZER BEGIN: src/vtables.c */
18 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
22 PARROT_CANNOT_RETURN_NULL
23 VTABLE
* Parrot_clone_vtable(PARROT_INTERP
,
24 ARGIN(const VTABLE
*base_vtable
))
25 __attribute__nonnull__(1)
26 __attribute__nonnull__(2);
29 void Parrot_destroy_vtable(PARROT_INTERP
, ARGMOD(VTABLE
*vtable
))
30 __attribute__nonnull__(1)
31 __attribute__nonnull__(2)
32 FUNC_MODIFIES(*vtable
);
35 void Parrot_initialize_core_vtables(PARROT_INTERP
)
36 __attribute__nonnull__(1);
40 PARROT_CANNOT_RETURN_NULL
41 VTABLE
* Parrot_new_vtable(SHIM_INTERP
);
43 void mark_vtables(PARROT_INTERP
)
44 __attribute__nonnull__(1);
46 void parrot_alloc_vtables(PARROT_INTERP
)
47 __attribute__nonnull__(1);
49 void parrot_free_vtables(PARROT_INTERP
)
50 __attribute__nonnull__(1);
52 void parrot_realloc_vtables(PARROT_INTERP
)
53 __attribute__nonnull__(1);
55 #define ASSERT_ARGS_Parrot_clone_vtable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
56 PARROT_ASSERT_ARG(interp) \
57 , PARROT_ASSERT_ARG(base_vtable))
58 #define ASSERT_ARGS_Parrot_destroy_vtable __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
59 PARROT_ASSERT_ARG(interp) \
60 , PARROT_ASSERT_ARG(vtable))
61 #define ASSERT_ARGS_Parrot_initialize_core_vtables \
62 __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
63 PARROT_ASSERT_ARG(interp))
64 #define ASSERT_ARGS_Parrot_new_vtable __attribute__unused__ int _ASSERT_ARGS_CHECK = (0)
65 #define ASSERT_ARGS_mark_vtables __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
66 PARROT_ASSERT_ARG(interp))
67 #define ASSERT_ARGS_parrot_alloc_vtables __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
68 PARROT_ASSERT_ARG(interp))
69 #define ASSERT_ARGS_parrot_free_vtables __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
70 PARROT_ASSERT_ARG(interp))
71 #define ASSERT_ARGS_parrot_realloc_vtables __attribute__unused__ int _ASSERT_ARGS_CHECK = (\
72 PARROT_ASSERT_ARG(interp))
73 /* Don't modify between HEADERIZER BEGIN / HEADERIZER END. Your changes will be lost. */
74 /* HEADERIZER END: src/vtables.c */
76 #endif /* PARROT_VTABLES_H_GUARD */
80 * c-file-style: "parrot"
82 * vim: expandtab shiftwidth=4: