IMPLEMENTATION MODULE MetrGStatements;

FROM YaflStatements        IMPORT Statement;
FROM YaflGC                IMPORT YaflGC;
FROM YaflExpressions       IMPORT Expression;
FROM YaflCfg               IMPORT YaflCfg, CurrentSpot;
FROM Linked                IMPORT LinkedList, StringLinkable;
FROM String                IMPORT String;
FROM YaflPredefined        IMPORT PredefItems;
FROM YaflMetImplementation IMPORT MethodImplementation;
FROM YaflDeclarations      IMPORT SingleDataItem;
FROM YaflLiteral           IMPORT IntegerLiteral;
FROM Streams               IMPORT StdOut;
FROM YaflNTList            IMPORT NTList;
FROM YaflClasses           IMPORT ClassDeclaration;
FROM YaflParamClasses      IMPORT ClassActual, ClassFormal;
FROM List IMPORT List;
IMPORT SYSTEM;

   CLASS MetrDummyStatCodeGenerator;
     INHERITS DummyStatCodeGenerator(CGcContext);
     
   END MetrDummyStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrNopStatementCodeGenerator;
     INHERITS NopStatementCodeGenerator(CGcContext);
     
   END MetrNopStatementCodeGenerator;
   
--------------------------------------------------------

   CLASS MetrAssignmentCodeGenerator;
     INHERITS AssignmentCodeGenerator(CGcContext);
      
   END MetrAssignmentCodeGenerator;
   
--------------------------------------------------------

   CLASS MetrMethInvStatCodeGenerator;
     INHERITS MethInvStatCodeGenerator(CGcContext);
     
   END MetrMethInvStatCodeGenerator;
--------------------------------------------------------

   CLASS MetrDebugStatCodeGenerator;
     INHERITS DebugStatCodeGenerator(CGcContext);
     
   END MetrDebugStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrAssertStatCodeGenerator;
     INHERITS AssertStatCodeGenerator(CGcContext);      

   END MetrAssertStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrInLineStatCodeGenerator;
     INHERITS InLineStatCodeGenerator(CGcContext);
     
   END MetrInLineStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrLoopStatCodeGenerator;
     INHERITS LoopStatCodeGenerator(CGcContext);
     
   END MetrLoopStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrIfStatCodeGenerator;
     INHERITS IfStatCodeGenerator(CGcContext); 
     
   END MetrIfStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrElsIfCodeGenerator;
     INHERITS ElsIfCodeGenerator(CGcContext);
     
   END MetrElsIfCodeGenerator;

--------------------------------------------------------

   CLASS MetrCaseStatCodeGenerator;
     INHERITS CaseStatCodeGenerator(CGcContext);
     
   END MetrCaseStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrCaseAltCodeGenerator;
     INHERITS CaseAltCodeGenerator(CGcContext);
      
   END MetrCaseAltCodeGenerator;

--------------------------------------------------------

   CLASS MetrCaseTagCodeGenerator;
     INHERITS CaseTagCodeGenerator(CGcContext);
     
   END MetrCaseTagCodeGenerator;

--------------------------------------------------------

   CLASS MetrWhatStatCodeGenerator;
     INHERITS WhatStatCodeGenerator(CGcContext);
     
   END MetrWhatStatCodeGenerator;

--------------------------------------------------------

   CLASS MetrWhatAltCodeGenerator;
     INHERITS WhatAltCodeGenerator(CGcContext);
     
   END MetrWhatAltCodeGenerator;

--------------------------------------------------------

   CLASS MetrWhatTagCodeGenerator;
     INHERITS WhatTagCodeGenerator(CGcContext);
     
   END MetrWhatTagCodeGenerator;

--------------------------------------------------------

   CLASS MetrStatListCodeGenerator;
     INHERITS StatListCodeGenerator(CGcContext); 
     
   END MetrStatListCodeGenerator;

END MetrGStatements;
