// GenFem - A high-level finite element library
// Copyright (C) 2010-2026 Eric Bechet
//
// See the LICENSE file for license information and contributions.
// Please report all bugs and problems to <bechet@cadxfem.org>.
//
// Initial design: Frederic Duboeuf (rev.577)


#ifndef _GENSUPPORT_H_
#define _GENSUPPORT_H_

#include "genGroupOfElements.h"

class genSupport
{
  public :
    // tag for the dofManager
    int tag;
    // dim for this field
    int dim;
  protected :
    // support for this field
    genGroupOfElements* g;
    bool own;

  public :
    genSupport () : tag(0), dim(-1), g(0), own(true) {}
    genSupport (const genSupport &s) : tag(s.tag), dim(s.dim), g(s.g), own(false) {}
    virtual ~genSupport() {if ((g!=NULL) && own) delete g;}
    genGroupOfElements* group()
    {
      if (g==NULL) {g = new genGroupOfElements(dim, tag); own=true;} return g;
    }
    genGroupOfElements::elementContainer::const_iterator begin()
    {
      if (g==NULL) {g = new genGroupOfElements(dim, tag); own=true;} return g->begin();
    }
    genGroupOfElements::elementContainer::const_iterator end()
    {
       if (g==NULL) {g = new genGroupOfElements(dim, tag); own=true;} return g->end();
    }
};


#endif// _GENSUPPORT_H_
