public override void EnterOperation([NotNull] WebIDLParser.OperationContext context) { base.EnterOperation(context); returnType = TranslateType(context.returnType().GetText()); rawMethodName = context.operationRest().optionalIdentifier().GetText(); var methodName = CSharpify(rawMethodName); outputStream.Write($" public"); var rawOperation = context.GetText(); if (operations.Contains(rawOperation)) { outputStream.Write($" new"); Console.WriteLine($"Operation already processed: {rawOperation}"); } else { operations.Add(rawOperation); Console.WriteLine($"Operation added: {rawOperation}"); } outputStream.Write($" {returnType} {methodName}("); @params = string.Empty; }
public override void ExitOperation([NotNull] WebIDLParser.OperationContext context) { base.ExitOperation(context); outputStream.Write(") => "); var isArray = returnType.EndsWith("[]", StringComparison.InvariantCultureIgnoreCase); var isReturnTypeBasic = typesDictionary.ContainsValue(returnType) && returnType != "object"; if (isArray) { WriteArrayInvoke(); } else if (isReturnTypeBasic) { if (returnTypesMappingDictionary.ContainsKey(rawMethodName)) { outputStream.Write($"({returnType})"); returnType = returnTypesMappingDictionary[rawMethodName]; } outputStream.Write($"InvokeForBasicType<{returnType}>"); } else { outputStream.Write("Invoke"); var isGenericNeeded = returnType != "void" && returnType != "object"; if (isGenericNeeded) { outputStream.Write($"<{returnType}>"); } } outputStream.Write($"(\"{rawMethodName}\"{@params});"); outputStream.WriteLine(); outputStream.WriteLine(); }