#include "UNKNOWN.h"



int Cd_graph::expand_common( char*  filename )
{
  DEM_TRACE("Cd_graph","int Cd_graph::expand_common(char*  filename)");
  int return_val =  1 ;

  this->expand_common_( return_val, filename  );
  return return_val;
}
void Cd_graph::expand_common_( int& return_val, char*  filename )
{
  DEM_TRACE("Cd_graph","void Cd_graph::expand_common_(int& return_val,char*  filename)");
  // prefix class wrappers
 
       cout << endl << "Expanding common parts ..." << endl;
       if (filename != NULL) {
         filebuf in_file;
         if (in_file.open(filename, input) != 0)
           cout << "sem-check: " << filename << " recreated." << endl;
         else
	     in_file.close();
         ofstream OutFile(filename);
         if (!OutFile) {
           cout << "sem-check: error: cannot open file " << filename << endl;
           return_val = 0;
         }
         else {
           OutFile << "// Common-expanded class dictionary."
                   << endl << endl;
         }
         
         Cd_graph* cdg = (Cd_graph*)this->g_copy();
         
         cdg->expand_common1();
       
         cdg->g_print(OutFile);
         
         cdg->g_delete();
         
         OutFile.close();
       }
     

  // suffix class wrappers

}

//  Cd_graph  = <adjacencies > Adjacency_Nlist 
//            [ <terminal_sets > Vertex_Comma_list  ] .
void Cd_graph::expand_common1(  )
{
  DEM_TRACE("Cd_graph","void Cd_graph::expand_common1()");
  // variables for carrying in and out
  Cd_graph*  graph =  this ;

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_adjacencies()->expand_common1( graph  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency  = <source > Vertex 
//             [ <parameters > Vertex_Comma_list  ] 
//            <ns > Neighbors 
//            "." 
//            *l.
void Adjacency::expand_common1( Cd_graph*  graph )
{
  DEM_TRACE("Adjacency","void Adjacency::expand_common1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_ns()->expand_common1( graph  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Neighbors  : Neighbors_wc   |
//            Repetit_n 
//           *common* .
void Neighbors::expand_common1( Cd_graph*  graph )
{
  DEM_TRACE("Neighbors","void Neighbors::expand_common1(Cd_graph*  graph)");
#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::expand_common1( Cd_graph*  graph )
{
  DEM_TRACE("Neighbors_wc","void Neighbors_wc::expand_common1(Cd_graph*  graph)");
#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::expand_common1( Cd_graph*  graph )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::expand_common1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 if (this->get_construct_ns() != NULL) {
                  this->expand_common2(graph, this->get_construct_ns());
                  this->get_construct_ns()->g_delete();
                  this->set_construct_ns(new Any_vertex_List);
                }
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out


}

//  Adjacency_Nlist  ~ Adjacency  { Adjacency  }. .
void Adjacency_Nlist::expand_common1( Cd_graph*  graph )
{
  DEM_TRACE("Adjacency_Nlist","void Adjacency_Nlist::expand_common1(Cd_graph*  graph)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Adjacency_list_iterator	next_Adjacency(*this);
  Adjacency*		each_Adjacency;

  while ( each_Adjacency = next_Adjacency() )
  {
  // repetition edge prefix wrappers
    each_Adjacency->expand_common1( graph  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Alternat_ns  = ":" 
//              +
//              <alternat_ns > Term_Bar_list 
//              -
//               [ <common > Common  ] .
void Alternat_ns::expand_common2( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::expand_common2(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_alternat_ns()->expand_common2( graph ,  avl  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Term  : Normal   |
//       CppTerm 
//           *common* <vertex > Vertex 
//                    <moduleRef > TermRef 
//                     [ <actual_parameters > Term_Comma_list  ] .
void Term::expand_common2( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Term","void Term::expand_common2(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers
 Adjacency* adjclass = graph->find_adjacency(this->get_vertex());
                adjclass->expand_common3(graph, avl);
              


  // suffix class wrappers

  // assignments for carrying out
}

//  CppTerm  = "$" .
void CppTerm::expand_common2( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("CppTerm","void CppTerm::expand_common2(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 Adjacency* adjclass = graph->find_adjacency(this->get_vertex());
                adjclass->expand_common3(graph, avl);
              

  // outgoing calls
  // inheritance edge prefix wrappers
  if ( this->get_actual_parameters() != NULL )
  {
  // construction edge prefix wrappers
    this->get_actual_parameters()->expand_common2( graph ,  avl  );
  // construction edge prefix wrappers
  }
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Normal  = .
void Normal::expand_common2( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Normal","void Normal::expand_common2(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in


  // prefix class wrappers
 Adjacency* adjclass = graph->find_adjacency(this->get_vertex());
                adjclass->expand_common3(graph, avl);
              

  // outgoing calls
  // inheritance edge prefix wrappers
  if ( this->get_actual_parameters() != NULL )
  {
  // construction edge prefix wrappers
    this->get_actual_parameters()->expand_common2( graph ,  avl  );
  // construction edge prefix wrappers
  }
  // inheritance edge prefix wrappers

  // suffix class wrappers

  // assignments for carrying out

}

//  Term_Bar_list  ~ Term  { Term  }. .
void Term_Bar_list::expand_common2( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Term_Bar_list","void Term_Bar_list::expand_common2(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_common2( graph ,  avl  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Term_Comma_list  ~ Term  { Term  }. .
void Term_Comma_list::expand_common2( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Term_Comma_list","void Term_Comma_list::expand_common2(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  Term_list_iterator	next_Term(*this);
  Term*		each_Term;

  while ( each_Term = next_Term() )
  {
  // repetition edge prefix wrappers
    each_Term->expand_common2( graph ,  avl  );
  // repetition edge suffix wrappers
  }

  // suffix class wrappers

  // assignments for carrying out
}

//  Adjacency  = <source > Vertex 
//             [ <parameters > Vertex_Comma_list  ] 
//            <ns > Neighbors 
//            "." 
//            *l.
void Adjacency::expand_common3( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Adjacency","void Adjacency::expand_common3(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in

  // prefix class wrappers

  // outgoing calls
  // construction edge prefix wrappers
  this->get_ns()->expand_common3( graph ,  avl  );
  // construction edge suffix wrappers

  // suffix class wrappers

  // assignments for carrying out
}

//  Neighbors  : Neighbors_wc   |
//            Repetit_n 
//           *common* .
void Neighbors::expand_common3( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Neighbors","void Neighbors::expand_common3(Cd_graph*  graph,Any_vertex_List*  avl)");
#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::expand_common3( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Neighbors_wc","void Neighbors_wc::expand_common3(Cd_graph*  graph,Any_vertex_List*  avl)");
#ifndef NOTRACE
   DemTrace demTraceEmptyMethod(__FILE__,__LINE__,"Neighbors_wc",form(" at %s , ***  PREMATURELY TERMINATED *** ", this->get_type()));
#endif

}

//  Construct_ns  = "=" .
void Construct_ns::expand_common3( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Construct_ns","void Construct_ns::expand_common3(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers

                this->get_construct_ns()->
                      concatenate((Any_vertex_List*)avl->g_copy());
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out


}

//  Alternat_ns  = ":" 
//              +
//              <alternat_ns > Term_Bar_list 
//              -
//               [ <common > Common  ] .
void Alternat_ns::expand_common3( Cd_graph*  graph,Any_vertex_List*  avl )
{
  DEM_TRACE("Alternat_ns","void Alternat_ns::expand_common3(Cd_graph*  graph,Any_vertex_List*  avl)");
  // variables for carrying in and out

  // assignments for carrying in



  // prefix class wrappers
 this->expand_common2(graph, avl);
              

  // outgoing calls

  // suffix class wrappers

  // assignments for carrying out


}


