packages feed

HaRe-0.6: StrategyLib-4.0-beta/examples/joos-rule02/DatatypesTermInstances.hs

module DatatypesTermInstances where
import Datatypes
import TermRep
{- Generated by DrIFT (Automatic class derivations for Haskell) -}
{-# LINE 1 "Datatypes.hs" #-}
{-* Generated by DrIFT : Look, but Don't Touch. *-}
instance Term Program where
    explode (x::Program) = TermRep (toDyn x, f x, g x) where
	f (Program aa ab) = [explode aa,explode ab]
	g (Program _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((Program (TermRep.fDyn aa) (TermRep.fDyn ab))::Program) ; _ -> error "Term explosion error."

_tc_ProgramTc = mkTyCon "Program"
instance Typeable Program where
    typeOf x = mkTyConApp _tc_ProgramTc [ ]

instance Term Assignment where
    explode (x::Assignment) = TermRep (toDyn x, f x, g x) where
	f (Assignment aa ab) = [explode aa,explode ab]
	g (Assignment _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((Assignment (TermRep.fDyn aa) (TermRep.fDyn ab))::Assignment) ; _ -> error "Term explosion error."

_tc_AssignmentTc = mkTyCon "Assignment"
instance Typeable Assignment where
    typeOf x = mkTyConApp _tc_AssignmentTc [ ]

instance Term InstanceCreation where
    explode (x::InstanceCreation) = TermRep (toDyn x, f x, g x) where
	f (InstanceCreation aa ab) = [explode aa,explode ab]
	g (InstanceCreation _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((InstanceCreation (TermRep.fDyn aa) (TermRep.fDyn ab))::InstanceCreation) ; _ -> error "Term explosion error."

_tc_InstanceCreationTc = mkTyCon "InstanceCreation"
instance Typeable InstanceCreation where
    typeOf x = mkTyConApp _tc_InstanceCreationTc [ ]

instance Term MethodInvocation where
    explode (x::MethodInvocation) = TermRep (toDyn x, f x, g x) where
	f (ExpressionInvocation aa ab ac) = [explode aa,explode ab,explode ac]
	f (SuperInvocation ad ae) = [explode ad,explode ae]
	g (ExpressionInvocation _ _ _) xs = case TermRep.fArgs xs of [aa,ab,ac] -> toDyn ((ExpressionInvocation (TermRep.fDyn aa) (TermRep.fDyn ab) (TermRep.fDyn ac))::MethodInvocation) ; _ -> error "Term explosion error."
	g (SuperInvocation _ _) xs = case TermRep.fArgs xs of [ad,ae] -> toDyn ((SuperInvocation (TermRep.fDyn ad) (TermRep.fDyn ae))::MethodInvocation) ; _ -> error "Term explosion error."

_tc_MethodInvocationTc = mkTyCon "MethodInvocation"
instance Typeable MethodInvocation where
    typeOf x = mkTyConApp _tc_MethodInvocationTc [ ]

instance Term Arguments where
    explode (x::Arguments) = TermRep (toDyn x, f x, g x) where
	f (Arguments aa) = [explode aa]
	g (Arguments _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((Arguments (TermRep.fDyn aa))::Arguments) ; _ -> error "Term explosion error."

_tc_ArgumentsTc = mkTyCon "Arguments"
instance Typeable Arguments where
    typeOf x = mkTyConApp _tc_ArgumentsTc [ ]

instance Term Expression where
    explode (x::Expression) = TermRep (toDyn x, f x, g x) where
	f (Literal aa) = [explode aa]
	f (Identifier ab) = [explode ab]
	f This = []
	f (PrefixExpr ac ad) = [explode ac,explode ad]
	f (InfixExpr ae af ag) = [explode ae,explode af,explode ag]
	f (AndOrExpr ah ai aj) = [explode ah,explode ai,explode aj]
	f (InstanceOf ak al) = [explode ak,explode al]
	f (TypeCast am an) = [explode am,explode an]
	f (BracketExpr ao) = [explode ao]
	f (AssignmentExpr ap) = [explode ap]
	f (InstanceCreationExpr aq) = [explode aq]
	f (MethodInvocationExpr ar) = [explode ar]
	g (Literal _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((Literal (TermRep.fDyn aa))::Expression) ; _ -> error "Term explosion error."
	g (Identifier _) xs = case TermRep.fArgs xs of [ab] -> toDyn ((Identifier (TermRep.fDyn ab))::Expression) ; _ -> error "Term explosion error."
	g This xs = case TermRep.fArgs xs of [] -> toDyn ((This)::Expression) ; _ -> error "Term explosion error."
	g (PrefixExpr _ _) xs = case TermRep.fArgs xs of [ac,ad] -> toDyn ((PrefixExpr (TermRep.fDyn ac) (TermRep.fDyn ad))::Expression) ; _ -> error "Term explosion error."
	g (InfixExpr _ _ _) xs = case TermRep.fArgs xs of [ae,af,ag] -> toDyn ((InfixExpr (TermRep.fDyn ae) (TermRep.fDyn af) (TermRep.fDyn ag))::Expression) ; _ -> error "Term explosion error."
	g (AndOrExpr _ _ _) xs = case TermRep.fArgs xs of [ah,ai,aj] -> toDyn ((AndOrExpr (TermRep.fDyn ah) (TermRep.fDyn ai) (TermRep.fDyn aj))::Expression) ; _ -> error "Term explosion error."
	g (InstanceOf _ _) xs = case TermRep.fArgs xs of [ak,al] -> toDyn ((InstanceOf (TermRep.fDyn ak) (TermRep.fDyn al))::Expression) ; _ -> error "Term explosion error."
	g (TypeCast _ _) xs = case TermRep.fArgs xs of [am,an] -> toDyn ((TypeCast (TermRep.fDyn am) (TermRep.fDyn an))::Expression) ; _ -> error "Term explosion error."
	g (BracketExpr _) xs = case TermRep.fArgs xs of [ao] -> toDyn ((BracketExpr (TermRep.fDyn ao))::Expression) ; _ -> error "Term explosion error."
	g (AssignmentExpr _) xs = case TermRep.fArgs xs of [ap] -> toDyn ((AssignmentExpr (TermRep.fDyn ap))::Expression) ; _ -> error "Term explosion error."
	g (InstanceCreationExpr _) xs = case TermRep.fArgs xs of [aq] -> toDyn ((InstanceCreationExpr (TermRep.fDyn aq))::Expression) ; _ -> error "Term explosion error."
	g (MethodInvocationExpr _) xs = case TermRep.fArgs xs of [ar] -> toDyn ((MethodInvocationExpr (TermRep.fDyn ar))::Expression) ; _ -> error "Term explosion error."

_tc_ExpressionTc = mkTyCon "Expression"
instance Typeable Expression where
    typeOf x = mkTyConApp _tc_ExpressionTc [ ]

instance Term AndOr where
    explode (x::AndOr) = TermRep (toDyn x, f x, g x) where
	f AND = []
	f OR = []
	g AND xs = case TermRep.fArgs xs of [] -> toDyn ((AND)::AndOr) ; _ -> error "Term explosion error."
	g OR xs = case TermRep.fArgs xs of [] -> toDyn ((OR)::AndOr) ; _ -> error "Term explosion error."

_tc_AndOrTc = mkTyCon "AndOr"
instance Typeable AndOr where
    typeOf x = mkTyConApp _tc_AndOrTc [ ]

instance Term PrefixOperator where
    explode (x::PrefixOperator) = TermRep (toDyn x, f x, g x) where
	f Neg = []
	f Fac = []
	g Neg xs = case TermRep.fArgs xs of [] -> toDyn ((Neg)::PrefixOperator) ; _ -> error "Term explosion error."
	g Fac xs = case TermRep.fArgs xs of [] -> toDyn ((Fac)::PrefixOperator) ; _ -> error "Term explosion error."

_tc_PrefixOperatorTc = mkTyCon "PrefixOperator"
instance Typeable PrefixOperator where
    typeOf x = mkTyConApp _tc_PrefixOperatorTc [ ]

instance Term InfixOperator where
    explode (x::InfixOperator) = TermRep (toDyn x, f x, g x) where
	f Eq = []
	f NEQ = []
	f Lt = []
	f Gt = []
	f LEQ = []
	f GEQ = []
	f PLUS = []
	f MINUS = []
	f MUL = []
	f DIV = []
	f MOD = []
	g Eq xs = case TermRep.fArgs xs of [] -> toDyn ((Eq)::InfixOperator) ; _ -> error "Term explosion error."
	g NEQ xs = case TermRep.fArgs xs of [] -> toDyn ((NEQ)::InfixOperator) ; _ -> error "Term explosion error."
	g Lt xs = case TermRep.fArgs xs of [] -> toDyn ((Lt)::InfixOperator) ; _ -> error "Term explosion error."
	g Gt xs = case TermRep.fArgs xs of [] -> toDyn ((Gt)::InfixOperator) ; _ -> error "Term explosion error."
	g LEQ xs = case TermRep.fArgs xs of [] -> toDyn ((LEQ)::InfixOperator) ; _ -> error "Term explosion error."
	g GEQ xs = case TermRep.fArgs xs of [] -> toDyn ((GEQ)::InfixOperator) ; _ -> error "Term explosion error."
	g PLUS xs = case TermRep.fArgs xs of [] -> toDyn ((PLUS)::InfixOperator) ; _ -> error "Term explosion error."
	g MINUS xs = case TermRep.fArgs xs of [] -> toDyn ((MINUS)::InfixOperator) ; _ -> error "Term explosion error."
	g MUL xs = case TermRep.fArgs xs of [] -> toDyn ((MUL)::InfixOperator) ; _ -> error "Term explosion error."
	g DIV xs = case TermRep.fArgs xs of [] -> toDyn ((DIV)::InfixOperator) ; _ -> error "Term explosion error."
	g MOD xs = case TermRep.fArgs xs of [] -> toDyn ((MOD)::InfixOperator) ; _ -> error "Term explosion error."

_tc_InfixOperatorTc = mkTyCon "InfixOperator"
instance Typeable InfixOperator where
    typeOf x = mkTyConApp _tc_InfixOperatorTc [ ]

instance Term Literal where
    explode (x::Literal) = TermRep (toDyn x, f x, g x) where
	f (BooleanLit aa) = [explode aa]
	f (IntegerLit ab) = [explode ab]
	f Null = []
	f (StringLit ac) = [explode ac]
	g (BooleanLit _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((BooleanLit (TermRep.fDyn aa))::Literal) ; _ -> error "Term explosion error."
	g (IntegerLit _) xs = case TermRep.fArgs xs of [ab] -> toDyn ((IntegerLit (TermRep.fDyn ab))::Literal) ; _ -> error "Term explosion error."
	g Null xs = case TermRep.fArgs xs of [] -> toDyn ((Null)::Literal) ; _ -> error "Term explosion error."
	g (StringLit _) xs = case TermRep.fArgs xs of [ac] -> toDyn ((StringLit (TermRep.fDyn ac))::Literal) ; _ -> error "Term explosion error."

_tc_LiteralTc = mkTyCon "Literal"
instance Typeable Literal where
    typeOf x = mkTyConApp _tc_LiteralTc [ ]

instance Term BooleanLiteral where
    explode (x::BooleanLiteral) = TermRep (toDyn x, f x, g x) where
	f TRUE = []
	f FALSE = []
	g TRUE xs = case TermRep.fArgs xs of [] -> toDyn ((TRUE)::BooleanLiteral) ; _ -> error "Term explosion error."
	g FALSE xs = case TermRep.fArgs xs of [] -> toDyn ((FALSE)::BooleanLiteral) ; _ -> error "Term explosion error."

_tc_BooleanLiteralTc = mkTyCon "BooleanLiteral"
instance Typeable BooleanLiteral where
    typeOf x = mkTyConApp _tc_BooleanLiteralTc [ ]

instance Term Block where
    explode (x::Block) = TermRep (toDyn x, f x, g x) where
	f (Block aa ab) = [explode aa,explode ab]
	g (Block _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((Block (TermRep.fDyn aa) (TermRep.fDyn ab))::Block) ; _ -> error "Term explosion error."

_tc_BlockTc = mkTyCon "Block"
instance Typeable Block where
    typeOf x = mkTyConApp _tc_BlockTc [ ]

instance Term Statement where
    explode (x::Statement) = TermRep (toDyn x, f x, g x) where
	f Skip = []
	f (BlockStat aa) = [explode aa]
	f (AssignmentStat ab) = [explode ab]
	f (InstanceCreationStat ac) = [explode ac]
	f (MethodInvocationStat ad) = [explode ad]
	f (ReturnStat ae) = [explode ae]
	f (IfStat af ag ah) = [explode af,explode ag,explode ah]
	f (WhileStat ai aj) = [explode ai,explode aj]
	f (StatementFocus ak) = [explode ak]
	g Skip xs = case TermRep.fArgs xs of [] -> toDyn ((Skip)::Statement) ; _ -> error "Term explosion error."
	g (BlockStat _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((BlockStat (TermRep.fDyn aa))::Statement) ; _ -> error "Term explosion error."
	g (AssignmentStat _) xs = case TermRep.fArgs xs of [ab] -> toDyn ((AssignmentStat (TermRep.fDyn ab))::Statement) ; _ -> error "Term explosion error."
	g (InstanceCreationStat _) xs = case TermRep.fArgs xs of [ac] -> toDyn ((InstanceCreationStat (TermRep.fDyn ac))::Statement) ; _ -> error "Term explosion error."
	g (MethodInvocationStat _) xs = case TermRep.fArgs xs of [ad] -> toDyn ((MethodInvocationStat (TermRep.fDyn ad))::Statement) ; _ -> error "Term explosion error."
	g (ReturnStat _) xs = case TermRep.fArgs xs of [ae] -> toDyn ((ReturnStat (TermRep.fDyn ae))::Statement) ; _ -> error "Term explosion error."
	g (IfStat _ _ _) xs = case TermRep.fArgs xs of [af,ag,ah] -> toDyn ((IfStat (TermRep.fDyn af) (TermRep.fDyn ag) (TermRep.fDyn ah))::Statement) ; _ -> error "Term explosion error."
	g (WhileStat _ _) xs = case TermRep.fArgs xs of [ai,aj] -> toDyn ((WhileStat (TermRep.fDyn ai) (TermRep.fDyn aj))::Statement) ; _ -> error "Term explosion error."
	g (StatementFocus _) xs = case TermRep.fArgs xs of [ak] -> toDyn ((StatementFocus (TermRep.fDyn ak))::Statement) ; _ -> error "Term explosion error."

_tc_StatementTc = mkTyCon "Statement"
instance Typeable Statement where
    typeOf x = mkTyConApp _tc_StatementTc [ ]

instance Term Class where
    explode (x::Class) = TermRep (toDyn x, f x, g x) where
	f (ClassDecl aa ab ac ad ae af) = [explode aa,explode ab,explode ac,explode ad,explode ae,explode af]
	g (ClassDecl _ _ _ _ _ _) xs = case TermRep.fArgs xs of [aa,ab,ac,ad,ae,af] -> toDyn ((ClassDecl (TermRep.fDyn aa) (TermRep.fDyn ab) (TermRep.fDyn ac) (TermRep.fDyn ad) (TermRep.fDyn ae) (TermRep.fDyn af))::Class) ; _ -> error "Term explosion error."

_tc_ClassTc = mkTyCon "Class"
instance Typeable Class where
    typeOf x = mkTyConApp _tc_ClassTc [ ]

instance Term FieldDeclaration where
    explode (x::FieldDeclaration) = TermRep (toDyn x, f x, g x) where
	f (FieldDecl aa ab) = [explode aa,explode ab]
	g (FieldDecl _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((FieldDecl (TermRep.fDyn aa) (TermRep.fDyn ab))::FieldDeclaration) ; _ -> error "Term explosion error."

_tc_FieldDeclarationTc = mkTyCon "FieldDeclaration"
instance Typeable FieldDeclaration where
    typeOf x = mkTyConApp _tc_FieldDeclarationTc [ ]

instance Term Constructor where
    explode (x::Constructor) = TermRep (toDyn x, f x, g x) where
	f (ConstructorDecl aa ab ac ad) = [explode aa,explode ab,explode ac,explode ad]
	g (ConstructorDecl _ _ _ _) xs = case TermRep.fArgs xs of [aa,ab,ac,ad] -> toDyn ((ConstructorDecl (TermRep.fDyn aa) (TermRep.fDyn ab) (TermRep.fDyn ac) (TermRep.fDyn ad))::Constructor) ; _ -> error "Term explosion error."

_tc_ConstructorTc = mkTyCon "Constructor"
instance Typeable Constructor where
    typeOf x = mkTyConApp _tc_ConstructorTc [ ]

instance Term MethodDecl where
    explode (x::MethodDecl) = TermRep (toDyn x, f x, g x) where
	f (MethodDecl aa ab ac ad) = [explode aa,explode ab,explode ac,explode ad]
	f (MethodDeclFocus ae) = [explode ae]
	g (MethodDecl _ _ _ _) xs = case TermRep.fArgs xs of [aa,ab,ac,ad] -> toDyn ((MethodDecl (TermRep.fDyn aa) (TermRep.fDyn ab) (TermRep.fDyn ac) (TermRep.fDyn ad))::MethodDecl) ; _ -> error "Term explosion error."
	g (MethodDeclFocus _) xs = case TermRep.fArgs xs of [ae] -> toDyn ((MethodDeclFocus (TermRep.fDyn ae))::MethodDecl) ; _ -> error "Term explosion error."

_tc_MethodDeclTc = mkTyCon "MethodDecl"
instance Typeable MethodDecl where
    typeOf x = mkTyConApp _tc_MethodDeclTc [ ]

instance Term Formals where
    explode (x::Formals) = TermRep (toDyn x, f x, g x) where
	f (Formals aa) = [explode aa]
	g (Formals _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((Formals (TermRep.fDyn aa))::Formals) ; _ -> error "Term explosion error."

_tc_FormalsTc = mkTyCon "Formals"
instance Typeable Formals where
    typeOf x = mkTyConApp _tc_FormalsTc [ ]

instance Term Formal where
    explode (x::Formal) = TermRep (toDyn x, f x, g x) where
	f (Formal aa ab) = [explode aa,explode ab]
	g (Formal _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((Formal (TermRep.fDyn aa) (TermRep.fDyn ab))::Formal) ; _ -> error "Term explosion error."

_tc_FormalTc = mkTyCon "Formal"
instance Typeable Formal where
    typeOf x = mkTyConApp _tc_FormalTc [ ]

instance Term VarDecl where
    explode (x::VarDecl) = TermRep (toDyn x, f x, g x) where
	f (VarDecl aa ab) = [explode aa,explode ab]
	g (VarDecl _ _) xs = case TermRep.fArgs xs of [aa,ab] -> toDyn ((VarDecl (TermRep.fDyn aa) (TermRep.fDyn ab))::VarDecl) ; _ -> error "Term explosion error."

_tc_VarDeclTc = mkTyCon "VarDecl"
instance Typeable VarDecl where
    typeOf x = mkTyConApp _tc_VarDeclTc [ ]

instance Term Type where
    explode (x::Type) = TermRep (toDyn x, f x, g x) where
	f INT = []
	f BOOLEAN = []
	f (Type aa) = [explode aa]
	g INT xs = case TermRep.fArgs xs of [] -> toDyn ((INT)::Type) ; _ -> error "Term explosion error."
	g BOOLEAN xs = case TermRep.fArgs xs of [] -> toDyn ((BOOLEAN)::Type) ; _ -> error "Term explosion error."
	g (Type _) xs = case TermRep.fArgs xs of [aa] -> toDyn ((Type (TermRep.fDyn aa))::Type) ; _ -> error "Term explosion error."

_tc_TypeTc = mkTyCon "Type"
instance Typeable Type where
    typeOf x = mkTyConApp _tc_TypeTc [ ]

--  Imported from other files :-