internal void DefineVariable(CodeWriter writer, string[] modifiers, AbstractVariableInfo variable, bool initAtOnce = true) { writer.NewLine(); if (modifiers != null) { foreach (var item in modifiers) { writer.Write(item); writer.Write(" "); } } writer.Write(GetCppTypeName(variable.DataType, variable.UBound).ToString()); writer.Write(" "); writer.Write(GetUserDefinedName_SimpleCppName(variable.Id)); if (initAtOnce) { var initParameter = GetInitParameter(variable.DataType, variable.UBound); if (!string.IsNullOrWhiteSpace(initParameter)) { writer.Write("("); writer.Write(initParameter); writer.Write(")"); } } writer.Write(";"); }
public CppTypeName GetCppTypeName(AbstractVariableInfo x) { if (x is MethodParameterInfo parameterInfo) { return(GetCppTypeName(parameterInfo.DataType, parameterInfo.ArrayParameter)); } return(GetCppTypeName(x.DataType, x.UBound)); }
//Searches through a component, extracting all of it's fields and properties private void GetComponentsVariables() { variableNames.Clear(); variableInfos.Clear(); Type type = aValue.component.GetType(); BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Default | BindingFlags.DeclaredOnly | BindingFlags.NonPublic; FieldInfo[] fields = type.GetFields(flags); PropertyInfo[] properties = type.GetProperties(flags); foreach (FieldInfo fi in fields) { if (!supportedTypes.Contains(fi.FieldType.Name)) { continue; } AbstractVariableInfo info = new AbstractVariableInfo(); info.Name = fi.Name; info.Type = fi.FieldType.FullName + ", " + fi.FieldType.Assembly; info.ShortType = fi.FieldType.Name; info.VariableType = VariableType.FIELD; variableInfos.Add(info); variableNames.Add(ObjectNames.NicifyVariableName(fi.Name)); } foreach (PropertyInfo pi in properties) { if (!supportedTypes.Contains(pi.PropertyType.Name)) { continue; } AbstractVariableInfo info = new AbstractVariableInfo(); info.Name = pi.Name; info.Type = pi.PropertyType.FullName + ", " + pi.PropertyType.Assembly; info.ShortType = pi.PropertyType.Name; info.VariableType = VariableType.PROPERTY; variableInfos.Add(info); variableNames.Add(ObjectNames.NicifyVariableName(pi.Name)); } }
public EocVariableExpression(CodeConverter c, AbstractVariableInfo variableInfo) : base(c) { VariableInfo = variableInfo; }