#ifndef __elem_types_mesh_hpp__
#define __elem_types_mesh_hpp__

namespace SpaMesh
{
  enum ElemTypesMesh{
    node  = 0,
    line  = 1,
    tri   = 2,
    quad  = 3,
    tet   = 4,
    pyram = 5,
    prism = 6,
    hex   = 7,
    NumberOfElemTypesMesh = 8
  };
  
  /** prefix increment operator for MBEntityType */
  inline ElemTypesMesh & operator++(ElemTypesMesh &type)
  {
    return type = static_cast<ElemTypesMesh>(type+1);
  }
  
  /** postfix increment operator for MBEntityType */
  inline ElemTypesMesh operator++(ElemTypesMesh &type, int)
  {
    ElemTypesMesh oldval = type;
    ++type;
    return oldval;
  }
  
  /** prefix increment operator for MBEntityType */
  inline ElemTypesMesh & operator--(ElemTypesMesh &type)
  {
    return type = static_cast<ElemTypesMesh>(type-1);
  }
  
  /** postfix increment operator for MBEntityType */
  inline ElemTypesMesh operator--(ElemTypesMesh &type, int)
  {
    ElemTypesMesh oldval = type;
    --type;
    return oldval;
  }
};

#endif
