from core.himesis import Himesis
import uuid

class Hlayer5rule4(Himesis):
	def __init__(self):
		"""
		Creates the himesis graph representing the DSLTrans rule layer5rule4.
		"""
		# Flag this instance as compiled now
		self.is_compiled = True

		super(Hlayer5rule4, self).__init__(name='Hlayer5rule4', num_nodes=0, edges=[])

		# Set the graph attributes
		self["mm__"] = ['HimesisMM']
		self["name"] = """layer5rule4"""
		self["GUID__"] = uuid.uuid3(uuid.NAMESPACE_DNS,'layer5rule4')

		# match model. We only support one match model
		self.add_node()
		self.vs[0]["mm__"] = """MatchModel"""

		# apply model node
		self.add_node()
		self.vs[1]["mm__"] = """ApplyModel"""

		# paired with relation between match and apply models
		self.add_node()
		self.vs[2]["mm__"] = """paired_with"""
		self.vs[2]["attr1"] = """layer5rule4"""

		# match class TestCase(layer5rule4class0TestCase) node
		self.add_node()
		self.vs[3]["mm__"] = """TestCase"""
		self.vs[3]["attr1"] = """+"""

		# match class StatementList(layer5rule4class1StatementList) node
		self.add_node()
		self.vs[4]["mm__"] = """StatementList"""
		self.vs[4]["attr1"] = """+"""

		# match class ExpressionStatement(layer5rule4class2ExpressionStatement) node
		self.add_node()
		self.vs[5]["mm__"] = """ExpressionStatement"""
		self.vs[5]["attr1"] = """+"""

		# match class PortAdapterOpCallExpr(layer5rule4class3PortAdapterOpCallExpr) node
		self.add_node()
		self.vs[6]["mm__"] = """PortAdapterOpCallExpr"""
		self.vs[6]["attr1"] = """+"""

		# match class PortAdapterRefExpr(layer5rule4class4PortAdapterRefExpr) node
		self.add_node()
		self.vs[7]["mm__"] = """PortAdapterRefExpr"""
		self.vs[7]["attr1"] = """+"""

		# match class PortAdapter(layer5rule4class5PortAdapter) node
		self.add_node()
		self.vs[8]["mm__"] = """PortAdapter"""
		self.vs[8]["attr1"] = """+"""

		# match class Operation(layer5rule4class6Operation) node
		self.add_node()
		self.vs[9]["mm__"] = """Operation"""
		self.vs[9]["attr1"] = """+"""

		# match class AdapterInstancePortRef(layer5rule4class7AdapterInstancePortRef) node
		self.add_node()
		self.vs[10]["mm__"] = """AdapterInstancePortRef"""
		self.vs[10]["attr1"] = """+"""

		# match class ComponentInstance(layer5rule4class8ComponentInstance) node
		self.add_node()
		self.vs[11]["mm__"] = """ComponentInstance"""
		self.vs[11]["attr1"] = """+"""

		# match class ProvidedPort(layer5rule4class9ProvidedPort) node
		self.add_node()
		self.vs[12]["mm__"] = """ProvidedPort"""
		self.vs[12]["attr1"] = """+"""

		# match class ClientServerInterface(layer5rule4class10ClientServerInterface) node
		self.add_node()
		self.vs[13]["mm__"] = """ClientServerInterface"""
		self.vs[13]["attr1"] = """+"""

		# apply class StatementList(layer5rule4class11StatementList) node
		self.add_node()
		self.vs[14]["mm__"] = """StatementList"""
		self.vs[14]["attr1"] = """1"""

		# apply class ExpressionStatement(layer5rule4class12ExpressionStatement) node
		self.add_node()
		self.vs[15]["mm__"] = """ExpressionStatement"""
		self.vs[15]["attr1"] = """1"""

		# apply class FunctionCall(layer5rule4class13FunctionCall) node
		self.add_node()
		self.vs[16]["mm__"] = """FunctionCall"""
		self.vs[16]["attr1"] = """1"""

		# apply class FunctionPrototype(layer5rule4class14FunctionPrototype) node
		self.add_node()
		self.vs[17]["mm__"] = """FunctionPrototype"""
		self.vs[17]["attr1"] = """1"""

		# apply class ReferenceExpr(layer5rule4class15ReferenceExpr) node
		self.add_node()
		self.vs[18]["mm__"] = """ReferenceExpr"""
		self.vs[18]["attr1"] = """1"""

		# apply class GlobalVarRef(layer5rule4class16GlobalVarRef) node
		self.add_node()
		self.vs[19]["mm__"] = """GlobalVarRef"""
		self.vs[19]["attr1"] = """1"""

		# apply class GlobalVariableDeclaration(layer5rule4class17GlobalVariableDeclaration) node
		self.add_node()
		self.vs[20]["mm__"] = """GlobalVariableDeclaration"""
		self.vs[20]["attr1"] = """1"""

		# match association TestCase--body-->StatementList node 
		self.add_node()
		self.vs[21]["attr1"] = """body"""
		self.vs[21]["mm__"] = """directLink_S"""

		# match association StatementList--statements-->ExpressionStatement node 
		self.add_node()
		self.vs[22]["attr1"] = """statements"""
		self.vs[22]["mm__"] = """directLink_S"""

		# match association ExpressionStatement--expr-->PortAdapterOpCallExpr node 
		self.add_node()
		self.vs[23]["attr1"] = """expr"""
		self.vs[23]["mm__"] = """directLink_S"""

		# match association PortAdapterOpCallExpr--expression-->PortAdapterRefExpr node 
		self.add_node()
		self.vs[24]["attr1"] = """expression"""
		self.vs[24]["mm__"] = """directLink_S"""

		# match association PortAdapterRefExpr--portAdater-->PortAdapter node 
		self.add_node()
		self.vs[25]["attr1"] = """portAdater"""
		self.vs[25]["mm__"] = """directLink_S"""

		# match association PortAdapterOpCallExpr--operation-->Operation node 
		self.add_node()
		self.vs[26]["attr1"] = """operation"""
		self.vs[26]["mm__"] = """directLink_S"""

		# match association PortAdapter--portRef-->AdapterInstancePortRef node 
		self.add_node()
		self.vs[27]["attr1"] = """portRef"""
		self.vs[27]["mm__"] = """directLink_S"""

		# match association AdapterInstancePortRef--instance-->ComponentInstance node 
		self.add_node()
		self.vs[28]["attr1"] = """instance"""
		self.vs[28]["mm__"] = """directLink_S"""

		# match association AdapterInstancePortRef--port-->ProvidedPort node 
		self.add_node()
		self.vs[29]["attr1"] = """port"""
		self.vs[29]["mm__"] = """directLink_S"""

		# match association ProvidedPort--intf-->ClientServerInterface node 
		self.add_node()
		self.vs[30]["attr1"] = """intf"""
		self.vs[30]["mm__"] = """directLink_S"""

		# match association ClientServerInterface--contents-->Operation node 
		self.add_node()
		self.vs[31]["attr1"] = """contents"""
		self.vs[31]["mm__"] = """directLink_S"""

		# apply association StatementList--statements-->ExpressionStatement node 
		self.add_node()
		self.vs[32]["attr1"] = """statements"""
		self.vs[32]["mm__"] = """directLink_T"""

		# apply association ExpressionStatement--expr-->FunctionCall node 
		self.add_node()
		self.vs[33]["attr1"] = """expr"""
		self.vs[33]["mm__"] = """directLink_T"""

		# apply association FunctionCall--function-->FunctionPrototype node 
		self.add_node()
		self.vs[34]["attr1"] = """function"""
		self.vs[34]["mm__"] = """directLink_T"""

		# apply association FunctionCall--actuals-->ReferenceExpr node 
		self.add_node()
		self.vs[35]["attr1"] = """actuals"""
		self.vs[35]["mm__"] = """directLink_T"""

		# apply association ReferenceExpr--expression-->GlobalVarRef node 
		self.add_node()
		self.vs[36]["attr1"] = """expression"""
		self.vs[36]["mm__"] = """directLink_T"""

		# apply association GlobalVarRef--var-->GlobalVariableDeclaration node 
		self.add_node()
		self.vs[37]["attr1"] = """var"""
		self.vs[37]["mm__"] = """directLink_T"""

		# backward association StatementList-->TestCasenode 
		self.add_node()
		self.vs[38]["mm__"] = """backward_link"""

		# backward association FunctionPrototype-->ProvidedPortnode 
		self.add_node()
		self.vs[39]["mm__"] = """backward_link"""