]> www.ginac.de Git - ginac.git/blobdiff - ginac/lorentzidx.cpp
GINAC_DECLARE_REGISTERED_CLASS declares duplicate() and compare_same_type(),
[ginac.git] / ginac / lorentzidx.cpp
index 6a367be65c1deec6068f2e08546de67dbec7efbf..ca88d94a5ca5ddc4f3ab3edc1fc791df5830838c 100644 (file)
@@ -171,12 +171,6 @@ void lorentzidx::archive(archive_node &n) const
 
 // public
 
-basic * lorentzidx::duplicate() const
-{
-       debugmsg("lorentzidx duplicate",LOGLEVEL_DUPLICATE);
-       return new lorentzidx(*this);
-}
-
 void lorentzidx::printraw(std::ostream & os) const
 {
        debugmsg("lorentzidx printraw",LOGLEVEL_PRINT);
@@ -260,6 +254,18 @@ bool lorentzidx::info(unsigned inf) const
        return inherited::info(inf);
 }
 
+int lorentzidx::compare_same_type(const basic & other) const
+{
+       GINAC_ASSERT(is_of_type(other, lorentzidx));
+       const lorentzidx &o = static_cast<const lorentzidx &>(other);
+
+       if (orthogonal_only != o.orthogonal_only)
+               return orthogonal_only ? -1 : 1;
+       if (dim_parallel_space != o.dim_parallel_space)
+               return dim_parallel_space < o.dim_parallel_space ? -1 : 1;
+       return inherited::compare_same_type(other);
+}
+
 //////////
 // non-virtual functions in this class
 //////////