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;
+    }
+