17#define RPM_NULL_TYPE rpmTagType(0)
18typedef rpmuint32_t rpm_count_t;
34#define Y2LOG "BinHeader"
75 { ::headerGet( h_r, tag_r,
_rpmtd, HEADERGET_DEFAULT ); }
83 : _type( RPM_NULL_TYPE )
86 { ::headerGetEntry( h_r, tag_r, hTYP_t(&_type), &_val, &_cnt ); }
88 {
if ( _val && _type == RPM_STRING_ARRAY_TYPE ) free( _val ); }
106#if RPM_CHAR_TYPE != RPM_INT8_TYPE
108 std::vector<long>( (
char*)val_r, ((
char*)val_r)+cnt_r ).swap(
_data );
112 std::vector<long>( (int8_t*)val_r, ((int8_t*)val_r)+cnt_r ).swap(
_data );
115 std::vector<long>( (int16_t*)val_r, ((int16_t*)val_r)+cnt_r ).swap(
_data );
118 std::vector<long>( (int32_t*)val_r, ((int32_t*)val_r)+cnt_r ).swap(
_data );
122 std::vector<long>( (int64_t*)val_r, ((int64_t*)val_r)+cnt_r ).swap(
_data );
126 std::vector<long>( cnt_r, 0L ).swap(
_data );
143 std::vector<std::string>( val_r, val_r+cnt_r ).swap(
_data );
178 INT <<
"INJECT from " << rhs;
179 if ( ! (rhs && rhs->_h) )
188 INT <<
": " << *
this <<
" (" << rhs <<
")" << endl;
218 INT <<
"OOPS: NULL HEADER created!" << endl;
235 return( !
empty() && ::headerIsEntry(
_h, tag_r ) );
252 if ( headerget.
val() )
254 switch ( headerget.
type() )
257 return lst_r.
set( 0, 0, headerget.
type() );
258#if RPM_CHAR_TYPE != RPM_INT8_TYPE
267 return lst_r.
set( headerget.
val(), headerget.
cnt(), headerget.
type() );
270 INT <<
"RPM_TAG MISMATCH: RPM_INTxx_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
274 return lst_r.
set( 0, 0, RPM_NULL_TYPE );
291 if ( headerget.
val() )
293 switch ( headerget.
type() )
296 return lst_r.
set( 0, 0 );
297 case RPM_STRING_ARRAY_TYPE:
298 return lst_r.
set( (
char**)headerget.
val(), headerget.
cnt() );
301 INT <<
"RPM_TAG MISMATCH: RPM_STRING_ARRAY_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
305 return lst_r.
set( 0, 0 );
322 if ( headerget.
val() )
324 switch ( headerget.
type() )
328#if RPM_CHAR_TYPE != RPM_INT8_TYPE
330 return *((
char*)headerget.
val());
333 return *((int8_t*)headerget.
val());
335 return *((int16_t*)headerget.
val());
337 return *((int32_t*)headerget.
val());
340 return *((int64_t*)headerget.
val());
344 INT <<
"RPM_TAG MISMATCH: RPM_INTxx_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
357 if ( headerget.
val() )
359 switch ( headerget.
type() )
364 return ByteArray(
reinterpret_cast<char *
>( headerget.
val() ), headerget.
cnt() );
366 INT <<
"RPM_TAG MISSMATCH: RPM_BIN_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
387 if ( headerget.
val() )
389 switch ( headerget.
type() )
393 case RPM_STRING_TYPE:
394 return (
char*)headerget.
val();
397 INT <<
"RPM_TAG MISMATCH: RPM_STRING_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
408 return std::string();
410 return std::string(
form);
428 std::list<std::string> ret;
434 for (
unsigned i = 0; i < count; ++i )
436 ret.push_back( lines[i] );
452 ReferenceCounted::dumpOn(
str );
453 return str <<
'{' << (
void*)
_h <<
'}';
Reference counted access to a Tp object calling a custom Dispose function when the last AutoDispose h...
String related utilities and Regular expression matching.
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Easy-to use interface to the ZYPP dependency resolver.