public CSharpGenerator(Driver driver)
     : base(driver)
 {
     typePrinter = new CSharpTypePrinter(driver);
     expressionPrinter = new CSharpExpressionPrinter();
     CppSharp.AST.Type.TypePrinterDelegate += type => type.Visit(typePrinter).Type;
 }
Example #2
0
        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);
        }
Example #3
0
 public CSharpGenerator(Driver driver) : base(driver)
 {
     typePrinter = new CSharpTypePrinter(driver);
     expressionPrinter = new CSharpExpressionPrinter(typePrinter);
 }
Example #4
0
 public CSharpGenerator(BindingContext context) : base(context)
 {
     typePrinter = new CSharpTypePrinter(context);
     expressionPrinter = new CSharpExpressionPrinter(typePrinter);
 }