summaryrefslogtreecommitdiff
path: root/qface/idl/listener.py
diff options
context:
space:
mode:
Diffstat (limited to 'qface/idl/listener.py')
-rw-r--r--qface/idl/listener.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/qface/idl/listener.py b/qface/idl/listener.py
index 81df9b8..925e908 100644
--- a/qface/idl/listener.py
+++ b/qface/idl/listener.py
@@ -28,6 +28,7 @@ class DomainListener(TListener):
self.enum = None # type:Enum
self.enumCounter = 0 # int
self.operation = None # type:Operation
+ self.signal = None # type:Signal
self.parameter = None # type:Parameter
self.property = None # type:Property
self.field = None # type:Field
@@ -139,8 +140,7 @@ class DomainListener(TListener):
def enterOperationSymbol(self, ctx: TParser.OperationSymbolContext):
assert self.interface
name = ctx.name.text
- is_event = bool(ctx.isEvent)
- self.operation = Operation(name, self.interface, is_event)
+ self.operation = Operation(name, self.interface)
self.parse_annotations(ctx, self.operation)
self.parse_type(ctx, self.operation.type)
contextMap[ctx] = self.operation
@@ -148,9 +148,20 @@ class DomainListener(TListener):
def exitOperationSymbol(self, ctx: TParser.OperationSymbolContext):
self.operation = None
+ def enterSignalSymbol(self, ctx: TParser.SignalSymbolContext):
+ assert self.interface
+ name = ctx.name.text
+ self.signal = Signal(name, self.interface)
+ self.parse_annotations(ctx, self.operation)
+ contextMap[ctx] = self.signal
+
+ def exitSignalSymbol(self, ctx: TParser.SignalSymbolContext):
+ self.signal = None
+
def enterOperationParameterSymbol(self, ctx: TParser.OperationParameterSymbolContext):
name = ctx.name.text
- self.parameter = Parameter(name, self.operation)
+ symbol = self.operation if self.operation else self.signal
+ self.parameter = Parameter(name, symbol)
contextMap[ctx] = self.parameter
def exitOperationParameterSymbol(self, ctx: TParser.OperationParameterSymbolContext):