/**
   * Writes the data type definitions
   *
   * @param typeList the list of data types
   */
  private void writeTypeDefinitions(ArrayList<String> typeList) {
    for (String type : typeList) {
      DataType dt = mapTypeToDataType(type);
      if (dt != null) {
        // Normal parameters
        int size = mapParameterTypeToSize(type);
        String formatChar = SourceUtils.mapNormalTypeToFormat(type);
        if (formatChar != null && formatChar.length() > 1 && formatChar.charAt(0) == '%') {
          formatChar = formatChar.substring(1);
          TypeDefStore.writeTypeDef(type, size, formatChar, dt);

          // Write alternative format characters
          writeAlternativeFormatChars(formatChar, type, size, dt);

        } else {
          TypeDefStore.writeTypeDef(type, size, null, dt);
        }
      } else {
        // Enum parameters
        TraceModel model = dictionaryFile.getOwner().getModel();
        TraceConstantTable table = model.findConstantTableByName(type);
        if (table != null) {
          TypeDefStore.startTypeDef(
              table.getName(), mapParameterTypeToSize(table.getType()), null, DataType.ENUM);
          for (TraceConstantTableEntry entry : table) {
            TypeDef.writeTypeMember(entry.getID(), entry.getName(), null);
          }
          TypeDefStore.endTypeDef();
        }
      }
    }
  }
 /**
  * Gets the parameter size from type
  *
  * @param type the type
  * @return the size in bytes
  */
 private int mapParameterTypeToSize(String type) {
   int size = SourceUtils.mapParameterTypeToSize(type);
   if (size == 0) {
     if (type.equals(TraceParameter.ASCII)) {
       size = 1;
     } else if (type.equals(TraceParameter.UNICODE)) {
       size = 2; // CodForChk_Dis_Magic
     }
   }
   return size;
 }