rpm
5.4.10
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
ruby
rpmds-rb.c
Go to the documentation of this file.
1
6
#include "
system.h
"
7
#include "
rpm-rb.h
"
8
9
#include "
rpmds-rb.h
"
10
11
#ifdef NOTYET
12
#include <
argv.h
>
13
#include <
mire.h
>
14
#endif
15
16
#define _RPMDS_INTERNAL
17
#include <
rpmtag.h
>
18
#include <
rpmtypes.h
>
19
#include <
rpmtag.h
>
20
#include <
rpmio.h
>
21
#include <
rpmds.h
>
22
23
#include "../debug.h"
24
25
26
VALUE
rpmdsClass
;
27
28
29
/*@unchecked@*/
30
static
int
_debug
= 0;
31
32
/* --- helpers */
33
static
void
*
34
rpmds_ptr
(VALUE s)
35
{
36
void
*ptr;
37
Data_Get_Struct(s,
void
, ptr);
38
return
ptr;
39
}
40
41
/* --- Object methods */
42
43
static
void
44
initMethods
(VALUE klass)
45
{
46
}
47
48
/* --- Object properties */
49
static
VALUE
50
rpmds_debug_get
(VALUE s)
51
{
52
if
(
_debug
)
53
fprintf(stderr,
"==> %s(0x%lx)\n"
, __FUNCTION__, s);
54
return
INT2FIX(
_debug
);
55
}
56
57
static
VALUE
58
rpmds_debug_set
(VALUE s, VALUE v)
59
{
60
if
(
_debug
)
61
fprintf(stderr,
"==> %s(0x%lx, 0x%lx)\n"
, __FUNCTION__, s, v);
62
return
INT2FIX(
_debug
= FIX2INT(v));
63
}
64
65
static
VALUE
66
rpmds_Count_get
(VALUE s)
67
{
68
rpmds
ds =
rpmds_ptr
(s);
69
if
(
_debug
)
70
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
71
return
INT2FIX(
rpmdsCount
(ds));
72
}
73
74
/* XXX FIXME: what to call the method? */
75
static
VALUE
76
rpmds_Type_get
(VALUE s)
77
{
78
rpmds
ds =
rpmds_ptr
(s);
79
if
(
_debug
)
80
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
81
return
rb_str_new2(
rpmdsType
(ds));
82
}
83
84
static
VALUE
85
rpmds_Ix_get
(VALUE s)
86
{
87
rpmds
ds =
rpmds_ptr
(s);
88
if
(
_debug
)
89
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
90
return
INT2FIX(
rpmdsIx
(ds));
91
}
92
93
static
VALUE
94
rpmds_Ix_set
(VALUE s, VALUE v)
95
{
96
rpmds
ds =
rpmds_ptr
(s);
97
int
ix = FIX2INT(v);
98
if
(
_debug
)
99
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
100
if
(ix !=
rpmdsIx
(ds)) {
101
(void)
rpmdsSetIx
(ds, ix-1);
102
/* XXX flush and recreate N and DNEVR with a rpmdsNext() step */
103
(void)
rpmdsNext
(ds);
104
}
105
return
INT2FIX(
rpmdsIx
(ds));
106
}
107
108
static
VALUE
109
rpmds_BT_get
(VALUE s)
110
{
111
rpmds
ds =
rpmds_ptr
(s);
112
if
(
_debug
)
113
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
114
return
INT2FIX(
rpmdsBT
(ds));
115
}
116
117
static
VALUE
118
rpmds_BT_set
(VALUE s, VALUE v)
119
{
120
rpmds
ds =
rpmds_ptr
(s);
121
int
BT = FIX2INT(v);
122
if
(
_debug
)
123
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
124
(void)
rpmdsSetBT
(ds, BT);
125
return
INT2FIX(
rpmdsBT
(ds));
126
}
127
128
static
VALUE
129
rpmds_Color_get
(VALUE s)
130
{
131
rpmds
ds =
rpmds_ptr
(s);
132
if
(
_debug
)
133
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
134
return
INT2FIX(
rpmdsColor
(ds));
135
}
136
137
static
VALUE
138
rpmds_Color_set
(VALUE s, VALUE v)
139
{
140
rpmds
ds =
rpmds_ptr
(s);
141
int
color = FIX2INT(v);
142
if
(
_debug
)
143
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
144
(void)
rpmdsSetColor
(ds, color);
145
return
INT2FIX(
rpmdsColor
(ds));
146
}
147
148
static
VALUE
149
rpmds_NoPromote_get
(VALUE s)
150
{
151
rpmds
ds =
rpmds_ptr
(s);
152
if
(
_debug
)
153
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
154
return
INT2FIX(
rpmdsNoPromote
(ds));
155
}
156
157
static
VALUE
158
rpmds_NoPromote_set
(VALUE s, VALUE v)
159
{
160
rpmds
ds =
rpmds_ptr
(s);
161
int
nopromote = FIX2INT(v);
162
if
(
_debug
)
163
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
164
(void)
rpmdsSetNoPromote
(ds, nopromote);
165
return
INT2FIX(
rpmdsNoPromote
(ds));
166
}
167
168
static
VALUE
169
rpmds_N_get
(VALUE s)
170
{
171
rpmds
ds =
rpmds_ptr
(s);
172
if
(
_debug
)
173
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
174
return
rb_str_new2(
rpmdsN
(ds));
175
}
176
177
static
VALUE
178
rpmds_EVR_get
(VALUE s)
179
{
180
rpmds
ds =
rpmds_ptr
(s);
181
if
(
_debug
)
182
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
183
return
rb_str_new2(
rpmdsEVR
(ds));
184
}
185
186
static
VALUE
187
rpmds_Flags_get
(VALUE s)
188
{
189
rpmds
ds =
rpmds_ptr
(s);
190
if
(
_debug
)
191
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
192
return
INT2FIX(
rpmdsFlags
(ds));
193
}
194
195
static
VALUE
196
rpmds_DNEVR_get
(VALUE s)
197
{
198
rpmds
ds =
rpmds_ptr
(s);
199
if
(
_debug
)
200
fprintf(stderr,
"==> %s(0x%lx) ptr %p\n"
, __FUNCTION__, s, ds);
201
return
rb_str_new2(
rpmdsDNEVR
(ds));
202
}
203
204
static
void
205
initProperties
(VALUE klass)
206
{
207
rb_define_method(klass,
"debug"
,
rpmds_debug_get
, 0);
208
rb_define_method(klass,
"debug="
,
rpmds_debug_set
, 1);
209
rb_define_method(klass,
"length"
,
rpmds_Count_get
, 0);
210
rb_define_method(klass,
"ix"
,
rpmds_Ix_get
, 0);
211
rb_define_method(klass,
"ix="
,
rpmds_Ix_set
, 1);
212
rb_define_method(klass,
"Type"
,
rpmds_Type_get
, 0);
213
rb_define_method(klass,
"buildtime"
,
rpmds_BT_get
, 0);
214
rb_define_method(klass,
"buildtime="
,
rpmds_BT_set
, 1);
215
rb_define_method(klass,
"color"
,
rpmds_Color_get
, 0);
216
rb_define_method(klass,
"color="
,
rpmds_Color_set
, 1);
217
rb_define_method(klass,
"nopromote"
,
rpmds_NoPromote_get
, 0);
218
rb_define_method(klass,
"nopromote="
,
rpmds_NoPromote_set
, 1);
219
rb_define_method(klass,
"N"
,
rpmds_N_get
, 0);
220
rb_define_method(klass,
"EVR"
,
rpmds_EVR_get
, 0);
221
rb_define_method(klass,
"F"
,
rpmds_Flags_get
, 0);
222
rb_define_method(klass,
"DNEVR"
,
rpmds_DNEVR_get
, 0);
223
}
224
225
/* --- Object ctors/dtors */
226
static
void
227
rpmds_free
(
rpmds
ds)
228
{
229
if
(
_debug
)
230
fprintf(stderr,
"==> %s(%p)\n"
, __FUNCTION__, ds);
231
ds =
rpmdsFree
(ds);
232
}
233
234
static
VALUE
235
rpmds_new
(
int
argc, VALUE *argv, VALUE s)
236
{
237
VALUE v_hdr, v_tag;
238
rpmTag
tag =
RPMTAG_NAME
;
239
int
flags = 0;
240
rpmds
ds;
241
242
rb_scan_args(argc, argv,
"02"
, &v_hdr, &v_tag);
243
244
if
(!NIL_P(v_tag))
245
tag = FIX2INT(v_tag);
246
247
if
(!NIL_P(v_hdr)) {
248
Header
h =
rpmds_ptr
(v_hdr);
249
ds =
rpmdsNew
(h, tag, flags);
250
}
else
251
(
void
)
rpmdsRpmlib
(&ds, NULL);
252
253
if
(
_debug
)
254
fprintf(stderr,
"==> %s(%p[%d], 0x%lx) mi %p\n"
, __FUNCTION__, argv, argc, s, ds);
255
return
Data_Wrap_Struct(s, 0,
rpmds_free
, ds);
256
}
257
258
/* --- Class initialization */
259
260
void
261
Init_rpmds
(
void
)
262
{
263
rpmdsClass
= rb_define_class_under(
rpmModule
,
"Ds"
, rb_cObject);
264
if
(
_debug
)
265
fprintf(stderr,
"==> %s() rpmdsClass 0x%lx\n"
, __FUNCTION__,
rpmdsClass
);
266
#ifdef NOTYET
267
rb_include_module(
rpmdsClass
, rb_mEnumerable);
268
#endif
269
rb_define_singleton_method(
rpmdsClass
,
"new"
,
rpmds_new
, -1);
270
initProperties
(
rpmdsClass
);
271
initMethods
(
rpmdsClass
);
272
}
273
274
VALUE
275
rpmrb_NewDs
(
void
*_ds)
276
{
277
return
Data_Wrap_Struct(
rpmdsClass
, 0,
rpmds_free
, _ds);
278
}
279
Generated on Mon Nov 5 2012 15:32:20 for rpm by
1.8.1.2