コード例 #1
0
        private void BuildParameterDeclaration(IdlFunctionParameter parameter, StringBuilder parametersBuilder)
        {
            var type = this.BuildParameterType(parameter.Type);
            var name = this.BuildParameterName(parameter.Name);

            if (parameter.Attribute.IsInAndOut())
            {
                parametersBuilder.Append("ref ");
            }
            else if (parameter.Attribute.IsIn())
            {
                parametersBuilder.Append("in ");
            }
            else if (parameter.Attribute.IsOut())
            {
                parametersBuilder.Append("out ");
            }

            parametersBuilder.Append($"{type} {name}");
        }
コード例 #2
0
        private void BuildBodyInstructions(IdlFunctionParameter parameter, StringBuilder bodyBuilder, int indent)
        {
            var name = this.BuildParameterName(parameter.Name);
            var type = this.BuildParameterType(parameter.Type);

            if (parameter.Attribute.IsOut())
            {
                switch (type)
                {
                case "string":
                    bodyBuilder.AppendLine($"{name} = string.Empty;".Indent(indent));

                    break;

                default:
                    bodyBuilder.AppendLine($"{name} = default;".Indent(indent));

                    break;
                }
            }
        }
コード例 #3
0
        public void Build(IdlFunctionParameter parameter, IdlFunction function, BuilderTargetCollection functionTargets, int indent)
        {
            if (functionTargets.TryGetValue(BuilderTarget.Parameters, out var parameterTarget))
            {
                this.BuildParameterDeclaration(parameter, parameterTarget);
            }

            if (functionTargets.TryGetValue(BuilderTarget.FunctionBody, out var bodyTarget))
            {
                this.BuildBodyInstructions(parameter, bodyTarget, indent);
            }

            if (functionTargets.TryGetValue(BuilderTarget.EventProperties, out var propertyTarget))
            {
                this.BuildEventProperties(parameter, propertyTarget, indent);
            }

            if (functionTargets.TryGetValue(BuilderTarget.EventBody, out var eventBodyTarget))
            {
                this.BuildPropertyAssignment(parameter, eventBodyTarget, indent + 1);
            }
        }
コード例 #4
0
 private void BuildPropertyAssignment(IdlFunctionParameter parameter, StringBuilder propertyBuilder, int indent)
 {
     propertyBuilder.AppendLine($"this.{this.BuildPropertyName(parameter.Name)} = {this.BuildParameterName(parameter.Name)};".Indent(indent));
 }
コード例 #5
0
 private void BuildEventProperties(IdlFunctionParameter parameter, StringBuilder propertyBuilder, int indent)
 {
     propertyBuilder.AppendLine($"public {this.BuildParameterType(parameter.Type)} {this.BuildPropertyName(parameter.Name)} {{ get; }}".Indent(indent));
 }