refactored GetArrayDimensions method, ParseFSize now returns null if not found
This commit is contained in:
@@ -442,8 +442,8 @@ namespace CodeGenerator {
|
||||
sb.Append(']');
|
||||
var t = sb.ToString();
|
||||
|
||||
var dimensions = GetArrayDimensions(field.Name);
|
||||
int length = 0;
|
||||
var dimensions = field.Name.GetArrayDimensions();
|
||||
int length = 1;
|
||||
foreach (int dim in dimensions) {
|
||||
length += dim;
|
||||
size *= dim;
|
||||
@@ -500,7 +500,7 @@ namespace CodeGenerator {
|
||||
|
||||
// Parse all array dimensions
|
||||
var name = field.Name.ParseFName();
|
||||
var dimensions = GetArrayDimensions(name);
|
||||
var dimensions = name.GetArrayDimensions();
|
||||
|
||||
// Get clean field name (without array brackets)
|
||||
name = field.Name.Substring(0, field.Name.IndexOf('[')).ParseFName();
|
||||
@@ -542,22 +542,6 @@ namespace CodeGenerator {
|
||||
return cmf;
|
||||
}
|
||||
|
||||
private static List<int> GetArrayDimensions(string name) {
|
||||
var dimensions = new List<int>();
|
||||
int startIndex = 0;
|
||||
// Get all array dimensions
|
||||
while ((startIndex = name.IndexOf('[', startIndex)) != -1) {
|
||||
int endIndex = name.IndexOf(']', startIndex);
|
||||
string sizeStr = name.Substring(startIndex + 1, endIndex - startIndex - 1);
|
||||
if (int.TryParse(sizeStr, out int size)) {
|
||||
dimensions.Add(size);
|
||||
}
|
||||
startIndex = endIndex + 1;
|
||||
}
|
||||
|
||||
return dimensions;
|
||||
}
|
||||
|
||||
private static CodeExpression GenerateArrayInitExpression(CodeTypeReference type, IEnumerable<int> dimensions) {
|
||||
var dimValues = dimensions as int[] ?? dimensions.ToArray();
|
||||
string dims = string.Concat(dimValues.Take(dimValues.Count() - 1).Select(d => $"{d},"));
|
||||
|
||||
Reference in New Issue
Block a user