Skip to content
Snippets Groups Projects
Commit 4d37eead authored by Sophie Coudert's avatar Sophie Coudert
Browse files

Datatype handling in progress

parent 1570bb88
No related branches found
No related tags found
4 merge requests!504merge first stable version of Avatar-SysML V2,!503merge the first stable version of the Avatar-SysML parser/generator,!501Avatar sys ml 04 2024,!498Avatar sys ml 04 2024 (first merge request, only for verification)
......@@ -11,19 +11,27 @@ public class AvatarDataType {
public final static int DATATYPE = 2;
public static Map<String,AvatarDataType> dataTypeMap = new HashMap<String,AvatarDataType>();
private String name;
private List<String> fieldNames = new ArrayList<String>();
private List<Integer> fieldTypes = new ArrayList<Integer>();
private List<String> dataTypeNames = new ArrayList<String>();
private int size = -1;
private List<String> fieldStrings;
private List<String> fieldNames;
private List<Integer> fieldTypes;
private List<String> dataTypeNames;
private int size;
public AvatarDataType(String _name) {
name = _name;
fieldStrings = new ArrayList<String>();
fieldNames = new ArrayList<String>();
fieldTypes = new ArrayList<Integer>();
dataTypeNames = new ArrayList<String>();
size = -1;
}
public String getName() { return name; }
public int getFullSize() { return size; }
public int getNbFields() { return fieldNames.size(); }
String getFieldName(int _i) { return fieldNames.get(_i); }
public String getFieldName(int _i) { return fieldNames.get(_i); }
public String getFieldString(int _i) { return fieldStrings.get(_i); }
public int getFieldType(int _i) { return fieldTypes.get(_i); }
String getDataTypeNameName(int _i) { return dataTypeNames.get(_i); }
public String getDataTypeNameName(int _i) { return dataTypeNames.get(_i); }
public void addField(String _fieldName, int _fieldType, String _dataTypeName) {
if (size != -1) return; // DataType has already been finalized
if (_fieldType == AvatarDataType.INTEGER || _fieldType == AvatarDataType.BOOLEAN)
......@@ -41,15 +49,18 @@ public class AvatarDataType {
int length = adt.getNbFields();
for (int i = 0; i < length; i++) {
if (adt.getFieldType(i) == AvatarDataType.INTEGER || adt.getFieldType(i) == AvatarDataType.BOOLEAN) {
adt.fieldStrings.add(adt.fieldNames.get(i));
size += 1;
continue;
}
AvatarDataType fieldDataType = dataTypeMap.get(i);
AvatarDataType fieldDataType = dataTypeMap.get(adt.getDataTypeNameName(i));
if (fieldDataType == null) return;
finalize(fieldDataType); // loops if recursion => recursive types are forbidden
int fieldSize = fieldDataType.getFullSize();
if (fieldSize == -1) return;
size += fieldSize;
for(int j=0; j<fieldSize; j++)
adt.fieldStrings.add(adt.fieldNames.get(i) + "__" + fieldDataType.getFieldString(i));
}
adt.size = size;
}
......
......@@ -42,6 +42,7 @@ public class Avatar2SysMLNames {
public final static int BFIFO = 1;
public final static int NBFIFO = 2;
public static String dataTypeSysMLname(String name){ return "'@dt:" + name + "'"; }
public static String blockSysMLname(String name){ return "'@blk:" + name + "'"; }
public static String attributeSysMLname(String name){ return "'$" + name + "'"; }
public static String methodSysMLname(String name){ return "'$" + name + "'"; }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment