main() { head = CreateLinkTable(); AddLinkTableNode(head,(tLinkTableNode *)&data[0]); AddLinkTableNode(head,(tLinkTableNode *)&data[1]); /* cmd line begins */ while(1) { char cmd[CMD_MAX_LEN]; printf("Input a cmd number > "); scanf("%s", cmd); tDataNode *p = FindCmd(head, cmd); if( p == NULL) { printf("This is a wrong cmd!\n "); continue; } printf("%s - %s\n", p->cmd, p->desc); if(p->handler != NULL) { p->handler(); } } }
tLinkTable * InitCmd() { tLinkTable * pLinkTable = CreateLinkTable(); int i; for(i = 0; i < CMD_NUM; i++) { AddLinkTableNode(pLinkTable,(tLinkTableNode *)&data[i]); } return pLinkTable; }
/*create a menu*/ tMenu* CreateMenu() { tMenu *pNewMenu = (tMenu*)malloc(sizeof(tMenu)); if(pNewMenu == NULL) { return NULL; } tLinkTable *pNewLinkTable = CreateLinkTable(); pNewMenu->pMenuHead = pNewLinkTable; return pNewMenu; }
int InitMenuData(tLinkTable ** ppLinktable) { *ppLinktable = CreateLinkTable(); tDataNode* pNode = (tDataNode*)malloc(sizeof(tDataNode)); pNode->cmd = "help"; pNode->desc = "Menu List:"; pNode->handler = Help; AddLinkTableNode(*ppLinktable,(tLinkTableNode *)pNode); pNode = (tDataNode*)malloc(sizeof(tDataNode)); pNode->cmd = "version"; pNode->desc = "Menu Program V1.0"; pNode->handler = NULL; AddLinkTableNode(*ppLinktable,(tLinkTableNode *)pNode); pNode = (tDataNode*)malloc(sizeof(tDataNode)); pNode->cmd = "quit"; pNode->desc = "Quit from Menu Program V1.0"; pNode->handler = Quit; AddLinkTableNode(*ppLinktable,(tLinkTableNode *)pNode); return 0; }
int main() { int i; tLinkTable * pLinkTable = CreateLinkTable(); /* init menu whih the common item, help, version, and exit */ InitMenuItem(pLinkTable); /* Add new item to the exist menu dynamicly */ AddMenuItem(pLinkTable, "add1", "add menu1", add1); AddMenuItem(pLinkTable, "add2", "add menu2", add1); /* cmd line begins */ while(1) { char cmd[CMD_MAX_LEN]; printf("Input a cmd > "); scanf("%s", cmd); /* call the func to run the menu */ RunMenu(pLinkTable, cmd); } DeleteLinkTable(pLinkTable); }
int main() { int i; tLinkTable * pLinkTable = CreateLinkTable(); for(i = 0; i < 10; i++) { tNode* pNode = (tNode*)malloc(sizeof(tNode)); pNode->data = i; debug("AddLinkTableNode\n"); AddLinkTableNode(pLinkTable,(tLinkTableNode *)pNode); } /* search by callback */ debug("SearchLinkTableNode\n"); tNode* pTempNode = (tNode*)SearchLinkTableNode(pLinkTable,SearchConditon); printf("%d\n",pTempNode->data); /* search one by one */ pTempNode = Search(pLinkTable); printf("%d\n",pTempNode->data); debug("DelLinkTableNode\n"); DelLinkTableNode(pLinkTable,(tLinkTableNode *)pTempNode); free(pTempNode); DeleteLinkTable(pLinkTable); }
/* Add cmd to linklist */ int AddCmd(char *cmd, char *desc, int handler(char *)) { /* Check arguments */ if(head == NULL) { head = CreateLinkTable(); } if(head == NULL || cmd == NULL || desc == NULL || handler == NULL) { return FAILURE; } /* Check if the cmd is existence */ if(CheckCmdExist(cmd) == SUCCESS) { return FAILURE; } tDataNode* pNode = (tDataNode*)malloc(sizeof(tDataNode)); pNode->cmd = cmd; pNode->desc = desc; pNode->handler = handler; return AddLinkTableNode(head,(tLinkTableNode *)pNode); }
/* create Menu*/ tLinkTable* CreateMenu() { tLinkTable* head = CreateLinkTable(); return head; }
tLinkTable * InitMenu() { return CreateLinkTable(); }