Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
Diff: string.cpp
- Revision:
- 4:e48aee3e8d09
- Parent:
- 3:6fc7976cc5bf
- Child:
- 5:3c19c3ae6286
--- a/string.cpp Wed May 20 16:37:25 2020 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-#include "string.h"
-
-
-struct Keyword asKeywordList[MAX_KEYWORD_NR] = {
- {CLB,"callib"},
- {GT, "goto" },
-};
-
-enum Result { OK, NOK };
-
-
-void Tokenizer::ReplaceCharactersInString(char pcString[],char cOldChar,char cNewChar){
-
- unsigned char ucCharCounter;
-
- for(ucCharCounter=0;pcString[ucCharCounter]!='\0';ucCharCounter++){
- if(pcString[ucCharCounter] == cOldChar) pcString[ucCharCounter] = cNewChar;
- }
-}
-
-
-
-enum Result Tokenizer::eHexStringToUInt(char pcStr[],unsigned int *puiValue){
-
- unsigned char ucCharCounter;
-
- if((pcStr[0] != '0') | (pcStr[1] != 'x') | (pcStr[2] == '\0'))
- return NOK;
- *puiValue = 0;
- for(ucCharCounter=2;ucCharCounter<7;ucCharCounter++){
- if(pcStr[ucCharCounter] == '\0')
- return OK;
- *puiValue = *puiValue << 4;
- if(pcStr[ucCharCounter] >= 'A')
- *puiValue = *puiValue | (pcStr[ucCharCounter] - 'A' + 10);
- else
- *puiValue = *puiValue | (pcStr[ucCharCounter] - '0');
- }
- return OK;
-}
-
-
-unsigned char Tokenizer::ucFindTokensInString(char *pcString){
-
- unsigned char ucTokenPointer;
- unsigned char ucDelimiterCounter;
- char cCurrentChar;
- enum State {TOKEN, DELIMITER};
- enum State eState = DELIMITER;
- ucDelimiterCounter = 0;
-
- for(ucTokenPointer=0;;ucTokenPointer++){
- cCurrentChar = pcString[ucTokenPointer];
- switch(eState){
- case DELIMITER:
- if(cCurrentChar == '\0')
- return ucDelimiterCounter;
- else if(cCurrentChar == ' ') {}
- else {
- eState = TOKEN;
- asToken[ucDelimiterCounter].uValue.pcString = pcString+ucTokenPointer;
- ucDelimiterCounter++;
- }
- break;
- case TOKEN:
- if(cCurrentChar == '\0')
- return ucDelimiterCounter;
- else if(ucDelimiterCounter == MAX_TOKEN_NR)
- return ucDelimiterCounter;
- else if(cCurrentChar != ' ') {}
- else
- eState = DELIMITER;
- break;
- }
- }
-}
-
-enum Result Tokenizer::eStringToKeyword (char pcStr[],enum KeywordCode *peKeywordCode){
-
- unsigned char ucTokenCounter;
-
- for(ucTokenCounter=0;ucTokenCounter<MAX_TOKEN_NR;ucTokenCounter++){
- if (!strcmp(pcStr, asKeywordList[ucTokenCounter].cString)) {
- *peKeywordCode = asKeywordList[ucTokenCounter].eCode;
- return OK;
- }
- }
- return NOK;
-}
-
-void Tokenizer::DecodeTokens(unsigned char ucTokenCnt){
-
- unsigned char ucTokenCounter;
- Token* tValue;
-
- for(ucTokenCounter=0;ucTokenCounter<ucTokenCnt;ucTokenCounter++){
- tValue = &asToken[ucTokenCounter];
- if (eStringToKeyword(tValue->uValue.pcString,&tValue->uValue.eKeyword) == OK) tValue->eType = KEYWORD;
- else if (eHexStringToUInt(tValue->uValue.pcString,&tValue->uValue.uiNumber) == OK) tValue->eType = NUMBER;
- else tValue->eType = STRING;
- }
-}
-
-void Tokenizer::DecodeMsg(char *pcString){
-
- ucTokenCnt = ucFindTokensInString(pcString);
- ReplaceCharactersInString(pcString,' ','\0');
- DecodeTokens(ucTokenCnt);
-}
-
-enum TokenType Tokenizer::eGetTokenType(unsigned char ucIdx) {
- return asToken[ucIdx].eType;
-}
-
-unsigned char Tokenizer::GetTokenCnt(void) {
- return ucTokenCnt;
-}
-
-enum KeywordCode Tokenizer::eGetKeyword(unsigned char ucIdx) {
- return asToken[ucIdx].uValue.eKeyword;
-}