From a4e57cc5b70d9ef243b4d54d172fbb33377964e5 Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 16 Dec 2005 16:09:32 +0000 Subject: [PATCH] creating ResObject in ResItem; rplaced kind --- zypp/solver/detail/Dependency.cc | 8 ++--- zypp/solver/detail/Dependency.h | 5 ++-- zypp/solver/detail/Match.cc | 3 +- zypp/solver/detail/OrDependency.cc | 2 +- zypp/solver/detail/Package.cc | 4 +-- zypp/solver/detail/PackageUpdate.cc | 4 +-- zypp/solver/detail/QueueItemConflict.cc | 2 +- zypp/solver/detail/ResItem.cc | 53 +++++++++++++++++++++++++++++++-- zypp/solver/detail/ResItem.h | 6 ++-- zypp/solver/detail/Spec.cc | 18 ++++------- zypp/solver/detail/Spec.h | 41 ++++--------------------- zypp/solver/detail/StoreWorld.cc | 1 - zypp/solver/detail/StoreWorld.h | 2 +- zypp/solver/detail/World.h | 2 +- zypp/solver/detail/XmlParser.cc | 3 +- 15 files changed, 85 insertions(+), 69 deletions(-) diff --git a/zypp/solver/detail/Dependency.cc b/zypp/solver/detail/Dependency.cc index 0ee2d03..06292ad 100644 --- a/zypp/solver/detail/Dependency.cc +++ b/zypp/solver/detail/Dependency.cc @@ -241,7 +241,7 @@ namespace zypp //--------------------------------------------------------------------------- - Dependency::Dependency (const string & name, const Relation & relation, const Kind & kind, + Dependency::Dependency (const string & name, const Relation & relation, const Resolvable::Kind & kind, constChannelPtr channel, int epoch, const string & version, const string & release, const Arch * arch, bool or_dep, bool pre_dep) @@ -254,7 +254,7 @@ namespace zypp } - Dependency::Dependency (const string & name, const Relation & relation, const Kind & kind, + Dependency::Dependency (const string & name, const Relation & relation, const Resolvable::Kind & kind, constChannelPtr channel, constEditionPtr edition, bool or_dep, bool pre_dep) : Spec (kind, name, edition) , _relation (relation) @@ -266,7 +266,7 @@ namespace zypp Dependency::Dependency (OrDependencyPtr or_dep) - : Spec (Kind::Package, or_dep->name()) + : Spec (ResTraits::kind, or_dep->name()) , _relation (Relation::Any) , _channel (NULL) , _or_dep (false) @@ -277,7 +277,7 @@ namespace zypp Dependency::Dependency (constXmlNodePtr node) - : Spec (Kind::Package, "") + : Spec (ResTraits::kind, "") , _relation (Relation::Any) , _channel (new Channel(CHANNEL_TYPE_ANY)) , _or_dep (false) diff --git a/zypp/solver/detail/Dependency.h b/zypp/solver/detail/Dependency.h index 3511dd3..3cc6d81 100644 --- a/zypp/solver/detail/Dependency.h +++ b/zypp/solver/detail/Dependency.h @@ -32,6 +32,7 @@ #include #include #include +#include ///////////////////////////////////////////////////////////////////////// namespace zypp @@ -131,7 +132,7 @@ namespace zypp Dependency (const std::string & name, const Relation & relation, - const Kind & kind = Kind::Package, + const Resolvable::Kind & kind = ResTraits::kind, constChannelPtr channel = NULL, int epoch = -1, const std::string & version = "", @@ -142,7 +143,7 @@ namespace zypp Dependency (const std::string & name, const Relation & relation, - const Kind & kind = Kind::Package, + const Resolvable::Kind & kind = ResTraits::kind, constChannelPtr channel = NULL, constEditionPtr edition = NULL, bool or_dep = false, diff --git a/zypp/solver/detail/Match.cc b/zypp/solver/detail/Match.cc index 1d75832..dca1af3 100644 --- a/zypp/solver/detail/Match.cc +++ b/zypp/solver/detail/Match.cc @@ -24,6 +24,7 @@ #include #include + ///////////////////////////////////////////////////////////////////////// namespace zypp { /////////////////////////////////////////////////////////////////////// @@ -172,7 +173,7 @@ namespace zypp DependencyPtr dependency; bool check; - dependency = new Dependency (resItem->name(), Relation::Equal, Kind::Package, resItem->channel(), resItem->edition()); + dependency = new Dependency (resItem->name(), Relation::Equal, ResTraits::kind, resItem->channel(), resItem->edition()); check = _dependency->verifyRelation (dependency); return check; } diff --git a/zypp/solver/detail/OrDependency.cc b/zypp/solver/detail/OrDependency.cc index 7bb40c2..9c480e1 100644 --- a/zypp/solver/detail/OrDependency.cc +++ b/zypp/solver/detail/OrDependency.cc @@ -248,7 +248,7 @@ namespace zypp } - DependencyPtr dep = new Dependency (name, relation, Kind::Package, NULL, edition); + DependencyPtr dep = new Dependency (name, relation, ResTraits::kind, NULL, edition); out_dep.push_back (dep); free ((void *)name); diff --git a/zypp/solver/detail/Package.cc b/zypp/solver/detail/Package.cc index d2015bb..3268d0b 100644 --- a/zypp/solver/detail/Package.cc +++ b/zypp/solver/detail/Package.cc @@ -242,7 +242,7 @@ namespace zypp //--------------------------------------------------------------------------- Package::Package (constChannelPtr channel) - : ResItem (Kind::Package, "") + : ResItem (ResTraits::kind, "") , _section (NULL) , _pretty_name ("") , _summary ("") @@ -258,7 +258,7 @@ namespace zypp Package::Package (constXmlNodePtr node, constChannelPtr channel) - : ResItem (Kind::Package, "") + : ResItem (ResTraits::kind, "") , _section (NULL) , _pretty_name ("") , _summary ("") diff --git a/zypp/solver/detail/PackageUpdate.cc b/zypp/solver/detail/PackageUpdate.cc index 154b659..4f139b0 100644 --- a/zypp/solver/detail/PackageUpdate.cc +++ b/zypp/solver/detail/PackageUpdate.cc @@ -134,7 +134,7 @@ namespace zypp //--------------------------------------------------------------------------- PackageUpdate::PackageUpdate (const string & name) - : Spec (Kind::Package, name) + : Spec (ResTraits::kind, name) , _package (NULL) , _package_url (NULL) , _package_size (0) @@ -152,7 +152,7 @@ namespace zypp PackageUpdate::PackageUpdate (constXmlNodePtr node, PackagePtr package) - : Spec (Kind::Package, package->name()) + : Spec (ResTraits::kind, package->name()) , _package (NULL) , _package_url (NULL) , _package_size (0) diff --git a/zypp/solver/detail/QueueItemConflict.cc b/zypp/solver/detail/QueueItemConflict.cc index d76b5f1..3770e52 100644 --- a/zypp/solver/detail/QueueItemConflict.cc +++ b/zypp/solver/detail/QueueItemConflict.cc @@ -198,7 +198,7 @@ namespace zypp UpgradeCandidateInfo upgrade_info; upgrade_info.context = info->context; - DependencyPtr maybe_upgrade_dep = new Dependency (resItem->name(), Relation::Any, Kind::Package, new Channel (CHANNEL_TYPE_NONSYSTEM), -1); + DependencyPtr maybe_upgrade_dep = new Dependency (resItem->name(), Relation::Any, ResTraits::kind, new Channel (CHANNEL_TYPE_NONSYSTEM), -1); info->world->foreachProvidingResItem (maybe_upgrade_dep, upgrade_candidates_cb, (void *)&upgrade_info); #endif diff --git a/zypp/solver/detail/ResItem.cc b/zypp/solver/detail/ResItem.cc index 36a3bcb..b88fd6b 100644 --- a/zypp/solver/detail/ResItem.cc +++ b/zypp/solver/detail/ResItem.cc @@ -23,6 +23,13 @@ #include #include +#include +#include +#include +#include +#include +#include + ///////////////////////////////////////////////////////////////////////// namespace zypp @@ -131,7 +138,7 @@ namespace zypp //--------------------------------------------------------------------------- - ResItem::ResItem (const Kind & kind, const string & name, int epoch, const string & version, const string & release, const Arch * arch) + ResItem::ResItem (const Resolvable::Kind & kind, const string & name, int epoch, const string & version, const string & release, const Arch * arch) :Spec (kind, name, epoch, version, release, arch) , _channel (false) , _installed (false) @@ -141,8 +148,50 @@ namespace zypp , _installed_size (0) { + string archString = "i386"; + + if (arch != NULL) + { + archString = arch->asString(); + } + zypp::Edition _edition( version, release, zypp::str::numstring(epoch) ); + zypp::Arch _arch( archString ); + + // create the ResObject + shared_ptr pkgImpl; + zypp::Package::Ptr pkg( zypp::detail::makeResolvableAndImpl( name, _edition, _arch, + pkgImpl ) ); + _resObject = pkg; + +// shared_ptr resObjectImpl; +// ResObject::Ptr resObject( zypp::detail::makeResolvableAndImpl( _name, _edition, _arch, +// resObjectImpl ) ); +// +// _resObject = resObject; + + + } + + ResItem::ResItem(const ResObject::Ptr & resObject) + :Spec (ResTraits::kind, "") + ,_channel (false) + , _installed (false) + , _local (false) + , _locked (false) + , _file_size (0) + , _installed_size (0) + { + _resObject = resObject; + if (_resObject != NULL) + { + setVersion(resObject->edition().version()); + setArch(resObject->arch().asString()); + setEpoch(resObject->edition().epoch()); + setRelease(resObject->edition().release()); + setKind(resObject->kind()); + setName(resObject->name()); + } } - ResItem::~ResItem() { diff --git a/zypp/solver/detail/ResItem.h b/zypp/solver/detail/ResItem.h index f9bccf9..79849bc 100644 --- a/zypp/solver/detail/ResItem.h +++ b/zypp/solver/detail/ResItem.h @@ -62,6 +62,7 @@ namespace zypp REP_BODY(ResItem); private: + ResObject::Ptr _resObject; constChannelPtr _channel; bool _installed; @@ -88,8 +89,9 @@ namespace zypp public: - ResItem(const Kind & kind, const std::string & name, int epoch = -1, const std::string & version = "", const std::string & release = "", const Arch * arch = Arch::Unknown); - + ResItem(const Resolvable::Kind & kind, const std::string & name, int epoch = -1, const std::string & version = "", const std::string & release = "", const Arch * arch = Arch::Unknown); + + ResItem(const ResObject::Ptr & resObject); ResItem(const XmlNodePtr node); virtual ~ResItem(); diff --git a/zypp/solver/detail/Spec.cc b/zypp/solver/detail/Spec.cc index 593c612..8997fe5 100644 --- a/zypp/solver/detail/Spec.cc +++ b/zypp/solver/detail/Spec.cc @@ -41,14 +41,6 @@ namespace zypp //--------------------------------------------------------------------------- UstringHash Name::_nameHash; - UstringHash Kind::_kindHash; - const Kind & Kind::Unknown = Kind(""); - const Kind & Kind::Package = Kind("package"); - const Kind & Kind::Patch = Kind("patch"); - const Kind & Kind::Script = Kind("script"); - const Kind & Kind::Message = Kind("message"); - const Kind & Kind::Selection = Kind("selection"); - const Kind & Kind::Product = Kind("product"); //--------------------------------------------------------------------------- @@ -65,8 +57,8 @@ namespace zypp string res; if (full - || (spec.kind() != Kind::Package - && spec.kind() != Kind::Unknown)) { + || (spec.kind() != "Package" + && spec.kind() != "ResObject")) { res += spec.kind().asString(); res += ":"; } @@ -99,7 +91,7 @@ namespace zypp //--------------------------------------------------------------------------- - Spec::Spec (const Kind & kind, const string & name, constEditionPtr edition) + Spec::Spec (const Resolvable::Kind & kind, const string & name, constEditionPtr edition) : _kind (kind) , _name (Name (name)) , _edition (edition == NULL ? new Edition() : edition->copy()) @@ -107,7 +99,7 @@ namespace zypp } - Spec::Spec ( const Kind & kind, const string & name, int epoch, const string & version, const string & release, const Arch * arch) + Spec::Spec ( const Resolvable::Kind & kind, const string & name, int epoch, const string & version, const string & release, const Arch * arch) : _kind (kind) , _name (Name (name)) , _edition (new Edition (epoch, version, release, arch)) @@ -116,7 +108,7 @@ namespace zypp Spec::Spec (constXmlNodePtr node) - : _kind (Kind::Unknown) + : _kind (ResTraits::kind) // Fixme: should be type like unknown { fprintf (stderr, "Spec::Spec (constXmlNodePtr node)\nNot implemented\n"); abort(); diff --git a/zypp/solver/detail/Spec.h b/zypp/solver/detail/Spec.h index 0650177..51e6838 100644 --- a/zypp/solver/detail/Spec.h +++ b/zypp/solver/detail/Spec.h @@ -32,6 +32,7 @@ #include #include #include +#include ///////////////////////////////////////////////////////////////////////// namespace zypp @@ -61,36 +62,6 @@ class Name : public Ustring { explicit Name( const std::string & n = "" ) : Ustring( _nameHash, n ) {} }; -/////////////////////////////////////////////////////////////////// - - -/////////////////////////////////////////////////////////////////// -// -// CLASS NAME : Kind -/** - * A spec kind (package, patch, ...) - **/ - -class Kind : public Ustring { - - private: - - static UstringHash _kindHash; - - explicit Kind( const std::string & t = "" ) : Ustring( _kindHash, t ) {} - - public: - - static const Kind & Unknown; - static const Kind & Package; - static const Kind & Patch; - static const Kind & Script; - static const Kind & Message; - static const Kind & Selection; - static const Kind & Product; -}; - -/////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// @@ -104,21 +75,21 @@ class Kind : public Ustring { REP_BODY(Spec); private: - Kind _kind; + Resolvable::Kind _kind; Name _name; EditionPtr _edition; public: typedef std::list SpecList; - Spec( const Kind & kind, + Spec( const Resolvable::Kind & kind, const std::string & name, int epoch = -1, const std::string & version = "", const std::string & release = "", const Arch * arch = Arch::Unknown); - Spec (const Kind & kind, const std::string & name, constEditionPtr edition); + Spec (const Resolvable::Kind & kind, const std::string & name, constEditionPtr edition); Spec (constXmlNodePtr node); @@ -152,8 +123,8 @@ class Kind : public Ustring { void setArch (const Arch * arch) { _edition->setArch (arch); } void setArch (const std::string & arch) { _edition->setArch (arch); } - const Kind & kind() const { return _kind; } - void setKind (const Kind & kind) { _kind = kind; } + const Resolvable::Kind & kind() const { return _kind; } + void setKind (const Resolvable::Kind & kind) { _kind = kind; } const std::string name() const { return _name; } void setName (const std::string & name) { _name = Name(name.c_str()); } diff --git a/zypp/solver/detail/StoreWorld.cc b/zypp/solver/detail/StoreWorld.cc index 10667bc..77e58e0 100644 --- a/zypp/solver/detail/StoreWorld.cc +++ b/zypp/solver/detail/StoreWorld.cc @@ -79,7 +79,6 @@ namespace zypp StoreWorld::StoreWorld (WorldType type) : World (type) - , _resItem_kind(Kind::Unknown) { } diff --git a/zypp/solver/detail/StoreWorld.h b/zypp/solver/detail/StoreWorld.h index 402cfa4..cc01cf7 100644 --- a/zypp/solver/detail/StoreWorld.h +++ b/zypp/solver/detail/StoreWorld.h @@ -34,6 +34,7 @@ #include #include + ///////////////////////////////////////////////////////////////////////// namespace zypp { /////////////////////////////////////////////////////////////////////// @@ -61,7 +62,6 @@ namespace zypp ResItemAndDependencyTable _conflicts_by_name; PackmanPtr _packman; - Kind _resItem_kind; ChannelList _channels; diff --git a/zypp/solver/detail/World.h b/zypp/solver/detail/World.h index df985bc..6861d6d 100644 --- a/zypp/solver/detail/World.h +++ b/zypp/solver/detail/World.h @@ -67,7 +67,7 @@ namespace zypp #if 0 typedef bool (*WorldSyncFn) (constWorldPtr world, constChannelPtr channel); - typedef PackmanPtr (*WorldPackmanFn) (constWorldPtr world, const Kind & kind); + typedef PackmanPtr (*WorldPackmanFn) (constWorldPtr world, const Resolvable::Kind & kind); typedef void (*WorldSpewFn) (constWorldPtr world, FILE *out); typedef constWorldPtr (*WorldDupFn) (constWorldPtr world); diff --git a/zypp/solver/detail/XmlParser.cc b/zypp/solver/detail/XmlParser.cc index 8d06fd3..323cae9 100644 --- a/zypp/solver/detail/XmlParser.cc +++ b/zypp/solver/detail/XmlParser.cc @@ -29,6 +29,7 @@ #include #include +#include ///////////////////////////////////////////////////////////////////////// namespace zypp @@ -78,7 +79,7 @@ namespace zypp /* FIXME: should get Channel from XML */ /* FIXME: should get Kind from XML */ - return new Dependency (name, relation, Kind::Package, new Channel(CHANNEL_TYPE_ANY), epoch, version, release, Arch::create(arch)); + return new Dependency (name, relation, ResTraits::kind, new Channel(CHANNEL_TYPE_ANY), epoch, version, release, Arch::create(arch)); } -- 2.7.4