// global functions
-inline const symmetry &ex_to_symmetry(const ex &e)
-{
- return static_cast<const symmetry &>(*e.bp);
-}
-
-inline symmetry &ex_to_nonconst_symmetry(const ex &e)
-{
- return static_cast<symmetry &>(*e.bp);
-}
inline symmetry sy_none(void) { return symmetry(); }
inline symmetry sy_none(const symmetry &c1, const symmetry &c2) { return symmetry(symmetry::none, c1, c2); }
return symmetrize(e, v.begin(), v.end());
}
+// utility functions
+
+/** Specialization of is_exactly_a<symmetry>(obj) for symmetry objects. */
+template<> inline bool is_exactly_a<symmetry>(const basic & obj)
+{
+ return obj.tinfo()==TINFO_symmetry;
+}
+
} // namespace GiNaC
#endif // ndef __GINAC_SYMMETRY_H__