comparison Engine/Tables/FrameTableInc.cpp @ 2499:68cdef6879a0

engine folder
author Ritor1
date Fri, 19 Sep 2014 02:57:42 +0600
parents
children
comparison
equal deleted inserted replaced
2498:92eeeb5200f2 2499:68cdef6879a0
1 #define _CRTDBG_MAP_ALLOC
2 #include <stdlib.h>
3 #include <crtdbg.h>
4
5 #define _CRT_SECURE_NO_WARNINGS
6 #include "FrameTableInc.h"
7 #include <memory.h>
8 //identical function to work in differnt threads
9
10 //----- (004BE3BF) --------------------------------------------------------
11 FrameTableTxtLine* txt_file_frametable_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table)
12 {
13 bool new_token_flag; // edx@3
14 bool in_quotes; // [sp+Ch] [bp-4h]@3
15 char* parse_pos;
16 unsigned char test_char;
17 int i;
18
19 static char tokens_buff1[1000];
20 static struct FrameTableTxtLine temp_tokens_table1; // weak
21
22 temp_tokens_table1.uPropCount = 0;
23
24 if ( str_to_parse && *str_to_parse )
25 {
26 parse_pos=(char*)str_to_parse;
27 new_token_flag = true;
28 in_quotes = false;
29 for(i = 0; (i<1000)&&(temp_tokens_table1.uPropCount < 30) ; ++i)
30 {
31 test_char=*parse_pos;
32 tokens_buff1[i]=test_char;
33 if ( !test_char )
34 break;
35 if ( (test_char != ' ') && (test_char != ',') && (test_char != '\t') || in_quotes )
36 {
37 if ( test_char == '"' )
38 {
39 tokens_buff1[i]= '\0';
40 new_token_flag = true;
41 if ( in_quotes )
42 in_quotes = false;
43 else
44 {
45 in_quotes = true;
46 if ( *(parse_pos+1) == '"' )
47 {
48 temp_tokens_table1.pProperties[temp_tokens_table1.uPropCount] = &tokens_buff1[i];
49 ++temp_tokens_table1.uPropCount;
50 }
51 }
52 }
53 else
54 {
55 if ( new_token_flag )
56 {
57 temp_tokens_table1.pProperties[temp_tokens_table1.uPropCount] = &tokens_buff1[i];
58 ++temp_tokens_table1.uPropCount;
59 }
60 new_token_flag = false;
61 }
62 }
63 else
64 {
65 tokens_buff1[i]= '\0';
66 new_token_flag = true;
67 }
68 ++parse_pos;
69 }
70 tokens_buff1[i]= '\0';
71 }
72 memcpy(tokens_table, &temp_tokens_table1, sizeof(FrameTableTxtLine));
73 return tokens_table;
74 }
75 // F8BA58: using guessed type FrameTableTxtLine static_stru_F8BA58;
76
77 //----- (004BE485) --------------------------------------------------------
78 FrameTableTxtLine * frame_table_txt_parser(const char *str_to_parse, FrameTableTxtLine *tokens_table)
79 {
80 bool new_token_flag; // edx@3
81 bool in_quotes; // [sp+Ch] [bp-4h]@3
82 char* parse_pos;
83 unsigned char test_char;
84 int i;
85
86 static char tokens_buff2[1000];
87 static struct FrameTableTxtLine temp_tokens_table2; // weak
88 temp_tokens_table2.uPropCount = 0;
89
90 if ( str_to_parse && *str_to_parse )
91 {
92 parse_pos=(char*)str_to_parse;
93 new_token_flag = true;
94 in_quotes = false;
95 for(i = 0; (i<1000)&&(temp_tokens_table2.uPropCount < 30); ++i)
96 {
97 test_char=*parse_pos;
98 tokens_buff2[i]=test_char;
99 if ( !test_char )
100 break;
101 if ( (test_char != ' ') && (test_char != ',') && (test_char != '\t') || in_quotes )
102 {
103 if ( test_char == '"' )
104 {
105 tokens_buff2[i]= '\0';
106 new_token_flag = true;
107 if ( in_quotes )
108 in_quotes = false;
109 else
110 {
111 in_quotes = true;
112 if ( *(parse_pos+1) == '"' )
113 {
114 temp_tokens_table2.pProperties[temp_tokens_table2.uPropCount] = &tokens_buff2[i];
115 ++temp_tokens_table2.uPropCount;
116 }
117 }
118 }
119 else
120 {
121 if ( new_token_flag )
122 {
123 temp_tokens_table2.pProperties[temp_tokens_table2.uPropCount] = &tokens_buff2[i];
124 ++temp_tokens_table2.uPropCount;
125 }
126 new_token_flag = false;
127 }
128 }
129 else
130 {
131 tokens_buff2[i]= '\0';
132 new_token_flag = true;
133 }
134 ++parse_pos;
135 }
136
137 tokens_buff2[i]= '\0';
138 }
139 memcpy(tokens_table, &temp_tokens_table2, sizeof(FrameTableTxtLine));
140 return tokens_table;
141 }
142