public override void VisitFieldCPPModel(FieldCPPModel model)
        {
            if (model.FieldType.IsArray)
            {
                var size = "";

                switch (model.Initializer)
                {
                case ArrayCreationExpressionCPPModel ac:
                    size = Invoke <ExpressionBuilder>(ac.Rank).Expression;
                    break;

                default:
                    Unsupported(model, "Array initializer not suported");
                    break;
                }

                AppendLine($"{TypeLookup.LookupCPPTypeName(model.FieldType.GetElementType())} {Context.Class.Name}::{model.Name}[{size}] = {{0}};");
            }
            else
            {
                var initializer = Invoke <ExpressionBuilder>(model.Initializer).Expression;
                AppendLine($"{TypeLookup.LookupCPPTypeName(model.FieldType)} {Context.Class.Name}::{model.Name} = {initializer};");
            }
        }
 public override void VisitFieldCPPModel(FieldCPPModel model)
 {
     if (model.FieldType.IsArray)
     {
         AppendLine($"{CPPModelTools.Modifiers(model.Modifiers)} {TypeLookup.LookupCPPTypeName(model.FieldType.GetElementType())} {model.Name}[];");
     }
     else
     {
         AppendLine($"{CPPModelTools.Modifiers(model.Modifiers)} {TypeLookup.LookupCPPTypeName(model.FieldType)} {model.Name};");
     }
 }
        public override void VisitVariableDeclarator(VariableDeclaratorSyntax node)
        {
            _variableDeclaration = node;
            _fieldInfo           = TypeResolver.ResolveFieldInfo(node);

            var field = new FieldCPPModel(Modifiers: new ModifiersCPPModel())
            {
                FieldType = _fieldInfo.FieldType,
                Name      = node.Identifier.ToString(),
            };

            field.Modifiers.AccessType   = _fieldDeclaration.Modifiers.ExtractAccessType();
            field.Modifiers.InstanceType = _fieldDeclaration.Modifiers.ExtractInstanceType();

            if (node.Initializer != null)
            {
                field.Initializer = Invoke <FieldInitializerVisitor>(node.Initializer.Value).Expression;
            }

            Context.MembersContainer.Members.Add(field);
        }
Beispiel #4
0
 public override void VisitFieldCPPModel(FieldCPPModel model)
 {
     Invoke <ClassFieldCModelVisitor>(model);
 }