ListNode* FindFirstCommonNode( ListNode *pHead1, ListNode *pHead2) { // 得到两个链表的长度 unsigned int nLength1 = GetListLength(pHead1); unsigned int nLength2 = GetListLength(pHead2); int nLengthDif = nLength1 - nLength2; ListNode* pListHeadLong = pHead1; ListNode* pListHeadShort = pHead2; if(nLength2 > nLength1) { pListHeadLong = pHead2; pListHeadShort = pHead1; nLengthDif = nLength2 - nLength1; } // 先在长链表上走几步,再同时在两个链表上遍历 for(int i = 0; i < nLengthDif; ++ i) pListHeadLong = pListHeadLong->m_pNext; while((pListHeadLong != NULL) && (pListHeadShort != NULL) && (pListHeadLong != pListHeadShort)) { pListHeadLong = pListHeadLong->m_pNext; pListHeadShort = pListHeadShort->m_pNext; } // 得到第一个公共结点 ListNode* pFisrtCommonNode = pListHeadLong; return pFisrtCommonNode; }
node_t* FindFirstCommonNode(node_t* pHead1, node_t* pHead2) { /*得到两个链表的长度*/ unsigned int length1 = GetListLength( pHead1 ); unsigned int length2 = GetListLength( pHead2 ); int lenght_diff = length1 - length2; node_t* pListHeadLong = pHead1; node_t* pListHeadShort = pHead2; if( length1 < length2){ pListHeadLong = pHead2; pListHeadShort = pHead1; lenght_diff = length2 - length1; } /*先在长的链表上走几步,在同时在两个表上遍历查询*/ for(int i = 0; i < lenght_diff; i++){ pListHeadLong = pListHeadLong->m_pNext; } while( pListHeadLong != NULL && pListHeadShort != NULL && pListHeadLong != pListHeadShort ) { pListHeadLong = pListHeadLong->m_pNext; pListHeadShort =pListHeadShort->m_pNext; } node_t* firstcommonnode = pListHeadLong; return firstcommonnode; }
ListNode* FindFirstCommonNode(ListNode *pHead1, ListNode *pHead2) { int len1 = GetListLength(pHead1); int len2 = GetListLength(pHead2); int diff = abs(len1 - len2); ListNode *pLongHead, *pShortHead; if (len1 > len2) { pLongHead = pHead1; pShortHead = pHead2; } else { pLongHead = pHead2; pShortHead = pHead1; } while (diff > 0 && pLongHead != NULL) { pLongHead = pLongHead->next; diff--; } while (pLongHead != NULL && pShortHead != NULL && pLongHead != pShortHead) { pLongHead = pLongHead->next; pShortHead = pShortHead->next; } return pLongHead; }
const char *PopRandomOpcode(List **plist, uint8_t *opcode) { List *list = *plist; List *prev = NULL; int len = GetListLength(list); if (len == 0) printf("Called with 0!!!\n"); int rnd = rand() % len; for (int i = 0; i < rnd; i++) { prev = list; list = list->next; } *opcode = list->index; const char *ret = list->name; if (rnd == 0) { *plist = list->next; free(list); } else { prev->next = list->next; free(list); } return ret; }
static uint8_t PopRandomOpcode4(List **plist) { List *list = *plist; List *prev = NULL; int len = GetListLength(list); if (len == 0) printf("Called with 0!!!\n"); int rnd = rand() % len; for (int i = 0; i < rnd; i++) { prev = list; list = list->next; } uint8_t ret = group4_opcodes[list->index]; if (rnd == 0) { *plist = list->next; free(list); } else { prev->next = list->next; free(list); } return ret; }
/** * Creates a copy of target list. * * The new copy will contain all the elements from the source list in the same * order and will use the same functions as the original list for copying and * freeing elements. * * @param list The target list to copy * @return * NULL if a NULL was sent or a memory allocation failed. * A List containing the same elements with same order as list otherwise. */ List listCopy(List list) { List copy = NULL; if (list != NULL) { copy = listCreate(list->copyElementFunc, list->freeElementFunc); } if ((copy != NULL) && (list->First != NULL)) { ListItem item_to_copy = list->First; while ((item_to_copy != NULL) && (copy != NULL)) { if (listInsertLast(copy, item_to_copy->Element) == LIST_SUCCESS) { if (list->Current == item_to_copy){ int size = GetListLength(copy); listGetFirst(copy); for (int i = 1; i < size; i++) { listGetNext(copy); } } item_to_copy = item_to_copy->Next; } else { listDestroy(copy); copy = NULL; } } } return copy; }
/** * Sorts the list according to the given function, using a max sort sorting * method. * * For example, the following code will sort a list of integers according to * their distance from 0. * @code * int closerTo(ListElement num1, ListElement num2, ListSortKey value) { * int distance1 = abs(*(int*)num1 - *(int*)value); * int distance2 = abs(*(int*)num2 - *(int*)value); * return distance1 - distance2; * } * * void sortInts(List listOfInts) { * listSort(listOfInts, closerTo); * } * @endcode * * @param list the target list to sort * @param compareElement A comparison function as defined in the type * CompareListElements. This function should return an integer indicating the * relation between two elements in the list * * @return * LIST_NULL_ARGUMENT if list or compareElement are NULL * LIST_OUT_OF_MEMORY if a memory allocation failed, the list will be intact * in this case. * LIST_SUCCESS if sorting completed successfully. */ ListResult listSort(List list, CompareListElements compareElement) { if ((list == NULL) || (compareElement == NULL)){ return LIST_NULL_ARGUMENT; } int listLength = GetListLength(list); if (listLength > 1) { for (int i = listLength - 1; listLength > 1; listLength--) { ListItem current = list->First; for (int j = 0; j < i; j++) { if (compareElement(current->Element, current->Next->Element) < 0) { ListElement element = current->Element; current->Element = current->Next->Element; current->Next->Element = element; } current = current->Next; } } } return LIST_SUCCESS; }
static void ProcessVoxelMeshes( ChunkEnvironment* env ) { const int w = env->w-2; const int h = env->h-2; const int d = env->d-2; const float hw = ((float)w) / 2.f; const float hh = ((float)h) / 2.f; const float hd = ((float)d) / 2.f; for(int z = 0; z < d; z++) for(int y = 0; y < h; y++) for(int x = 0; x < w; x++) { const int envIndex = Get3DArrayIndex(x+1, y+1, z+1, env->w, env->h, env->d); const int transparentNeighbors = env->transparentNeighbors[envIndex]; List* meshList = env->meshLists[envIndex]; const int meshCount = GetListLength(meshList); for(int i = 0; i < meshCount; i++) { const VoxelMesh* mesh = *(VoxelMesh**)GetListEntry(meshList, i); const float xTranslation = ((float)x) - hw + 0.5f; const float yTranslation = ((float)y) - hh + 0.5f; const float zTranslation = ((float)z) - hd + 0.5f; ProcessVoxelMesh(env, transparentNeighbors, xTranslation, yTranslation, zTranslation, mesh); } } }
static bool* GatherTransparentVoxelsForChunk( List** meshLists, int w, int h, int d ) { const int voxelCount = w*h*d; bool* transparentVoxels = new bool[voxelCount]; for(int i = 0; i < voxelCount; i++) { const List* meshList = meshLists[i]; bool transparent = true; const int meshCount = GetListLength(meshList); for(int j = 0; j < meshCount; j++) { const VoxelMesh* mesh = *(const VoxelMesh**)GetConstListEntry(meshList, j); if(!IsVoxelMeshTransparent(mesh)) { transparent = false; break; } } transparentVoxels[i] = transparent; } return transparentVoxels; }
static void AssignOpcodes(FILE *f) { List *group1 = ListAppend(NULL, 0); int i; for (i = 1; i < N1; i++) ListAppend(group1, i); ADD2 = PopRandomOpcode1(&group1); ADD4 = PopRandomOpcode1(&group1); ADDC2 = PopRandomOpcode1(&group1); ADDC4 = PopRandomOpcode1(&group1); ANL2 = PopRandomOpcode1(&group1); ANL4 = PopRandomOpcode1(&group1); ANL5 = PopRandomOpcode1(&group1); ANL6 = PopRandomOpcode1(&group1); ANL7 = PopRandomOpcode1(&group1); ANL8 = PopRandomOpcode1(&group1); CJNE1 = PopRandomOpcode1(&group1); CJNE2 = PopRandomOpcode1(&group1); CLR1 = PopRandomOpcode1(&group1); CLR2 = PopRandomOpcode1(&group1); CLR3 = PopRandomOpcode1(&group1); CPL1 = PopRandomOpcode1(&group1); CPL2 = PopRandomOpcode1(&group1); CPL3 = PopRandomOpcode1(&group1); DA = PopRandomOpcode1(&group1); DEC1 = PopRandomOpcode1(&group1); DEC3 = PopRandomOpcode1(&group1); DIV = PopRandomOpcode1(&group1); DJNZ2 = PopRandomOpcode1(&group1); INC1 = PopRandomOpcode1(&group1); INC3 = PopRandomOpcode1(&group1); INC5 = PopRandomOpcode1(&group1); JB = PopRandomOpcode1(&group1); JBC = PopRandomOpcode1(&group1); JC = PopRandomOpcode1(&group1); JMP = PopRandomOpcode1(&group1); JNB = PopRandomOpcode1(&group1); JNC = PopRandomOpcode1(&group1); JNZ = PopRandomOpcode1(&group1); JZ = PopRandomOpcode1(&group1); LCALL = PopRandomOpcode1(&group1); LJMP = PopRandomOpcode1(&group1); MOV2 = PopRandomOpcode1(&group1); MOV4 = PopRandomOpcode1(&group1); MOV8 = PopRandomOpcode1(&group1); MOV10 = PopRandomOpcode1(&group1); MOV12 = PopRandomOpcode1(&group1); MOV16 = PopRandomOpcode1(&group1); MOV17 = PopRandomOpcode1(&group1); MOV18 = PopRandomOpcode1(&group1); MOVC1 = PopRandomOpcode1(&group1); MOVC2 = PopRandomOpcode1(&group1); MOVX2 = PopRandomOpcode1(&group1); MOVX4 = PopRandomOpcode1(&group1); MUL = PopRandomOpcode1(&group1); ORL2 = PopRandomOpcode1(&group1); ORL4 = PopRandomOpcode1(&group1); ORL5 = PopRandomOpcode1(&group1); ORL6 = PopRandomOpcode1(&group1); ORL7 = PopRandomOpcode1(&group1); ORL8 = PopRandomOpcode1(&group1); POP = PopRandomOpcode1(&group1); PUSH = PopRandomOpcode1(&group1); RET = PopRandomOpcode1(&group1); RL = PopRandomOpcode1(&group1); RLC = PopRandomOpcode1(&group1); RR = PopRandomOpcode1(&group1); RRC = PopRandomOpcode1(&group1); SETB1 = PopRandomOpcode1(&group1); SETB2 = PopRandomOpcode1(&group1); SJMP = PopRandomOpcode1(&group1); SUBB2 = PopRandomOpcode1(&group1); SUBB4 = PopRandomOpcode1(&group1); SWAP = PopRandomOpcode1(&group1); XCH2 = PopRandomOpcode1(&group1); XRL2 = PopRandomOpcode1(&group1); XRL4 = PopRandomOpcode1(&group1); XRL5 = PopRandomOpcode1(&group1); XRL6 = PopRandomOpcode1(&group1); group1 = ListAppend(NULL, 0); for (i = 1; i < N2; i++) ListAppend(group1, i); ADD3 = PopRandomOpcode2(&group1); ADDC3 = PopRandomOpcode2(&group1); ANL3 = PopRandomOpcode2(&group1); CJNE4 = PopRandomOpcode2(&group1); DEC4 = PopRandomOpcode2(&group1); INC4 = PopRandomOpcode2(&group1); MOV3 = PopRandomOpcode2(&group1); MOV11 = PopRandomOpcode2(&group1); MOV13 = PopRandomOpcode2(&group1); MOV14 = PopRandomOpcode2(&group1); MOV15 = PopRandomOpcode2(&group1); MOVX1 = PopRandomOpcode2(&group1); MOVX3 = PopRandomOpcode2(&group1); ORL3 = PopRandomOpcode2(&group1); SUBB3 = PopRandomOpcode2(&group1); XCH3 = PopRandomOpcode2(&group1); XCHD = PopRandomOpcode2(&group1); XRL3 = PopRandomOpcode2(&group1); group1 = ListAppend(NULL, 0); for (i = 1; i < N3; i++) ListAppend(group1, i); ADD1 = PopRandomOpcode3(&group1); ADDC1 = PopRandomOpcode3(&group1); ANL1 = PopRandomOpcode3(&group1); CJNE3 = PopRandomOpcode3(&group1); DEC2 = PopRandomOpcode3(&group1); DJNZ1 = PopRandomOpcode3(&group1); INC2 = PopRandomOpcode3(&group1); MOV1 = PopRandomOpcode3(&group1); MOV5 = PopRandomOpcode3(&group1); MOV6 = PopRandomOpcode3(&group1); MOV7 = PopRandomOpcode3(&group1); MOV9 = PopRandomOpcode3(&group1); ORL1 = PopRandomOpcode3(&group1); SUBB1 = PopRandomOpcode3(&group1); XRL1 = PopRandomOpcode3(&group1); XCH1 = PopRandomOpcode3(&group1); group1 = ListAppend(NULL, 0); for (i = 1; i < N4; i++) ListAppend(group1, i); ACALL = PopRandomOpcode4(&group1); AJMP = PopRandomOpcode4(&group1); ANL2_X = rand(); ANL4_X = rand(); ANL5_X = rand(); ANL6_X1 = rand(); ANL6_X2 = rand(); ANL7_X = rand(); ANL8_X = rand(); ORL2_X = rand(); ORL4_X = rand(); ORL5_X = rand(); ORL6_X1 = rand(); ORL6_X2 = rand(); ORL7_X = rand(); ORL8_X = rand(); XRL2_X = rand(); XRL4_X = rand(); XRL5_X = rand(); XRL6_X1 = rand(); XRL6_X2 = rand(); CLR3_X = rand(); SETB2_X = rand(); CPL3_X = rand(); XCH2_X = rand(); LCALL_X1 = rand(); LCALL_X2 = rand(); ACALL_X = rand(); CJNE1_X1 = rand(); CJNE1_X2 = rand(); CJNE2_X1 = rand(); CJNE2_X2 = rand(); CJNE3_X1 = rand(); CJNE3_X2 = rand(); CJNE4_X1 = rand(); CJNE4_X2 = rand(); DEC3_X = rand(); INC3_X = rand(); DJNZ1_X = rand(); DJNZ2_X1 = rand(); DJNZ2_X2 = rand(); POP_X = rand(); PUSH_X = rand(); JB_X1 = rand(); JB_X2 = rand(); JBC_X1 = rand(); JBC_X2 = rand(); JC_X = rand(); JNB_X1 = rand(); JNB_X2 = rand(); JNC_X = rand(); JNZ_X = rand(); JZ_X = rand(); AJMP_X = rand(); LJMP_X1 = rand(); LJMP_X2 = rand(); SJMP_X = rand(); MOV2_X = rand(); MOV4_X = rand(); MOV6_X = rand(); MOV7_X = rand(); MOV8_X = rand(); MOV9_X = rand(); MOV10_X1 = rand(); MOV10_X2 = rand(); MOV11_X = rand(); MOV12_X1 = rand(); MOV12_X2 = rand(); MOV14_X = rand(); MOV15_X = rand(); MOV16_X = rand(); MOV17_X = rand(); MOV18_X1 = rand(); MOV18_X2 = rand(); ADD2_X = rand(); ADD4_X = rand(); ADDC2_X = rand(); ADDC4_X = rand(); SUBB2_X = rand(); SUBB4_X = rand(); group1 = ListAppend2(NULL, ADD2, "ADD2"); ListAppend2(group1, ADD4, "ADD4"); ListAppend2(group1, ADDC2, "ADDC2"); ListAppend2(group1, ADDC4, "ADDC4"); ListAppend2(group1, ANL2, "ANL2"); ListAppend2(group1, ANL4, "ANL4"); ListAppend2(group1, ANL5, "ANL5"); ListAppend2(group1, ANL6, "ANL6"); ListAppend2(group1, ANL7, "ANL7"); ListAppend2(group1, ANL8, "ANL8"); ListAppend2(group1, CJNE1, "CJNE1"); ListAppend2(group1, CJNE2, "CJNE2"); ListAppend2(group1, CLR1, "CLR1"); ListAppend2(group1, CLR2, "CLR2"); ListAppend2(group1, CLR3, "CLR3"); ListAppend2(group1, CPL1, "CPL1"); ListAppend2(group1, CPL2, "CPL2"); ListAppend2(group1, CPL3, "CPL3"); ListAppend2(group1, DA, "DA"); ListAppend2(group1, DEC1, "DEC1"); ListAppend2(group1, DEC3, "DEC3"); ListAppend2(group1, DIV, "DIV"); ListAppend2(group1, DJNZ2, "DJNZ2"); ListAppend2(group1, INC1, "INC1"); ListAppend2(group1, INC3, "INC3"); ListAppend2(group1, INC5, "INC5"); ListAppend2(group1, JB, "JB"); ListAppend2(group1, JBC, "JBC"); ListAppend2(group1, JC, "JC"); ListAppend2(group1, JMP, "JMP"); ListAppend2(group1, JNB, "JNB"); ListAppend2(group1, JNC, "JNC"); ListAppend2(group1, JNZ, "JNZ"); ListAppend2(group1, JZ, "JZ"); ListAppend2(group1, LCALL, "LCALL"); ListAppend2(group1, LJMP, "LJMP"); ListAppend2(group1, MOV2, "MOV2"); ListAppend2(group1, MOV4, "MOV4"); ListAppend2(group1, MOV8, "MOV8"); ListAppend2(group1, MOV10, "MOV10"); ListAppend2(group1, MOV12, "MOV12"); ListAppend2(group1, MOV16, "MOV16"); ListAppend2(group1, MOV17, "MOV17"); ListAppend2(group1, MOV18, "MOV18"); ListAppend2(group1, MOVC1, "MOVC1"); ListAppend2(group1, MOVC2, "MOVC2"); ListAppend2(group1, MOVX2, "MOVX2"); ListAppend2(group1, MOVX4, "MOVX4"); ListAppend2(group1, MUL, "MUL"); ListAppend2(group1, ORL2, "ORL2"); ListAppend2(group1, ORL4, "ORL4"); ListAppend2(group1, ORL5, "ORL5"); ListAppend2(group1, ORL6, "ORL6"); ListAppend2(group1, ORL7, "ORL7"); ListAppend2(group1, ORL8, "ORL8"); ListAppend2(group1, POP, "POP"); ListAppend2(group1, PUSH, "PUSH"); ListAppend2(group1, RET, "RET"); ListAppend2(group1, RL, "RL"); ListAppend2(group1, RLC, "RLC"); ListAppend2(group1, RR, "RR"); ListAppend2(group1, RRC, "RRC"); ListAppend2(group1, SETB1, "SETB1"); ListAppend2(group1, SETB2, "SETB2"); ListAppend2(group1, SJMP, "SJMP"); ListAppend2(group1, SUBB2, "SUBB2"); ListAppend2(group1, SUBB4, "SUBB4"); ListAppend2(group1, SWAP, "SWAP"); ListAppend2(group1, XCH2, "XCH2"); ListAppend2(group1, XRL2, "XRL2"); ListAppend2(group1, XRL4, "XRL4"); ListAppend2(group1, XRL5, "XRL5"); ListAppend2(group1, XRL6, "XRL6"); ListAppend2(group1, ADD3, "ADD3"); ListAppend2(group1, ADDC3, "ADDC3"); ListAppend2(group1, ANL3, "ANL3"); ListAppend2(group1, CJNE4, "CJNE4"); ListAppend2(group1, DEC4, "DEC4"); ListAppend2(group1, INC4, "INC4"); ListAppend2(group1, MOV3, "MOV3"); ListAppend2(group1, MOV11, "MOV11"); ListAppend2(group1, MOV13, "MOV13"); ListAppend2(group1, MOV14, "MOV14"); ListAppend2(group1, MOV15, "MOV15"); ListAppend2(group1, MOVX1, "MOVX1"); ListAppend2(group1, MOVX3, "MOVX3"); ListAppend2(group1, ORL3, "ORL3"); ListAppend2(group1, SUBB3, "SUBB3"); ListAppend2(group1, XCH3, "XCH3"); ListAppend2(group1, XCHD, "XCHD"); ListAppend2(group1, XRL3, "XRL3"); ListAppend2(group1, ADD1, "ADD1"); ListAppend2(group1, ADDC1, "ADDC1"); ListAppend2(group1, ANL1, "ANL1"); ListAppend2(group1, CJNE3, "CJNE3"); ListAppend2(group1, DEC2, "DEC2"); ListAppend2(group1, DJNZ1, "DJNZ1"); ListAppend2(group1, INC2, "INC2"); ListAppend2(group1, MOV1, "MOV1"); ListAppend2(group1, MOV5, "MOV5"); ListAppend2(group1, MOV6, "MOV6"); ListAppend2(group1, MOV7, "MOV7"); ListAppend2(group1, MOV9, "MOV9"); ListAppend2(group1, ORL1, "ORL1"); ListAppend2(group1, SUBB1, "SUBB1"); ListAppend2(group1, XRL1, "XRL1"); ListAppend2(group1, XCH1, "XCH1"); ListAppend2(group1, ACALL, "ACALL"); ListAppend2(group1, AJMP, "AJMP"); ListAppend2(group1, ANL2_X, "ANL2_X"); ListAppend2(group1, ANL4_X, "ANL4_X"); ListAppend2(group1, ANL5_X, "ANL5_X"); ListAppend2(group1, ANL6_X1, "ANL6_X1"); ListAppend2(group1, ANL6_X2, "ANL6_X2"); ListAppend2(group1, ANL7_X, "ANL7_X"); ListAppend2(group1, ANL8_X, "ANL8_X"); ListAppend2(group1, ORL2_X, "ORL2_X"); ListAppend2(group1, ORL4_X, "ORL4_X"); ListAppend2(group1, ORL5_X, "ORL5_X"); ListAppend2(group1, ORL6_X1,"ORL6_X1"); ListAppend2(group1, ORL6_X2, "ORL6_X2"); ListAppend2(group1, ORL7_X, "ORL7_X"); ListAppend2(group1, ORL8_X, "ORL8_X"); ListAppend2(group1, XRL2_X, "XRL2_X"); ListAppend2(group1, XRL4_X, "XRL4_X"); ListAppend2(group1, XRL5_X, "XRL5_X"); ListAppend2(group1, XRL6_X1, "XRL6_X1"); ListAppend2(group1, XRL6_X2, "XRL6_X2"); ListAppend2(group1, CLR3_X, "CLR3_X"); ListAppend2(group1, SETB2_X, "SETB2_X"); ListAppend2(group1, CPL3_X, "CPL3_X"); ListAppend2(group1, XCH2_X, "XCH2_X"); ListAppend2(group1, LCALL_X1, "LCALL_X1"); ListAppend2(group1, LCALL_X2, "LCALL_X2"); ListAppend2(group1, ACALL_X, "ACALL_X"); ListAppend2(group1, CJNE1_X1, "CJNE1_X1"); ListAppend2(group1, CJNE1_X2, "CJNE1_X2"); ListAppend2(group1, CJNE2_X1, "CJNE2_X1"); ListAppend2(group1, CJNE2_X2, "CJNE2_X2"); ListAppend2(group1, CJNE3_X1, "CJNE3_X1"); ListAppend2(group1, CJNE3_X2, "CJNE3_X2"); ListAppend2(group1, CJNE4_X1, "CJNE4_X1"); ListAppend2(group1, CJNE4_X2, "CJNE4_X2"); ListAppend2(group1, DEC3_X, "DEC3_X"); ListAppend2(group1, INC3_X, "INC3_X"); ListAppend2(group1, DJNZ1_X, "DJNZ1_X"); ListAppend2(group1, DJNZ2_X1, "DJNZ2_X1"); ListAppend2(group1, DJNZ2_X2, "DJNZ2_X2"); ListAppend2(group1, POP_X, "POP_X"); ListAppend2(group1, PUSH_X, "PUSH_X"); ListAppend2(group1, JB_X1, "JB_X1"); ListAppend2(group1, JB_X2, "JB_X2"); ListAppend2(group1, JBC_X1, "JBC_X1"); ListAppend2(group1, JBC_X2, "JBC_X2"); ListAppend2(group1, JC_X, "JC_X"); ListAppend2(group1, JNB_X1, "JNB_X1"); ListAppend2(group1, JNB_X2, "JNB_X2"); ListAppend2(group1, JNC_X, "JNC_X"); ListAppend2(group1, JNZ_X, "JNZ_X"); ListAppend2(group1, JZ_X, "JZ_X"); ListAppend2(group1, AJMP_X, "AJMP_X"); ListAppend2(group1, LJMP_X1, "LJMP_X1"); ListAppend2(group1, LJMP_X2, "LJMP_X2"); ListAppend2(group1, SJMP_X, "SJMP_X"); ListAppend2(group1, MOV2_X, "MOV2_X"); ListAppend2(group1, MOV4_X, "MOV4_X"); ListAppend2(group1, MOV6_X, "MOV6_X"); ListAppend2(group1, MOV7_X, "MOV7_X"); ListAppend2(group1, MOV8_X, "MOV8_X"); ListAppend2(group1, MOV9_X, "MOV9_X"); ListAppend2(group1, MOV10_X1, "MOV10_X1"); ListAppend2(group1, MOV10_X2, "MOV10_X2"); ListAppend2(group1, MOV11_X, "MOV11_X"); ListAppend2(group1, MOV12_X1, "MOV12_X1"); ListAppend2(group1, MOV12_X2, "MOV12_X2"); ListAppend2(group1, MOV14_X, "MOV14_X"); ListAppend2(group1, MOV15_X, "MOV15_X"); ListAppend2(group1, MOV16_X, "MOV16_X"); ListAppend2(group1, MOV17_X, "MOV17_X"); ListAppend2(group1, MOV18_X1, "MOV18_X1"); ListAppend2(group1, MOV18_X2, "MOV18_X2"); ListAppend2(group1, ADD2_X, "ADD2_X"); ListAppend2(group1, ADD4_X, "ADD4_X"); ListAppend2(group1, ADDC2_X, "ADDC2_X"); ListAppend2(group1, ADDC4_X, "ADDC4_X"); ListAppend2(group1, SUBB2_X, "SUBB2_X"); ListAppend2(group1, SUBB4_X, "SUBB4_X"); int n = GetListLength(group1); for (i = 0; i < n; i++) { uint8_t opcode; const char *name = PopRandomOpcode(&group1, &opcode); fprintf(f, "static uint8_t %s = 0x%02X;\n", name, opcode); } }
/** * Returns the number of elements in a list * * @param list The target list which size is requested. * @return * -1 if a NULL pointer was sent. * Otherwise the number of elements in the list. */ int listGetSize(List list) { int size = NULL_LIST_SIZE; if (list != NULL) size = GetListLength(list); return size; }