#ifndef __FACES_H__
#define __FACES_H__

#include <DynObject.H>
#include <Matrix.H>
#include <stdlib.h>

// External.  Users of Solid will see this.

struct Face {
   int face_length;
   int *face;
};

class Faces {
 public:
   inline Faces(int = 10);
   Faces(const Faces&, int = 10);
   ~Faces(void);

   Faces& operator=(const Faces&);

   void AddFace(const struct Face *);
   void AddFace(int, const int *);

   inline const struct Face *Face(int);
   inline int NumFaces(void);

 private:
   DynObject faces;
   int num_faces;
}

inline Faces::Faces(int inc)
:faces(sizeof(struct Face),inc)
{
   num_faces = 0;
}

inline const struct Face *Face(int f)
{
   return((const struct Face *) faces[f]);
}

inline int NumFaces(void)
{
   return(num_faces);
}
