Index: kernel/F5cData.cc
===================================================================
--- kernel/F5cData.cc	(revision f7feb7574af32456270414d62231a335ffa15060)
+++ kernel/F5cData.cc	(revision e44367a0d9873cda8ae1ea9e24d543de7766e7aa)
@@ -2,7 +2,8 @@
  * \file F5cData.cc
  * \author Christian Eder
- * \brief This file includes the inlined methods of the classes CPair and Rule.
- * \details This file include the inlined methods of the class CPair,
- * representing critical pairs in the F5C Algorithm, and the class Rule,
+ * \brief This file includes the inlined methods of the classes \c CPair
+ * and \c Label.
+ * \details This file includes the inlined methods of the class \c CPair,
+ * representing critical pairs in the F5C Algorithm, and the class \c Label,
  * representing the labels in the F5C Algorithm. In this file the handling of
  * these data types is defined.
@@ -29,43 +30,35 @@
 #include "F5cLists.h"
 
-/*
- * CONSTRUCTOR / DESTRUCTOR of class Label
- */
 
-Label::Label(int* expVec) 
-{
+// IMPLEMENTATIONS OF METHODS OF CLASS LABEL
+
+
+// constructor / destructor of class Label
+Label::Label(unsigned int* expVec) {
   m_pExpVec       = expVec;
   m_nShortExpVec  = computeShortExpVec(m_pExpVec);
 }
 
-Label::~Label() 
-{
+Label::~Label() {
   delete &m_nShortExpVec;
   delete [] m_pExpVec;
 }
 
-/*
- * GETTER of class Label
- */
-inline int* Label::getExpVec() 
-{
+
+// GETTER of class Label
+unsigned int* Label::getExpVec() {
   return m_pExpVec;
 }
 
-inline unsigned long Label::getShortExpVec() 
-{
+unsigned long Label::getShortExpVec() {
   return m_nShortExpVec;
 }
 
-/*
- * SETTER of class Label
- */
+
+// SETTER of class Label
 
 
-/*
- * MISC of class Label
- */
-inline unsigned long Label::computeShortExpVec(int* expVec) 
-{
+// MISC of class Label
+unsigned long Label::computeShortExpVec(unsigned int* expVec) {
   //if (p == NULL) return 0;
   unsigned long ev = 0; // short exponent vector
@@ -74,15 +67,11 @@
   unsigned int i = 0, j=1;
 
-  if (n == 0)
-  {
-    if (currRing->N <2*BIT_SIZEOF_LONG)
-    {
+  if (n == 0) {
+    if (currRing->N <2*BIT_SIZEOF_LONG) {
       n=1;
       m1=0;
     }
-    else
-    {
-      for (; j<=(unsigned long) currRing->N; j++)
-      {
+    else {
+      for (; j<=(unsigned long) currRing->N; j++) {
         if (expVec[j] > 0) i++;
         if (i == BIT_SIZEOF_LONG) break;
@@ -93,12 +82,10 @@
     }
   }
-  else
-  {
+  else {
     m1 = (n+1)*(BIT_SIZEOF_LONG - n*currRing->N);
   }
 
   n++;
-  while (i<m1)
-  {
+  while (i<m1) {
     ev |= getBitFields(expVec[j], i, n);
     i += n;
@@ -107,6 +94,5 @@
 
   n--;
-  while (i<BIT_SIZEOF_LONG)
-  {
+  while (i<BIT_SIZEOF_LONG) {
     ev |= getBitFields(expVec[j], i, n);
     i += n;
@@ -116,12 +102,10 @@
 }
 
-inline unsigned long Label::getBitFields(int e, unsigned int s, unsigned int n)
-{
+unsigned long Label::getBitFields(unsigned int e, unsigned int s, unsigned int n) {
 #define Sy_bit_L(x)     (((unsigned long)1L)<<(x))
   unsigned int i = 0;
   unsigned long  ev = 0L;
   assume(n > 0 && s < BIT_SIZEOF_LONG);
-  do
-  {
+  do {
     assume(s+i < BIT_SIZEOF_LONG);
     if (e > (int) i) ev |= Sy_bit_L(s+i);
@@ -133,5 +117,5 @@
 }
 
-
+// END IMPLEMENTATIONS OF METHODS OF CLASS LABEL
 
 #endif
Index: kernel/F5cData.h
===================================================================
--- kernel/F5cData.h	(revision f7feb7574af32456270414d62231a335ffa15060)
+++ kernel/F5cData.h	(revision e44367a0d9873cda8ae1ea9e24d543de7766e7aa)
@@ -21,5 +21,5 @@
 class CPair;
 class Label;
-
+class PolyAndShort;
 
 /*!
@@ -34,6 +34,5 @@
   public:
 
-};
-// end CPair
+}; // end CPair
 
 
@@ -47,6 +46,6 @@
 class Label {
   private:
-    int*              m_pExpVec;
-    unsigned long     m_nShortExpVec;
+    unsigned int* m_pExpVec;
+    unsigned long m_nShortExpVec;
   public:
     /*!
@@ -55,5 +54,5 @@
      * \brief Constructor of an object of class \c Label
      */
-    Label(int* expVec);
+    Label(unsigned int* expVec);
     /*!
      * \fn ~Label();
@@ -66,5 +65,5 @@
      * \brief Getter of the \c integer vector at the address \c m_pExpVec
      */
-    inline int* getExpVec();
+    inline unsigned int* getExpVec(); 
     /*!
      * \fn static inline long getShortExpVec();
@@ -73,5 +72,5 @@
      * 
      */
-    inline unsigned long getShortExpVec();
+    inline unsigned long getShortExpVec(); 
     /*!
      * \fn static inline unsigned long computeShortExpVec(int* expVec);
@@ -84,5 +83,5 @@
      * polys as input data.
      */
-    static inline unsigned long computeShortExpVec(int* expVec);
+    inline unsigned long computeShortExpVec(unsigned int* expVec);
     /*!
      * \fn static inline unsigned long getBitFields(int e, unsigned int s,
@@ -102,8 +101,46 @@
      * polys as input data.
      */
-    static inline unsigned long getBitFields(int e, unsigned int s, unsigned int n);
-};
-// end Label
+    inline unsigned long getBitFields(unsigned int e, unsigned int s, unsigned int n);
+}; // end Label
 
+/*!
+ * \class PolyAndShort
+ * \author Christian Eder
+ * \brief This is the data structure of a polynomial together with the short
+ * exponent vector of its leading monomial in F5C
+ * \details
+ */
+class PolyAndShort {
+  private:
+    poly          m_poly;
+    unsigned long m_nShortExpVec;
+  public:
+    /*!
+     * \fn PolyAndShort(poly p);
+     * \param[in] p The polynomial to be stored
+     * \brief Constructor of an object of class \c PolyAndShort
+     * \details Constructor of an object of class \c PolyAndShort used when
+     * inserting an element generating the input ideal \c I of the F5C Algorithm
+     */
+    PolyAndShort(poly p);
+    /*!
+     * \fn ~Label();
+     * \brief Destructor of an object of class \c Label
+     */
+    ~PolyAndShort();
+    /*!
+     * \fn static inline int getExpVec();
+     * \return The first entry of the \c integer vector at the address \c m_pExpVec
+     * \brief Getter of the \c integer vector at the address \c m_pExpVec
+     */
+    inline unsigned int* getExpVec(); 
+    /*!
+     * \fn static inline long getShortExpVec();
+     * \return The short exponent vector \c m_nShortExpVec of the label
+     * \brief Getter of the \code unsigned long m_nShortExpVec \endcode
+     * 
+     */
+
+}; // end LPoly
 #endif
 // HAVE_F5C
Index: kernel/f5c.cc
===================================================================
--- kernel/f5c.cc	(revision f7feb7574af32456270414d62231a335ffa15060)
+++ kernel/f5c.cc	(revision e44367a0d9873cda8ae1ea9e24d543de7766e7aa)
@@ -26,5 +26,21 @@
 */
 ideal f5cMain(ideal id, ring r) {
-    return id;
+  Print("SHORT EXP VECTOR 1:  %ld\n", pGetShortExpVector(id->m[0]));
+  int* expVec   = new int[(r->N)+1];
+  pGetExpV(id->m[0],expVec);
+  Print("EXP VECTOR 1: %d\n",expVec[1]);
+  Label* label  = new Label(expVec);
+  Print("EXP VECTOR 2: %d\n", label->getExpVec()[1]);
+  Print("SHORT EXP VECTOR 2:  %ld\n", label->getShortExpVec());
+  //Print("%ld\n", label->computeShortExpVec(expVec)); 
+  Print("SHORT EXP VECTOR 1:  %ld\n", pGetShortExpVector(id->m[1]));
+  //int* expVec   = new int[(r->N)+1];
+  pGetExpV(id->m[1],expVec);
+  Print("EXP VECTOR 1: %d\n",expVec[1]);
+  Label* label2  = new Label(expVec);
+  Print("EXP VECTOR 2: %d\n", label2->getExpVec()[1]);
+  Print("SHORT EXP VECTOR 2:  %ld\n", label2->getShortExpVec());
+
+  return id;
 }
 
Index: kernel/f5c.h
===================================================================
--- kernel/f5c.h	(revision f7feb7574af32456270414d62231a335ffa15060)
+++ kernel/f5c.h	(revision e44367a0d9873cda8ae1ea9e24d543de7766e7aa)
@@ -16,4 +16,5 @@
 
 #endif
+// HAVE_F5C
 #endif
 // F5C_HEADER
