17 #define RPM_NULL_TYPE rpmTagType(0)
18 typedef rpmuint32_t rpm_count_t;
32 #define Y2LOG "BinHeader"
65 inline HeaderEntryGetter::HeaderEntryGetter(
const Header & h_r, rpmTag & tag_r )
66 : _rpmtd( ::rpmtdNew() )
67 { ::headerGet( h_r, tag_r,
_rpmtd, HEADERGET_DEFAULT ); }
75 : _type( RPM_NULL_TYPE )
78 { ::headerGetEntry( h_r, tag_r, hTYP_t(&_type), &_val, &_cnt ); }
80 {
if ( _val && _type == RPM_STRING_ARRAY_TYPE ) free( _val ); }
98 #if RPM_CHAR_TYPE != RPM_INT8_TYPE
100 std::vector<long>( (
char*)val_r, ((
char*)val_r)+cnt_r ).swap(
_data );
104 std::vector<long>( (int8_t*)val_r, ((int8_t*)val_r)+cnt_r ).swap(
_data );
107 std::vector<long>( (int16_t*)val_r, ((int16_t*)val_r)+cnt_r ).swap(
_data );
110 std::vector<long>( (int32_t*)val_r, ((int32_t*)val_r)+cnt_r ).swap(
_data );
114 std::vector<long>( (int64_t*)val_r, ((int64_t*)val_r)+cnt_r ).swap(
_data );
118 std::vector<long>( cnt_r, 0L ).swap(
_data );
135 std::vector<std::string>( val_r, val_r+cnt_r ).swap(
_data );
170 INT <<
"INJECT from " << rhs;
171 if ( ! (rhs && rhs->_h) )
180 INT <<
": " << *
this <<
" (" << rhs <<
")" << endl;
210 INT <<
"OOPS: NULL HEADER created!" << endl;
227 return( !
empty() && ::headerIsEntry(
_h, tag_r ) );
244 if ( headerget.
val() )
246 switch ( headerget.
type() )
249 return lst_r.
set( 0, 0, headerget.
type() );
250 #if RPM_CHAR_TYPE != RPM_INT8_TYPE
259 return lst_r.
set( headerget.
val(), headerget.
cnt(), headerget.
type() );
262 INT <<
"RPM_TAG MISSMATCH: RPM_INTxx_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
266 return lst_r.
set( 0, 0, RPM_NULL_TYPE );
283 if ( headerget.
val() )
285 switch ( headerget.
type() )
288 return lst_r.
set( 0, 0 );
289 case RPM_STRING_ARRAY_TYPE:
290 return lst_r.
set( (
char**)headerget.
val(), headerget.
cnt() );
293 INT <<
"RPM_TAG MISSMATCH: RPM_STRING_ARRAY_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
297 return lst_r.
set( 0, 0 );
314 if ( headerget.
val() )
316 switch ( headerget.
type() )
320 #if RPM_CHAR_TYPE != RPM_INT8_TYPE
322 return *((
char*)headerget.
val());
325 return *((int8_t*)headerget.
val());
327 return *((int16_t*)headerget.
val());
329 return *((int32_t*)headerget.
val());
332 return *((int64_t*)headerget.
val());
336 INT <<
"RPM_TAG MISSMATCH: RPM_INTxx_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
357 if ( headerget.
val() )
359 switch ( headerget.
type() )
363 case RPM_STRING_TYPE:
364 return (
char*)headerget.
val();
367 INT <<
"RPM_TAG MISSMATCH: RPM_STRING_TYPE " << tag_r <<
" got type " << headerget.
type() << endl;
384 std::list<std::string> ret;
390 for (
unsigned i = 0; i < count; ++i )
392 ret.push_back( lines[i] );
409 return str <<
'{' << (
void*)
_h <<
'}';
std::ostream & dumpOn(std::ostream &str, const zypp::shared_ptr< void > &obj)
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
std::list< PublicKeyData > _data