print_func<print_dflt>(&clifford::do_print_dflt).
print_func<print_latex>(&clifford::do_print_latex))
-const tinfo_static_t clifford::return_type_tinfo_static[256] = {{}};
-
GINAC_IMPLEMENT_REGISTERED_CLASS_OPT(diracone, tensor,
print_func<print_dflt>(&diracone::do_print).
print_func<print_latex>(&diracone::do_print_latex))
clifford::clifford() : representation_label(0), metric(0), commutator_sign(-1)
{
- tinfo_key = &clifford::tinfo_static;
}
DEFAULT_CTOR(diracone)
* @see dirac_ONE */
clifford::clifford(const ex & b, unsigned char rl) : inherited(b), representation_label(rl), metric(0), commutator_sign(-1)
{
- tinfo_key = &clifford::tinfo_static;
}
/** Construct object with one Lorentz index. This constructor is for internal
clifford::clifford(const ex & b, const ex & mu, const ex & metr, unsigned char rl, int comm_sign) : inherited(b, mu), representation_label(rl), metric(metr), commutator_sign(comm_sign)
{
GINAC_ASSERT(is_a<varidx>(mu));
- tinfo_key = &clifford::tinfo_static;
}
clifford::clifford(unsigned char rl, const ex & metr, int comm_sign, const exvector & v, bool discardable) : inherited(not_symmetric(), v, discardable), representation_label(rl), metric(metr), commutator_sign(comm_sign)
{
- tinfo_key = &clifford::tinfo_static;
}
clifford::clifford(unsigned char rl, const ex & metr, int comm_sign, std::auto_ptr<exvector> vp) : inherited(not_symmetric(), vp), representation_label(rl), metric(metr), commutator_sign(comm_sign)
{
- tinfo_key = &clifford::tinfo_static;
+}
+
+return_type_t clifford::return_type_tinfo() const
+{
+ return make_return_type_t<clifford>(representation_label);
}
//////////
// archiving
//////////
-clifford::clifford(const archive_node & n, lst & sym_lst) : inherited(n, sym_lst)
+void clifford::read_archive(const archive_node& n, lst& sym_lst)
{
+ inherited::read_archive(n, sym_lst);
unsigned rl;
n.find_unsigned("label", rl);
representation_label = rl;
n.add_unsigned("commutator_sign+1", commutator_sign+1);
}
-DEFAULT_UNARCHIVE(clifford)
-DEFAULT_ARCHIVING(diracone)
-DEFAULT_ARCHIVING(cliffordunit)
-DEFAULT_ARCHIVING(diracgamma)
-DEFAULT_ARCHIVING(diracgamma5)
-DEFAULT_ARCHIVING(diracgammaL)
-DEFAULT_ARCHIVING(diracgammaR)
+GINAC_BIND_UNARCHIVER(clifford);
+GINAC_BIND_UNARCHIVER(diracone);
+GINAC_BIND_UNARCHIVER(diracgamma);
+GINAC_BIND_UNARCHIVER(diracgamma5);
+GINAC_BIND_UNARCHIVER(diracgammaL);
+GINAC_BIND_UNARCHIVER(diracgammaR);
ex clifford::get_metric(const ex & i, const ex & j, bool symmetrised) const
return clifford(e, varidx(0, dim), indexed((new minkmetric)->setflag(status_flags::dynallocated), symmetric2(), xi, chi), rl);
}
-/** Check whether a given tinfo key (as returned by return_type_tinfo()
- * is that of a clifford object (with an arbitrary representation label). */
-bool is_clifford_tinfo(tinfo_t ti)
-{
- p_int start_loc=(p_int)&clifford::return_type_tinfo_static;
- return (p_int)ti>=start_loc && (p_int)ti<start_loc+256;
-}
-
/** Extract representation label from tinfo key (as returned by
* return_type_tinfo()). */
-static unsigned char get_representation_label(tinfo_t ti)
+static unsigned char get_representation_label(const return_type_t& ti)
{
- return (unsigned char)((p_int)ti-(p_int)&clifford::return_type_tinfo_static);
+ return (unsigned char)ti.rl;
}
/** Take trace of a string of an even number of Dirac gammas given a vector