Mercurial > mm7
diff FrameTableInc.cpp @ 701:d5b16a44d9b3
frame_table parser, new files for UI func
author | Gloval |
---|---|
date | Mon, 18 Mar 2013 22:53:56 +0400 |
parents | 9c0607679772 |
children | a9c1fb7483c2 |
line wrap: on
line diff
--- a/FrameTableInc.cpp Sun Mar 17 22:46:18 2013 +0200 +++ b/FrameTableInc.cpp Mon Mar 18 22:53:56 2013 +0400 @@ -1,3 +1,137 @@ #include "FrameTableInc.h" -struct FrameTableTxtLine stru_F8B5E8; // weak +#include <memory.h> +//identical function to work in differnt threads + +//----- (004BE3BF) -------------------------------------------------------- +FrameTableTxtLine *texture_frame_table_txt_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table) + { + bool new_token_flag; // edx@3 + bool in_quotes; // [sp+Ch] [bp-4h]@3 + char* parse_pos; + unsigned char test_char; + int i; + + static char tokens_buff1[1000]; + static struct FrameTableTxtLine temp_tokens_table1; // weak + + temp_tokens_table1.uPropCount = 0; + if ( str_to_parse && *str_to_parse ) + { + parse_pos=(char*)str_to_parse; + new_token_flag = true; + in_quotes = false; + for(i = 0; (i<1000)&&(temp_tokens_table1.uPropCount < 30) ; ++i) + { + test_char=*parse_pos; + tokens_buff1[i]=test_char; + if ( !test_char ) + break; + if ( (test_char != ' ') && (test_char != ',') && (test_char != '\t') || in_quotes ) + { + if ( test_char == '"' ) + { + tokens_buff1[i]= '\0'; + new_token_flag = true; + if ( in_quotes ) + in_quotes = false; + else + { + in_quotes = true; + if ( *(parse_pos+1) == '"' ) + { + temp_tokens_table1.pProperties[temp_tokens_table1.uPropCount] = &tokens_buff1[i]; + ++temp_tokens_table1.uPropCount; + } + } + } + else + { + if ( new_token_flag ) + { + temp_tokens_table1.pProperties[temp_tokens_table1.uPropCount] = &tokens_buff1[i]; + ++temp_tokens_table1.uPropCount; + } + new_token_flag = false; + } + } + else + { + tokens_buff1[i]= '\0'; + new_token_flag = true; + } + ++parse_pos; + } + tokens_buff1[i]= '\0'; + } + memcpy(tokens_table, &temp_tokens_table1, sizeof(FrameTableTxtLine)); + return tokens_table; + } +// F8BA58: using guessed type FrameTableTxtLine static_stru_F8BA58; + +//----- (004BE485) -------------------------------------------------------- +FrameTableTxtLine * frame_table_txt_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table) + { + bool new_token_flag; // edx@3 + bool in_quotes; // [sp+Ch] [bp-4h]@3 + char* parse_pos; + unsigned char test_char; + int i; + + static char tokens_buff2[1000]; + static struct FrameTableTxtLine temp_tokens_table2; // weak + temp_tokens_table2.uPropCount = 0; + + if ( str_to_parse && *str_to_parse ) + { + parse_pos=(char*)str_to_parse; + new_token_flag = true; + in_quotes = false; + for(i = 0; (i<1000)&&(temp_tokens_table2.uPropCount < 30); ++i) + { + test_char=*parse_pos; + tokens_buff2[i]=test_char; + if ( !test_char ) + break; + if ( (test_char != ' ') && (test_char != ',') && (test_char != '\t') || in_quotes ) + { + if ( test_char == '"' ) + { + tokens_buff2[i]= '\0'; + new_token_flag = true; + if ( in_quotes ) + in_quotes = false; + else + { + in_quotes = true; + if ( *(parse_pos+1) == '"' ) + { + temp_tokens_table2.pProperties[temp_tokens_table2.uPropCount] = &tokens_buff2[i]; + ++temp_tokens_table2.uPropCount; + } + } + } + else + { + if ( new_token_flag ) + { + temp_tokens_table2.pProperties[temp_tokens_table2.uPropCount] = &tokens_buff2[i]; + ++temp_tokens_table2.uPropCount; + } + new_token_flag = false; + } + } + else + { + tokens_buff2[i]= '\0'; + new_token_flag = true; + } + ++parse_pos; + } + + tokens_buff2[i]= '\0'; + } + memcpy(tokens_table, &temp_tokens_table2, sizeof(FrameTableTxtLine)); + return tokens_table; + } +