-
Notifications
You must be signed in to change notification settings - Fork 138
/
packfilesegment.pmc
141 lines (89 loc) · 2.07 KB
/
packfilesegment.pmc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
Copyright (C) 2001-2011, Parrot Foundation.
=head1 NAME
src/pmc/packfilesegment.pmc - PackfileSegment PMC
=head1 DESCRIPTION
This class implements a PackfileSegment class, an abstract class defining a
couple of methods which all Packfile segments will implement. The stub methods
found here explode when called.
See packfile.pmc for the toplevel Packfile interface; see PDD13 for the design
spec.
=head2 Methods
=over 4
=cut
*/
/* HEADERIZER HFILE: none */
/* HEADERIZER BEGIN: static */
/* HEADERIZER END: static */
pmclass PackfileSegment auto_attrs {
/*
Directory which owns this segment. Required for correct pack/unpack
Annotations.
*/
ATTR PMC *directory;
/*
=item C<void init()>
Initialize PackfileSegment.
=cut
*/
VTABLE void init() {
Parrot_PackfileSegment_attributes * const attrs =
PMC_data_typed(SELF, Parrot_PackfileSegment_attributes*);
attrs->directory = PMCNULL;
PObj_custom_mark_SET(SELF);
}
/*
=item C<void mark()>
Marks the object as live.
=cut
*/
VTABLE void mark() {
Parrot_PackfileSegment_attributes * const attrs =
PARROT_PACKFILESEGMENT(SELF);
Parrot_gc_mark_PMC_alive(INTERP, attrs->directory);
}
/*
=item C<void set_pointer(void *ptr)>
Initialize PMC internals.
=cut
*/
VTABLE void set_pointer(void *ptr) {
}
/*
=item C<void *get_pointer()>
Initialize PMC internals.
=cut
*/
VTABLE void *get_pointer() {
return NULL;
}
/*
=item C<void set_directory(PMC *directory)>
Set owning directory.
=cut
*/
METHOD set_directory(PMC *directory) {
PARROT_PACKFILESEGMENT(SELF)->directory = directory;
}
/*
=item C<void get_directory(PMC *directory)>
Get owning directory.
=cut
*/
METHOD get_directory() {
PMC * directory = PARROT_PACKFILESEGMENT(SELF)->directory;
if (!directory)
directory = PMCNULL;
RETURN(PMC* directory);
}
}
/*
=back
=cut
*/
/*
* Local variables:
* c-file-style: "parrot"
* End:
* vim: expandtab shiftwidth=4 cinoptions='\:2=2' :
*/