Imported Upstream version 17.14.0
[platform/upstream/libzypp.git] / zypp / Arch.h
index 3e68540..d726671 100644 (file)
@@ -91,6 +91,16 @@ namespace zypp
     */
     bool compatibleWith( const Arch & targetArch_r ) const;
 
+    /**
+     * \return the arch before noarch if it's not a multilib arch
+     * (e.g. x86_64,sparc64v,sparc64,ppc64,s390x).
+    */
+    Arch baseArch() const;
+
+    /** \overload static version. */
+    static Arch baseArch( const Arch & targetArch_r )
+    { return targetArch_r.baseArch(); }
+
     /** Arch comparison.
      * Compatible architectures are treated as \c less (i.e. <tt>i686>i386>noarch</tt>).
      * So \c Arch_noarch is the least Arch. Equivalent architectures
@@ -178,6 +188,11 @@ namespace zypp
   extern const Arch Arch_s390;
 
   /** \relates Arch */
+  extern const Arch Arch_ppc64le;
+
+  /** \relates Arch */
+  extern const Arch Arch_ppc64p7;
+  /** \relates Arch */
   extern const Arch Arch_ppc64;
   /** \relates Arch */
   extern const Arch Arch_ppc;
@@ -212,6 +227,21 @@ namespace zypp
   extern const Arch Arch_sparc;
 
   /** \relates Arch */
+  extern const Arch Arch_aarch64;
+
+  /** \relates Arch */
+  extern const Arch Arch_armv7tnhl;    /* exists? */
+  /** \relates Arch */
+  extern const Arch Arch_armv7thl;     /* exists? */
+
+  /** \relates Arch */
+  extern const Arch Arch_armv7hnl,     /* legacy: */Arch_armv7nhl;
+  /** \relates Arch */
+  extern const Arch Arch_armv7hl;
+  /** \relates Arch */
+  extern const Arch Arch_armv6hl;
+
+  /** \relates Arch */
   extern const Arch Arch_armv7l;
   /** \relates Arch */
   extern const Arch Arch_armv6l;
@@ -220,6 +250,8 @@ namespace zypp
   /** \relates Arch */
   extern const Arch Arch_armv5tel;
   /** \relates Arch */
+  extern const Arch Arch_armv5tl;
+  /** \relates Arch */
   extern const Arch Arch_armv5l;
   /** \relates Arch */
   extern const Arch Arch_armv4tl;
@@ -235,6 +267,18 @@ namespace zypp
   extern const Arch Arch_sh4;
   /** \relates Arch */
   extern const Arch Arch_sh4a;
+
+  /** \relates Arch */
+  extern const Arch Arch_m68k;
+
+  /** \relates Arch */
+  extern const Arch Arch_mips;
+  /** \relates Arch */
+  extern const Arch Arch_mipsel;
+  /** \relates Arch */
+  extern const Arch Arch_mips64;
+  /** \relates Arch */
+  extern const Arch Arch_mips64el;
   //@}
 
   ///////////////////////////////////////////////////////////////////
@@ -243,6 +287,10 @@ namespace zypp
   inline std::ostream & operator<<( std::ostream & str, const Arch & obj )
   { return str << obj.asString(); }
 
+  /** \relates Arch XML output. */
+  inline std::ostream & dumpAsXmlOn( std::ostream & str, const Arch & obj )
+  { return str << "<arch>" << obj <<  "</arch>"; }
+
   /** \name Equality based on string value. */
   //@{
   /** \relates Arch */
@@ -297,6 +345,9 @@ namespace std
 { /////////////////////////////////////////////////////////////////
   /** \relates zypp::Arch Default order for std::container based Arch::compare.*/
   template<>
+#ifdef __clang__
+constexpr
+#endif
     inline bool less<zypp::Arch>::operator()( const zypp::Arch & lhs, const zypp::Arch & rhs ) const
     { return lhs.compare( rhs ) < 0; }
   /////////////////////////////////////////////////////////////////