#include "UNKNOWN.h"



int Cd_graph::check_first_class(  )
{
  DEM_TRACE("Cd_graph","int Cd_graph::check_first_class()");
  int return_val =  1 ;

  this->check_first_class_( return_val );
  return return_val;
}
//  Cd_graph  = <adjacencies > Adjacency_Nlist 
//            [ <terminal_sets > Vertex_Comma_list  ] .
void Cd_graph::check_first_class_( int& return_val )
{
  DEM_TRACE("Cd_graph","void Cd_graph::check_first_class_(int& return_val)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 cout << endl
                     << "Checking that the first production is an" << endl
                     << "\tunparameterized construction production ..."
                     << endl;
              

  // outgoing calls
  // construction edge prefix wrappers
  this->get_adjacencies()->check_first_class_( return_val );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency_Nlist  ~ Adjacency  { Adjacency  }. .
void Adjacency_Nlist::check_first_class_( int& return_val )
{
  DEM_TRACE("Adjacency_Nlist","void Adjacency_Nlist::check_first_class_(int& return_val)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 Adjacency_list_iterator next_Adjacency(*this);
                if (!next_Adjacency()->check_first_class1())
                  return_val = 0;
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out
}

int Adjacency::check_first_class1(  )
{
  DEM_TRACE("Adjacency","int Adjacency::check_first_class1()");
  int return_val =  1 ;

  this->check_first_class1_( return_val );
  return return_val;
}
//  Adjacency  = <source > Vertex 
//             [ <parameters > Vertex_Comma_list  ] 
//            <ns > Neighbors 
//            "." 
//            *l.
void Adjacency::check_first_class1_( int& return_val )
{
  DEM_TRACE("Adjacency","void Adjacency::check_first_class1_(int& return_val)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_ns()->check_first_class1_( return_val );
  // construction edge suffix wrappers

  // suffix class wrappers
 if (this->get_parameters() != NULL) return_val = 0;
                if (return_val == 0) {
                  cout << endl 
                       << "The first production of your class dictionary has to"
                       << endl
                       << "be an unparameterized production. Your first production"
                       << endl;
                  this->g_print();
                  cout << "  is not an unparameterized construction production."
                       << endl
                       << "Add for example" << endl
                       << "\t\tExample = <example> ";
                  this->get_source()->g_print();
                  if (this->get_parameters() != NULL) {
                    cout << "(";
                    this->get_parameters()->g_print();
                    cout << ")";
                  }
                  cout << " ." << endl << "as your first production." << endl;
                }
              

  // assignments for carrying out
}

//  Neighbors  : Neighbors_wc   |
//            Repetit_n 
//           *common* .
void Neighbors::check_first_class1_( int& return_val )
{
  DEM_TRACE("Neighbors","void Neighbors::check_first_class1_(int& return_val)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Neighbors_wc  : Construct_ns   |
//               Alternat_ns 
//           *common* +
//                    <construct_ns > Any_vertex_List 
//                    -.
void Neighbors_wc::check_first_class1_( int& return_val )
{
  DEM_TRACE("Neighbors_wc","void Neighbors_wc::check_first_class1_(int& return_val)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors_wc",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Alternat_ns  = ":" 
//              +
//              <alternat_ns > Term_Bar_list 
//              -
//               [ <common > Common  ] .
void Alternat_ns::check_first_class1_( int& return_val )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::check_first_class1_(int& return_val)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 return_val = 0; 
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out


}

//  Repetit_n  = "~" 
//            <sandwiched > Kernel_Sandwich .
void Repetit_n::check_first_class1_( int& return_val )
{
  DEM_TRACE("Repetit_n","void Repetit_n::check_first_class1_(int& return_val)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 return_val = 0; 
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out

}


