Text ResObject::description() const
{ return pimpl().description(); }
+ Source & ResObject::source() const
+ { return pimpl().source(); }
/////////////////////////////////////////////////////////////////
} // namespace zypp
///////////////////////////////////////////////////////////////////
namespace detail {
class ResObjectImplIf;
}
+ class Source;
///////////////////////////////////////////////////////////////////
//
Label summary() const;
/** */
Text description() const;
+ /** */
+ zypp::Source & source() const;
protected:
/** Ctor */
#include "zypp/Source.h"
#include "zypp/source/SourceImpl.h"
+#include "zypp/SourceFactory.h"
using namespace std;
assert( impl_r );
}
+ Source Source::_nullimpl;
+ bool Source::_nullimpl_initialized = false;
+
+ /** Null implementation */
+ Source & Source::nullimpl()
+ {
+ if (! _nullimpl_initialized)
+ {
+ _nullimpl = SourceFactory().createFrom(source::SourceImpl::nullimpl());
+ _nullimpl_initialized = true;
+ }
+ return _nullimpl;
+ }
+
+
///////////////////////////////////////////////////////////////////
//
// Forward to SourceImpl:
//
///////////////////////////////////////////////////////////////////
- const ResStore & Source::resolvables() const
- { return _pimpl->resolvables(); }
+ const ResStore & Source::resolvables()
+ { return _pimpl->resolvables(*this); }
std::ostream & Source::dumpOn( std::ostream & str ) const
{ return _pimpl->dumpOn( str ); }
public:
/** All resolvables provided by this source. */
- const ResStore & resolvables() const;
+ const ResStore & resolvables();
+ /** Null implementation */
+ static Source & nullimpl();
private:
/** Factory */
friend class SourceFactory;
friend class SourceManager;
+ private:
/** Factory ctor */
Source();
/** Factory ctor */
/** Pointer to implementation */
RW_pointer<Impl,rw_pointer::Intrusive<Impl> > _pimpl;
+ static Source _nullimpl;
+ static bool _nullimpl_initialized;
+
public:
/** Provide a file to local filesystem */
const Pathname provideFile(const Pathname & file_r,
bool ResObjectImplIf::providesSources() const
{ return false; }
- Source ResObjectImplIf::source() const
- { return SourceFactory().createFrom(source::SourceImpl::nullimpl()); }
+ Source & ResObjectImplIf::source() const
+ { return Source::nullimpl(); }
Label ResObjectImplIf::instSrcLabel() const
{ return Label(); }
virtual bool providesSources() const PURE_VIRTUAL;
/** Installation source which provides the package */
- virtual Source source() const PURE_VIRTUAL;
+ virtual Source & source() const PURE_VIRTUAL;
/** \name deprecated
* \todo These should be replaced by a offering a
: _media(media_r)
, _path(path_r)
, _enabled(true)
+ , _res_store_initialized(false)
{}
///////////////////////////////////////////////////////////////////
SourceImpl::~SourceImpl()
{}
+ const ResStore & SourceImpl::resolvables(Source & source_r)
+ {
+ if (! _res_store_initialized)
+ {
+ createResolvables(source_r);
+ _res_store_initialized = true;
+ }
+ return _store;
+ }
+
const Pathname SourceImpl::provideFile(const Pathname & file_r,
const unsigned media_nr)
{
return _media->localPath (path_r);
}
+ void SourceImpl::createResolvables(Source & source_r)
+ {}
+
/////////////////////////////////////////////////////////////////
} // namespace source
///////////////////////////////////////////////////////////////////
#include "zypp/Pathname.h"
#include "zypp/media/MediaAccess.h"
+#include "zypp/Source.h"
///////////////////////////////////////////////////////////////////
namespace zypp
public:
/** Ctor, FIXME it is here only because of target storage, then make it private */
SourceImpl()
+ : _res_store_initialized(true) // in case of null source, nothing to read
{}
/** Ctor. */
SourceImpl(media::MediaAccess::Ptr & media_r,
public:
/** All resolvables provided by this source. */
- const ResStore & resolvables() const
- { return _store; }
+ const ResStore & resolvables(Source & source_r);
/** Provide a file to local filesystem */
const Pathname provideFile(const Pathname & file,
private:
/** Null implementation */
static SourceImpl_Ptr _nullimpl;
+ /** ResStore initialized? */
+ bool _res_store_initialized;
+ /** Fill in the ResStore */
+ virtual void createResolvables(Source & source_r);
};
///////////////////////////////////////////////////////////////////
SuseTagsImpl::SuseTagsImpl( media::MediaAccess::Ptr & media_r, const Pathname & path_r )
: SourceImpl(media_r, path_r)
{
- Pathname p = provideFile(path_r + "suse/setup/descr/packages");
+#warning TODO check if the source is of this type
+ }
+
+ void SuseTagsImpl::createResolvables(Source & source_r)
+ {
+ Pathname p = provideFile(_path + "suse/setup/descr/packages");
DBG << "Going to parse " << p << endl;
std::list<Package::Ptr> content( parsePackages( p ) );
_store.insert( content.begin(), content.end() );
DBG << "SuseTagsImpl (fake) from " << p << ": "
<< content.size() << " packages" << endl;
}
-
///////////////////////////////////////////////////////////////////
//
// METHOD NAME : SuseTagsImpl::~SuseTagsImpl
/** Dtor */
~SuseTagsImpl();
+ virtual void createResolvables(Source & source_r);
public:
/** Stream output. */
virtual std::ostream & dumpOn( std::ostream & str ) const;
/** Default ctor
*/
YUMGroupImpl::YUMGroupImpl(
+ Source & source_r,
const zypp::parser::yum::YUMGroupData & parsed
)
: _user_visible(parsed.userVisible == "true")
+ , _source(source_r)
{
CapFactory _f;
for (std::list<PackageReq>::const_iterator it = parsed.packageList.begin();
ByteCount YUMGroupImpl::size() const
{ return ResObjectImplIf::size(); }
+ Source & YUMGroupImpl::source() const
+ { return _source; }
} // namespace yum
/////////////////////////////////////////////////////////////////
#include "zypp/detail/SelectionImplIf.h"
#include "zypp/parser/yum/YUMParserData.h"
#include "zypp/Edition.h"
+#include "zypp/Source.h"
///////////////////////////////////////////////////////////////////
namespace zypp
{
public:
/** Default ctor */
- YUMGroupImpl( const zypp::parser::yum::YUMGroupData & parsed );
+ YUMGroupImpl(
+ Source & source_r,
+ const zypp::parser::yum::YUMGroupData & parsed
+ );
/** Is to be visible for user? */
virtual bool userVisible() const;
/** Other requested groups */
bool _user_visible;
CapSet _optional_req;
CapSet _default_req;
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
///////////////////////////////////////////////////////////////////
} // namespace yum
/** Default ctor
*/
YUMMessageImpl::YUMMessageImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatchMessage & parsed
)
+ : _source(source_r)
{
_text = parsed.text;
_type = parsed.type;
Vendor YUMMessageImpl::instSrcVendor() const
{ return ResObjectImplIf::instSrcVendor(); }
+ Source & YUMMessageImpl::source() const
+ { return _source; }
} // namespace yum
{
public:
/** Default ctor */
- YUMMessageImpl( const zypp::parser::yum::YUMPatchMessage & parsed );
+ YUMMessageImpl(
+ Source & source_r,
+ const zypp::parser::yum::YUMPatchMessage & parsed
+ );
/** Get the text of the message */
virtual std::string text() const;
/** Get the type of the message (YesNo / OK) */
std::string _text;
/** The type of the message (YesNo / OK) */
std::string _type;
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
///////////////////////////////////////////////////////////////////
} // namespace yum
/** Default ctor
*/
YUMPackageImpl::YUMPackageImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPrimaryData & parsed,
const zypp::parser::yum::YUMFileListData & filelist,
const zypp::parser::yum::YUMOtherData & other
_delta_rpms(),
_patch_rpms(),
- _install_only(parsed.installOnly)
+ _install_only(parsed.installOnly),
+ _source(source_r)
#if 0
: _size_package(strtol(parsed.sizePackage.c_str(), 0, 10)),
_size_archive(strtol(parsed.sizeArchive.c_str(), 0, 10)),
}
YUMPackageImpl::YUMPackageImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatchPackage & parsed
)
: _summary(parsed.summary),
_delta_rpms(),
_patch_rpms(),
- _install_only(parsed.installOnly)
+ _install_only(parsed.installOnly),
+ _source(source_r)
#if 0
: _size_package( strtol(parsed.sizePackage.c_str(), 0, 10)),
_size_archive( strtol(parsed.sizeArchive.c_str(), 0, 10)),
std::list<PatchRpm> YUMPackageImpl::patchRpms() const
{ return _patch_rpms; }
+ Source & YUMPackageImpl::source() const
+ { return _source; }
+
#if 0
/** */
std::list<std::string> YUMPackageImpl::insnotify() const
/** Default ctor
*/
YUMPackageImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPrimaryData & parsed,
const zypp::parser::yum::YUMFileListData & filelist,
const zypp::parser::yum::YUMOtherData & other
);
YUMPackageImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatchPackage & parsed
);
/*
std::list<ChangelogEntry> changelog;
*/
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
* \bug CANT BE CONSTUCTED THAT WAY ANYMORE
*/
YUMPatchImpl::YUMPatchImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatchData & parsed,
- YUMSourceImpl * src
+ YUMSourceImpl & srcimpl_r
)
+ : _source(source_r)
{
_patch_id = parsed.patchId;
_timestamp = atol(parsed.timestamp.c_str());
case YUMPatchAtom::Package: {
shared_ptr<YUMPatchPackage> package_data
= dynamic_pointer_cast<YUMPatchPackage>(*it);
- Package::Ptr package = src->createPackage(*package_data);
+ Package::Ptr package = srcimpl_r.createPackage(_source, *package_data);
_atoms.push_back(package);
break;
}
case YUMPatchAtom::Message: {
shared_ptr<YUMPatchMessage> message_data
= dynamic_pointer_cast<YUMPatchMessage>(*it);
- Message::Ptr message = src->createMessage(*message_data);
+ Message::Ptr message = srcimpl_r.createMessage(_source, *message_data);
_atoms.push_back(message);
break;
}
case YUMPatchAtom::Script: {
shared_ptr<YUMPatchScript> script_data
= dynamic_pointer_cast<YUMPatchScript>(*it);
- Script::Ptr script = src->createScript(*script_data);
+ Script::Ptr script = srcimpl_r.createScript(_source, *script_data);
_atoms.push_back(script);
break;
}
}
}
+ Source & YUMPatchImpl::source() const
+ { return _source; }
+
} // namespace yum
/////////////////////////////////////////////////////////////////
} // namespace source
public:
/** Default ctor */
YUMPatchImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatchData & parsed,
- YUMSourceImpl * src
+ YUMSourceImpl & srcimpl_r
);
/** Patch ID */
std::string id() const;
bool _affects_pkg_manager;
/** The list of all atoms building the patch */
AtomList _atoms;
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
///////////////////////////////////////////////////////////////////
} // namespace yum
/** Default ctor
*/
YUMPatternImpl::YUMPatternImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatternData & parsed
)
: _user_visible(parsed.userVisible == "true")
+ , _source(source_r)
{
CapFactory _f;
for (std::list<PackageReq>::const_iterator it = parsed.packageList.begin();
ByteCount YUMPatternImpl::size() const
{ return ResObjectImplIf::size(); }
+ Source & YUMPatternImpl::source() const
+ { return _source; }
+
} // namespace yum
/////////////////////////////////////////////////////////////////
{
public:
/** Default ctor */
- YUMPatternImpl( const zypp::parser::yum::YUMPatternData & parsed );
+ YUMPatternImpl(
+ Source & source_r,
+ const zypp::parser::yum::YUMPatternData & parsed
+ );
/** Is to be visible for user? */
virtual bool userVisible() const;
/** optional requirements */
bool _user_visible;
CapSet _optional_req;
CapSet _default_req;
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
///////////////////////////////////////////////////////////////////
} // namespace yum
* \bug CANT BE CONSTUCTED THAT WAY ANYMORE
*/
YUMProductImpl::YUMProductImpl(
- const zypp::parser::yum::YUMProductData & parsed,
- YUMSourceImpl * src
+ Source & source_r,
+ const zypp::parser::yum::YUMProductData & parsed
)
: _category(parsed.type),
- _vendor(parsed.vendor)//,
+ _vendor(parsed.vendor),
// _displayname(parsed.displayname),
// _description(parsed.description)
+ _source(source_r)
{}
std::string YUMProductImpl::category() const
Vendor YUMProductImpl::instSrcVendor() const
{ return ResObjectImplIf::instSrcVendor(); }
+
+ Source & YUMProductImpl::source() const
+ { return _source; }
} // namespace yum
/////////////////////////////////////////////////////////////////
public:
/** Default ctor */
YUMProductImpl(
- const zypp::parser::yum::YUMProductData & parsed,
- YUMSourceImpl * src
+ Source & source_r,
+ const zypp::parser::yum::YUMProductData & parsed
);
std::string category() const;
Label vendor() const;
Text _description;
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
///////////////////////////////////////////////////////////////////
/** Default ctor
*/
YUMScriptImpl::YUMScriptImpl(
+ Source & source_r,
const zypp::parser::yum::YUMPatchScript & parsed
)
+ : _source(source_r)
{
_do_script = parsed.do_script;
_undo_script = parsed.undo_script;
Vendor YUMScriptImpl::instSrcVendor() const
{ return ResObjectImplIf::instSrcVendor(); }
+ Source & YUMScriptImpl::source() const
+ { return _source; }
+
+
+
} // namespace yum
/////////////////////////////////////////////////////////////////
} // namespace source
{
public:
/** Default ctor */
- YUMScriptImpl( const zypp::parser::yum::YUMPatchScript & parsed );
+ YUMScriptImpl(
+ Source & source_r,
+ const zypp::parser::yum::YUMPatchScript & parsed
+ );
/** Get the script to perform the change */
virtual std::string do_script() const;
/** Get the script to undo the change */
std::string _do_script;
/** The script to undo the change */
std::string _undo_script;
+ private:
+ Source & _source;
+ public:
+ Source & source() const;
};
///////////////////////////////////////////////////////////////////
} // namespace yum
YUMSourceImpl::YUMSourceImpl(media::MediaAccess::Ptr & media_r,
const Pathname & path_r)
: SourceImpl(media_r, path_r)
+ {
+ try {
+ // first read list of all files in the reposotory
+ Pathname filename = provideFile(_path + "/repomd.xml");
+ DBG << "Reading file " << filename << endl;
+ ifstream repo_st(filename.asString().c_str());
+ YUMRepomdParser repomd(repo_st, "");
+
+ for(;
+ ! repomd.atEnd();
+ ++repomd)
+ {
+ }
+ }
+ catch (...)
+ {
+ ERR << "Cannot read repomd file, cannot initialize source" << endl;
+ ZYPP_THROW( Exception("Cannot read repomd file, cannot initialize source") );
+ }
+ }
+
+ void YUMSourceImpl::createResolvables(Source & source_r)
{
std::list<YUMRepomdData_Ptr> repo_primary;
std::list<YUMRepomdData_Ptr> repo_files;
try {
// first read list of all files in the reposotory
- Pathname filename = provideFile(path_r + "/repomd.xml");
+ Pathname filename = provideFile(_path + "/repomd.xml");
DBG << "Reading file " << filename << endl;
ifstream repo_st(filename.asString().c_str());
YUMRepomdParser repomd(repo_st, "");
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMFileListParser filelist(st, "");
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMOtherParser other(st, "");
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMPrimaryParser prim(st, "");
YUMFileListData filelist_empty;
YUMOtherData other_empty;
Package::Ptr p = createPackage(
+ source_r,
**prim,
found_files != files_data.end()
? *found_files->second
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMGroupParser group(st, "");
!group.atEnd();
++group)
{
- Selection::Ptr p = createGroup(**group);
+ Selection::Ptr p = createGroup(
+ source_r,
+ **group
+ );
_store.insert (p);
}
if (group.errorStatus())
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMPatternParser pattern(st, "");
!pattern.atEnd();
++pattern)
{
- Pattern::Ptr p = createPattern(**pattern);
+ Pattern::Ptr p = createPattern(
+ source_r,
+ **pattern
+ );
_store.insert (p);
}
if (pattern.errorStatus())
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMProductParser product(st, "");
!product.atEnd();
++product)
{
- Product::Ptr p = createProduct(**product);
+ Product::Ptr p = createProduct(
+ source_r,
+ **product
+ );
_store.insert (p);
}
if (product.errorStatus())
it++)
{
// TODO check checksum
- Pathname filename = provideFile(path_r + (*it)->location);
+ Pathname filename = provideFile(_path + (*it)->location);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMPatchesParser patch(st, "");
it != patch_files.end();
it++)
{
- Pathname filename = provideFile(path_r + *it);
+ Pathname filename = provideFile(_path + *it);
DBG << "Reading file " << filename << endl;
ifstream st(filename.asString().c_str());
YUMPatchParser ptch(st, "");
!ptch.atEnd();
++ptch)
{
- Patch::Ptr p = createPatch(**ptch);
+ Patch::Ptr p = createPatch(
+ source_r,
+ **ptch
+ );
_store.insert (p);
Patch::AtomList atoms = p->atoms();
for (Patch::AtomList::iterator at = atoms.begin();
}
Package::Ptr YUMSourceImpl::createPackage(
+ Source & source_r,
const zypp::parser::yum::YUMPrimaryData & parsed,
const zypp::parser::yum::YUMFileListData & filelist,
const zypp::parser::yum::YUMOtherData & other
try
{
shared_ptr<YUMPackageImpl> impl(
- new YUMPackageImpl(parsed, filelist, other));
+ new YUMPackageImpl(source_r, parsed, filelist, other));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.name,
}
Package::Ptr YUMSourceImpl::createPackage(
+ Source & source_r,
const zypp::parser::yum::YUMPatchPackage & parsed
)
{
try
{
- shared_ptr<YUMPackageImpl> impl(new YUMPackageImpl(parsed));
+ shared_ptr<YUMPackageImpl> impl(new YUMPackageImpl(source_r, parsed));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.name,
}
Selection::Ptr YUMSourceImpl::createGroup(
+ Source & source_r,
const zypp::parser::yum::YUMGroupData & parsed
)
{
try
{
- shared_ptr<YUMGroupImpl> impl(new YUMGroupImpl(parsed));
+ shared_ptr<YUMGroupImpl> impl(new YUMGroupImpl(source_r, parsed));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.groupId,
Edition::noedition,
}
Pattern::Ptr YUMSourceImpl::createPattern(
+ Source & source_r,
const zypp::parser::yum::YUMPatternData & parsed
)
{
try
{
- shared_ptr<YUMPatternImpl> impl(new YUMPatternImpl(parsed));
+ shared_ptr<YUMPatternImpl> impl(new YUMPatternImpl(source_r, parsed));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.patternId,
Edition::noedition,
}
Message::Ptr YUMSourceImpl::createMessage(
+ Source & source_r,
const zypp::parser::yum::YUMPatchMessage & parsed
)
{
try
{
- shared_ptr<YUMMessageImpl> impl(new YUMMessageImpl(parsed));
+ shared_ptr<YUMMessageImpl> impl(new YUMMessageImpl(source_r, parsed));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.name,
}
Script::Ptr YUMSourceImpl::createScript(
+ Source & source_r,
const zypp::parser::yum::YUMPatchScript & parsed
)
{
try
{
- shared_ptr<YUMScriptImpl> impl(new YUMScriptImpl(parsed));
+ shared_ptr<YUMScriptImpl> impl(new YUMScriptImpl(source_r, parsed));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.name,
}
Product::Ptr YUMSourceImpl::createProduct(
+ Source & source_r,
const zypp::parser::yum::YUMProductData & parsed
)
{
try
{
- shared_ptr<YUMProductImpl> impl(new YUMProductImpl(parsed, this));
+ shared_ptr<YUMProductImpl> impl(new YUMProductImpl(source_r, parsed));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.name,
}
Patch::Ptr YUMSourceImpl::createPatch(
+ Source & source_r,
const zypp::parser::yum::YUMPatchData & parsed
)
{
try
{
- shared_ptr<YUMPatchImpl> impl(new YUMPatchImpl(parsed, this));
+ shared_ptr<YUMPatchImpl> impl(new YUMPatchImpl(source_r, parsed, *this));
// Collect basic Resolvable data
NVRAD dataCollect( parsed.name,
/** Default ctor */
YUMSourceImpl(media::MediaAccess::Ptr & media_r, const Pathname & path_r = "/");
+ virtual void createResolvables(Source & source_r);
+
Package::Ptr createPackage(
+ Source & source_r,
const zypp::parser::yum::YUMPrimaryData & parsed,
const zypp::parser::yum::YUMFileListData & filelist,
const zypp::parser::yum::YUMOtherData & other
);
Package::Ptr createPackage(
+ Source & source_r,
const zypp::parser::yum::YUMPatchPackage & parsed
);
Selection::Ptr createGroup(
+ Source & source_r,
const zypp::parser::yum::YUMGroupData & parsed
);
Pattern::Ptr createPattern(
+ Source & source_r,
const zypp::parser::yum::YUMPatternData & parsed
);
Message::Ptr createMessage(
+ Source & source_r,
const zypp::parser::yum::YUMPatchMessage & parsed
);
Script::Ptr createScript(
+ Source & source_r,
const zypp::parser::yum::YUMPatchScript & parsed
);
Patch::Ptr createPatch(
+ Source & source_r,
const zypp::parser::yum::YUMPatchData & parsed
);
Product::Ptr createProduct(
+ Source & source_r,
const zypp::parser::yum::YUMProductData & parsed
);
Capability createCapability(const YUMDependency & dep,
const Resolvable::Kind & my_kind);
+ private:
class PackageID {
public:
std::string _rel;
std::string _arch;
};
-
+ friend inline bool operator<( const YUMSourceImpl::PackageID & lhs, const YUMSourceImpl::PackageID & rhs );
};
+
inline bool operator<( const YUMSourceImpl::PackageID & lhs, const YUMSourceImpl::PackageID & rhs )
{ return YUMSourceImpl::PackageID::compare( lhs, rhs ) == -1; }
class XMLFilesBackend::Private
{
public:
+ XMLFilesBackend::Private::Private()
+ : source(Source::nullimpl())
+ { }
bool randomFileName;
- YUMSourceImpl source;
+ Source & source;
+ YUMSourceImpl sourceimpl;
};
///////////////////////////////////////////////////////////////////
YUMPatchParser iter(res_file,"");
for (; !iter.atEnd(); ++iter)
{
- resolvable = d->source.createPatch(**iter);
+ resolvable = d->sourceimpl.createPatch(d->source, **iter);
break;
}
}