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); }
public override void VisitFieldCPPModel(FieldCPPModel model) { Invoke <ClassFieldCModelVisitor>(model); }