\r
DxeRegisterCallBackOnSet,\r
DxeUnRegisterCallBackOnSet,\r
- DxePcdGetNextToken\r
+ DxePcdGetNextToken,\r
+ DxePcdGetNextTokenSpace\r
};\r
\r
\r
//\r
if (Guid == NULL) {\r
(*TokenNumber)++;\r
- if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {\r
- return EFI_SUCCESS;\r
- } else {\r
- if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER &&\r
- *TokenNumber < PEI_LOCAL_TOKEN_NUMBER) {\r
- //\r
- // The first Non-Ex type Token Number for DXE PCD \r
- // database is PEI_LOCAL_TOKEN_NUMBER\r
- //\r
- *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;\r
- return EFI_SUCCESS;\r
- } else if (*TokenNumber >= DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER) {\r
- *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
- return EFI_SUCCESS;\r
- }\r
+ if (*TokenNumber > PEI_NEX_TOKEN_NUMBER &&\r
+ *TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) {\r
+ //\r
+ // The first Non-Ex type Token Number for DXE PCD \r
+ // database is PEI_LOCAL_TOKEN_NUMBER\r
+ //\r
+ *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;\r
+ } else if (*TokenNumber > DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER) {\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
}\r
+ return EFI_SUCCESS;\r
}\r
\r
- if (PEI_EXMAP_TABLE_EMPTY && PEI_EXMAP_TABLE_EMPTY) {\r
- *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+ if (PEI_EXMAP_TABLE_EMPTY && DXE_EXMAP_TABLE_EMPTY) {\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
return EFI_NOT_FOUND;\r
}\r
\r
- ExTokenNumber = *TokenNumber;\r
if (!PEI_EXMAP_TABLE_EMPTY) {\r
+ ExTokenNumber = *TokenNumber;\r
ExTokenNumber = ExGetNextTokeNumber (\r
Guid,\r
ExTokenNumber,\r
if ((ExTokenNumber == PCD_INVALID_TOKEN_NUMBER) &&\r
!DXE_EXMAP_TABLE_EMPTY\r
) {\r
+ ExTokenNumber = *TokenNumber;\r
ExTokenNumber = ExGetNextTokeNumber (\r
Guid,\r
ExTokenNumber,\r
- mPcdDatabase->PeiDb.Init.GuidTable,\r
- sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
- mPcdDatabase->PeiDb.Init.ExMapTable,\r
- sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)\r
+ mPcdDatabase->DxeDb.Init.GuidTable,\r
+ sizeof(mPcdDatabase->DxeDb.Init.GuidTable),\r
+ mPcdDatabase->DxeDb.Init.ExMapTable,\r
+ sizeof(mPcdDatabase->DxeDb.Init.ExMapTable)\r
);\r
}\r
\r
TsIdx = 0;\r
OldGuidIndex = ExMapTable[0].ExGuidIndex;\r
DistinctTokenSpace[TsIdx] = &GuidTable[OldGuidIndex];\r
- for (Idx = 1; Idx < PEI_EXMAPPING_TABLE_SIZE; Idx++) {\r
+ for (Idx = 1; Idx < *ExMapTableSize; Idx++) {\r
if (ExMapTable[Idx].ExGuidIndex != OldGuidIndex) {\r
OldGuidIndex = ExMapTable[Idx].ExGuidIndex;\r
DistinctTokenSpace[++TsIdx] = &GuidTable[OldGuidIndex];\r
}\r
}\r
\r
- *ExMapTableSize = TsIdx;\r
+ //\r
+ // The total number of Distinct Token Space\r
+ // is TsIdx + 1 because we use TsIdx as a index\r
+ // to the DistinctTokenSpace[]\r
+ //\r
+ *ExMapTableSize = TsIdx + 1;\r
return DistinctTokenSpace;\r
\r
}\r
\r
-\r
+//\r
+// Just pre-allocate a memory buffer that is big enough to\r
+// host all distinct TokenSpace guid in both\r
+// PEI ExMap and DXE ExMap.\r
+//\r
STATIC EFI_GUID *TmpTokenSpaceBuffer[PEI_EXMAPPING_TABLE_SIZE + DXE_EXMAPPING_TABLE_SIZE] = { 0 };\r
\r
EFI_STATUS\r
}\r
\r
\r
- if (TmpTokenSpaceBuffer[0] != NULL) {\r
+ if (TmpTokenSpaceBuffer[0] == NULL) {\r
PeiTokenSpaceTableSize = 0;\r
\r
if (!PEI_EXMAP_TABLE_EMPTY) {\r
#error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"\r
#endif\r
\r
-\r
-typedef struct {\r
- LIST_ENTRY Node;\r
- PCD_PROTOCOL_CALLBACK CallbackFn;\r
-} CALLBACK_FN_ENTRY;\r
-\r
-#define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field)\r
-\r
-//\r
-// Internal Functions\r
-//\r
-\r
-EFI_STATUS\r
-SetValueWorker (\r
- IN UINTN TokenNumber,\r
- IN VOID *Data,\r
- IN UINTN Size\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-SetWorker (\r
- IN UINTN TokenNumber,\r
- IN VOID *Data,\r
- IN OUT UINTN *Size,\r
- IN BOOLEAN PtrType\r
- )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-ExSetValueWorker (\r
- IN UINTN ExTokenNumber,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN UINTN SetSize\r
- )\r
-;\r
-\r
-\r
-\r
-EFI_STATUS\r
-ExSetWorker (\r
- IN UINTN ExTokenNumber,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN OUT UINTN *Size,\r
- IN BOOLEAN PtrType\r
- )\r
-;\r
-\r
-\r
-VOID *\r
-GetWorker (\r
- IN UINTN TokenNumber,\r
- IN UINTN GetSize\r
- )\r
-;\r
-\r
-VOID *\r
-ExGetWorker (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN UINTN GetSize\r
- ) \r
-;\r
-\r
-UINT32\r
-GetSkuEnabledTokenNumber (\r
- UINT32 LocalTokenNumber,\r
- UINTN Size,\r
- BOOLEAN IsPeiDb\r
- ) \r
-;\r
-\r
-EFI_STATUS\r
-GetHiiVariable (\r
- IN EFI_GUID *VariableGuid,\r
- IN UINT16 *VariableName,\r
- OUT VOID **VariableData,\r
- OUT UINTN *VariableSize\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-SetHiiVariable (\r
- IN EFI_GUID *VariableGuid,\r
- IN UINT16 *VariableName,\r
- IN CONST VOID *Data,\r
- IN UINTN DataSize,\r
- IN UINTN Offset\r
- )\r
-;\r
-\r
-EFI_STATUS\r
-DxeRegisterCallBackWorker (\r
- IN UINTN TokenNumber,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
-);\r
-\r
-EFI_STATUS\r
-DxeUnRegisterCallBackWorker (\r
- IN UINTN TokenNumber,\r
- IN CONST EFI_GUID *Guid, OPTIONAL\r
- IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
-);\r
-\r
-VOID\r
-BuildPcdDxeDataBase (\r
- VOID\r
-);\r
-\r
-\r
-UINTN \r
-GetExPcdTokenNumber (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINT32 ExTokenNumber\r
- )\r
-;\r
-\r
-\r
-UINTN\r
-GetPtrTypeSize (\r
- IN UINTN LocalTokenNumberTableIdx,\r
- OUT UINTN *MaxSize\r
- )\r
-;\r
-\r
-\r
-\r
-BOOLEAN\r
-SetPtrTypeSize (\r
- IN UINTN LocalTokenNumberTableIdx,\r
- IN OUT UINTN *CurrentSize\r
- )\r
-;\r
-\r
//\r
// Protocol Interface function declaration.\r
//\r
)\r
;\r
\r
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DxePcdGetNextTokenSpace (\r
+ IN OUT CONST EFI_GUID **Guid\r
+ )\r
+;\r
+\r
+\r
+typedef struct {\r
+ LIST_ENTRY Node;\r
+ PCD_PROTOCOL_CALLBACK CallbackFn;\r
+} CALLBACK_FN_ENTRY;\r
+\r
+#define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field)\r
+\r
+//\r
+// Internal Functions\r
+//\r
+\r
+EFI_STATUS\r
+SetValueWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN UINTN Size\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+SetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN OUT UINTN *Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+ExSetValueWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN UINTN SetSize\r
+ )\r
+;\r
+\r
+\r
+\r
+EFI_STATUS\r
+ExSetWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN OUT UINTN *Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\r
+\r
+\r
+VOID *\r
+GetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN UINTN GetSize\r
+ )\r
+;\r
+\r
+VOID *\r
+ExGetWorker (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINTN GetSize\r
+ ) \r
+;\r
+\r
+UINT32\r
+GetSkuEnabledTokenNumber (\r
+ UINT32 LocalTokenNumber,\r
+ UINTN Size,\r
+ BOOLEAN IsPeiDb\r
+ ) \r
+;\r
+\r
+EFI_STATUS\r
+GetHiiVariable (\r
+ IN EFI_GUID *VariableGuid,\r
+ IN UINT16 *VariableName,\r
+ OUT VOID **VariableData,\r
+ OUT UINTN *VariableSize\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+SetHiiVariable (\r
+ IN EFI_GUID *VariableGuid,\r
+ IN UINT16 *VariableName,\r
+ IN CONST VOID *Data,\r
+ IN UINTN DataSize,\r
+ IN UINTN Offset\r
+ )\r
+;\r
+\r
+EFI_STATUS\r
+DxeRegisterCallBackWorker (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
+);\r
+\r
+EFI_STATUS\r
+DxeUnRegisterCallBackWorker (\r
+ IN UINTN TokenNumber,\r
+ IN CONST EFI_GUID *Guid, OPTIONAL\r
+ IN PCD_PROTOCOL_CALLBACK CallBackFunction\r
+);\r
+\r
+VOID\r
+BuildPcdDxeDataBase (\r
+ VOID\r
+);\r
+\r
+\r
+UINTN \r
+GetExPcdTokenNumber (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINT32 ExTokenNumber\r
+ )\r
+;\r
+\r
+\r
+\r
UINTN \r
ExGetNextTokeNumber (\r
IN CONST EFI_GUID *Guid,\r
)\r
;\r
\r
+\r
+UINTN\r
+GetPtrTypeSize (\r
+ IN UINTN LocalTokenNumberTableIdx,\r
+ OUT UINTN *MaxSize\r
+ )\r
+;\r
+\r
+\r
+\r
+BOOLEAN\r
+SetPtrTypeSize (\r
+ IN UINTN LocalTokenNumberTableIdx,\r
+ IN OUT UINTN *CurrentSize\r
+ )\r
+;\r
+\r
extern EFI_GUID gPcdDataBaseHobGuid;\r
\r
extern PCD_DATABASE * mPcdDatabase;\r
\r
if (Guid == NULL) {\r
(*TokenNumber)++;\r
-\r
- if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER) {\r
+ if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
}\r
- \r
+ return EFI_SUCCESS;\r
} else {\r
-\r
if (PEI_EXMAP_TABLE_EMPTY) {\r
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
- return EFI_NOT_FOUND;\r
+ return EFI_SUCCESS;\r
}\r
\r
//\r
MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);\r
\r
if (MatchGuid == NULL) {\r
- *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
return EFI_NOT_FOUND;\r
}\r
\r
ExMapTable = PeiPcdDb->Init.ExMapTable;\r
\r
Found = FALSE;\r
+ //\r
+ // Locate the GUID in ExMapTable first.\r
+ //\r
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
Found = TRUE;\r
*TokenNumber = ExMapTable[i].ExTokenNumber;\r
return EFI_SUCCESS;\r
}\r
- \r
- for ( ; ExMapTable[i].ExGuidIndex == GuidTableIdx; i++) {\r
+\r
+ for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
if (ExMapTable[i].ExTokenNumber == *TokenNumber) {\r
i++;\r
+ if (i == PEI_EXMAPPING_TABLE_SIZE) {\r
+ //\r
+ // Exceed the length of ExMap Table\r
+ //\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+ return EFI_SUCCESS;\r
+ }\r
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
*TokenNumber = ExMapTable[i].ExTokenNumber;\r
return EFI_SUCCESS;\r
} else {\r
- *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
return EFI_SUCCESS;\r
}\r
}\r
}\r
-\r
return EFI_NOT_FOUND;\r
}\r
- \r
}\r
\r
- return EFI_SUCCESS;\r
+ return EFI_NOT_FOUND;\r
}\r
\r
\r
#error "Please make sure the version of PCD Service PEIM and PCD PEI Database Generation Tool matches"\r
#endif\r
\r
-/* Internal Function definitions */\r
-\r
-PEI_PCD_DATABASE *\r
-GetPcdDatabase (\r
- VOID\r
- )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-SetValueWorker (\r
- IN UINTN TokenNumber,\r
- IN VOID *Data,\r
- IN UINTN Size\r
- )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-SetWorker (\r
- IN UINTN TokenNumber,\r
- IN VOID *Data,\r
- IN OUT UINTN *Size,\r
- IN BOOLEAN PtrType\r
- )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-ExSetValueWorker (\r
- IN UINTN ExTokenNumber,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN UINTN Size\r
- )\r
-;\r
-\r
-\r
-\r
-EFI_STATUS\r
-ExSetWorker (\r
- IN UINTN ExTokenNumber,\r
- IN CONST EFI_GUID *Guid,\r
- IN VOID *Data,\r
- IN OUT UINTN *Size,\r
- IN BOOLEAN PtrType\r
- )\r
-;\r
-\r
-\r
-\r
-VOID *\r
-GetWorker (\r
- IN UINTN TokenNumber,\r
- IN UINTN GetSize\r
- )\r
-;\r
-\r
-\r
-\r
-VOID *\r
-ExGetWorker (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber,\r
- IN UINTN GetSize\r
- )\r
-;\r
-\r
-typedef struct {\r
- UINTN TokenNumber;\r
- UINTN Size;\r
- UINT32 LocalTokenNumberAlias;\r
-} EX_PCD_ENTRY_ATTRIBUTE;\r
-\r
-\r
-UINTN \r
-GetExPcdTokenNumber (\r
- IN CONST EFI_GUID *Guid,\r
- IN UINTN ExTokenNumber\r
- )\r
-;\r
-\r
-\r
-\r
-\r
-EFI_STATUS\r
-PeiRegisterCallBackWorker (\r
- IN UINTN TokenNumber,\r
- IN CONST GUID *Guid, OPTIONAL\r
- IN PCD_PPI_CALLBACK CallBackFunction,\r
- IN BOOLEAN Register\r
-);\r
-\r
-\r
-\r
-\r
-VOID\r
-BuildPcdDatabase (\r
- VOID\r
- )\r
-;\r
-\r
-\r
-\r
-\r
-UINTN\r
-GetPtrTypeSize (\r
- IN UINTN LocalTokenNumberTableIdx,\r
- OUT UINTN *MaxSize,\r
- IN PEI_PCD_DATABASE *Database\r
- )\r
-;\r
-\r
-\r
-\r
-BOOLEAN\r
-SetPtrTypeSize (\r
- IN UINTN LocalTokenNumberTableIdx,\r
- IN OUT UINTN *CurrentSize,\r
- IN PEI_PCD_DATABASE *Database\r
- )\r
-;\r
-\r
-\r
//\r
// PPI Interface Implementation Declaration.\r
//\r
)\r
;\r
\r
+\r
+/* Internal Function definitions */\r
+\r
+PEI_PCD_DATABASE *\r
+GetPcdDatabase (\r
+ VOID\r
+ )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+SetValueWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN UINTN Size\r
+ )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+SetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN VOID *Data,\r
+ IN OUT UINTN *Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+ExSetValueWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN UINTN Size\r
+ )\r
+;\r
+\r
+\r
+\r
+EFI_STATUS\r
+ExSetWorker (\r
+ IN UINTN ExTokenNumber,\r
+ IN CONST EFI_GUID *Guid,\r
+ IN VOID *Data,\r
+ IN OUT UINTN *Size,\r
+ IN BOOLEAN PtrType\r
+ )\r
+;\r
+\r
+\r
+\r
+VOID *\r
+GetWorker (\r
+ IN UINTN TokenNumber,\r
+ IN UINTN GetSize\r
+ )\r
+;\r
+\r
+\r
+\r
+VOID *\r
+ExGetWorker (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber,\r
+ IN UINTN GetSize\r
+ )\r
+;\r
+\r
+typedef struct {\r
+ UINTN TokenNumber;\r
+ UINTN Size;\r
+ UINT32 LocalTokenNumberAlias;\r
+} EX_PCD_ENTRY_ATTRIBUTE;\r
+\r
+\r
+UINTN \r
+GetExPcdTokenNumber (\r
+ IN CONST EFI_GUID *Guid,\r
+ IN UINTN ExTokenNumber\r
+ )\r
+;\r
+\r
+\r
+\r
+\r
+EFI_STATUS\r
+PeiRegisterCallBackWorker (\r
+ IN UINTN TokenNumber,\r
+ IN CONST GUID *Guid, OPTIONAL\r
+ IN PCD_PPI_CALLBACK CallBackFunction,\r
+ IN BOOLEAN Register\r
+);\r
+\r
+\r
+\r
+\r
+VOID\r
+BuildPcdDatabase (\r
+ VOID\r
+ )\r
+;\r
+\r
+\r
+\r
+\r
+UINTN\r
+GetPtrTypeSize (\r
+ IN UINTN LocalTokenNumberTableIdx,\r
+ OUT UINTN *MaxSize,\r
+ IN PEI_PCD_DATABASE *Database\r
+ )\r
+;\r
+\r
+\r
+\r
+BOOLEAN\r
+SetPtrTypeSize (\r
+ IN UINTN LocalTokenNumberTableIdx,\r
+ IN OUT UINTN *CurrentSize,\r
+ IN PEI_PCD_DATABASE *Database\r
+ )\r
+;\r
+\r
+\r
extern EFI_GUID gPcdDataBaseHobGuid;\r
\r
extern EFI_GUID gPcdPeiCallbackFnTableHobGuid;\r
// If so, return the GuidTable index.\r
//\r
for (int i = 0; i < al.size(); i++) {\r
- if (al.get(i).equals(uuid)) {\r
+ if (al.get(i).compareTo(uuid) == 0) {\r
return i;\r
}\r
}\r
}\r
\r
private ArrayList<ExTriplet> al;\r
- private ArrayList<String> alComment;\r
+ private Map<ExTriplet, String> alComment;\r
private String phase;\r
private int len;\r
private int bodyLineNum;\r
public ExMapTable (String phase) {\r
this.phase = phase;\r
al = new ArrayList<ExTriplet>();\r
- alComment = new ArrayList<String>();\r
+ alComment = new HashMap<ExTriplet, String>();\r
bodyLineNum = 0;\r
len = 0;\r
}\r
str += e.localTokenIdx.toString() + ", ";\r
str += e.guidTableIdx.toString();\r
\r
- str += "}" + " /* " + alComment.get(index) + " */" ;\r
+ str += "}" + " /* " + alComment.get(e) + " */" ;\r
\r
if (index != al.size() - 1) {\r
str += ",";\r
public int add (int localTokenIdx, long exTokenNum, int guidTableIdx, String name) {\r
int index = len;\r
\r
- len++; \r
- al.add(new ExTriplet(guidTableIdx, exTokenNum, localTokenIdx));\r
- alComment.add(name);\r
+ len++;\r
+ ExTriplet et = new ExTriplet(guidTableIdx, exTokenNum, localTokenIdx); \r
+\r
+ al.add(et);\r
+ alComment.put(et, name);\r
\r
return index;\r
}\r