/** @file lorentzidx.cpp
*
- * Implementation of GiNaC's lorentz indices. */
+ * Implementation of GiNaC's Lorentz indices. */
/*
* GiNaC Copyright (C) 1999-2001 Johannes Gutenberg University Mainz, Germany
#include "utils.h"
#include "debugmsg.h"
-#ifndef NO_NAMESPACE_GINAC
namespace GiNaC {
-#endif // ndef NO_NAMESPACE_GINAC
GINAC_IMPLEMENT_REGISTERED_CLASS(lorentzidx, idx)
tinfo_key = TINFO_lorentzidx;
}
-lorentzidx::~lorentzidx()
-{
- debugmsg("lorentzidx destructor",LOGLEVEL_DESTRUCT);
- destroy(false);
-}
-
-lorentzidx::lorentzidx(const lorentzidx & other)
-{
- debugmsg("lorentzidx copy constructor",LOGLEVEL_CONSTRUCT);
- copy(other);
-}
-
-const lorentzidx & lorentzidx::operator=(const lorentzidx & other)
-{
- debugmsg("lorentzidx operator=",LOGLEVEL_ASSIGNMENT);
- if (this != &other) {
- destroy(true);
- copy(other);
- }
- return *this;
-}
-
// protected
void lorentzidx::copy(const lorentzidx & other)
// 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);
return inherited::info(inf);
}
-//////////
-// new virtual functions which can be overridden by derived classes
-//////////
-
-// none
+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
return i_copy;
}
-//////////
-// static member variables
-//////////
-
-// none
-
//////////
// global functions
//////////
return *d;
}
-//////////
-// global constants
-//////////
-
-const lorentzidx some_lorentzidx;
-const std::type_info & typeid_lorentzidx = typeid(some_lorentzidx);
-
-#ifndef NO_NAMESPACE_GINAC
} // namespace GiNaC
-#endif // ndef NO_NAMESPACE_GINAC