/** @file idx.h
*
- * Interface to GiNaC's indices.
- *
+ * Interface to GiNaC's indices. */
+
+/*
* GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
#define __GINAC_IDX_H__
#include <string>
-#include <vector>
+//#include <vector>
#include <ginac/basic.h>
+#include <ginac/ex.h>
+
+#ifndef NO_GINAC_NAMESPACE
+namespace GiNaC {
+#endif // ndef NO_GINAC_NAMESPACE
class idx : public basic
{
extern const idx some_idx;
extern type_info const & typeid_idx;
-// macros
-
-#define ex_to_idx(X) (static_cast<idx const &>(*(X).bp))
+// utility functions
+inline const idx &ex_to_idx(const ex &e)
+{
+ return static_cast<const idx &>(*e.bp);
+}
-// other functions
+// global functions
-typedef vector<ex> exvector;
+// typedef vector<ex> exvector;
int canonicalize_indices(exvector & iv, bool antisymmetric=false);
exvector idx_intersect(exvector const & iv1, exvector const & iv2);
exvector const & idxv_co);
unsigned count_index(ex const & e, ex const & i);
+#ifndef NO_GINAC_NAMESPACE
+} // namespace GiNaC
+#endif // ndef NO_GINAC_NAMESPACE
+
#endif // ndef __GINAC_IDX_H__