public CSharpGenerator(Driver driver) : base(driver) { typePrinter = new CSharpTypePrinter(driver); expressionPrinter = new CSharpExpressionPrinter(); CppSharp.AST.Type.TypePrinterDelegate += type => type.Visit(typePrinter).Type; }
public override TypePrinterResult VisitParameter(Parameter param, bool hasName = true) { var oldParam = Parameter; Parameter = param; var result = param.QualifiedType.Visit(this); Parameter = oldParam; var name = param.Name; var printName = hasName && !string.IsNullOrEmpty(name); if (PrintFlavorKind == CppTypePrintFlavorKind.ObjC) { return(printName ? $":({result.Type}){name}" : $":({result.Type})"); } if (!printName) { return(result); } result.Name = param.Name; if (param.DefaultArgument != null && Options.GenerateDefaultValuesForArguments) { try { var expressionPrinter = new CSharpExpressionPrinter(this); var defaultValue = expressionPrinter.VisitParameter(param); return($"{result} = {defaultValue}"); } catch (Exception) { var function = param.Namespace as Function; Diagnostics.Warning($"Error printing default argument expression: " + $"{function.QualifiedOriginalName}({param.OriginalName})"); } } return(result); }
public CSharpGenerator(Driver driver) : base(driver) { typePrinter = new CSharpTypePrinter(driver); expressionPrinter = new CSharpExpressionPrinter(typePrinter); }
public CSharpGenerator(BindingContext context) : base(context) { typePrinter = new CSharpTypePrinter(context); expressionPrinter = new CSharpExpressionPrinter(typePrinter); }