src/ldconfig.cc

changeset 603
47e7773c7841
parent 600
209e3f1f7b2c
child 606
3dd6f343ec06
equal deleted inserted replaced
602:ac1744536b33 603:47e7773c7841
24 24
25 // ============================================================================= 25 // =============================================================================
26 // Helper function for parseLDConfig 26 // Helper function for parseLDConfig
27 // ----------------------------------------------------------------------------- 27 // -----------------------------------------------------------------------------
28 static bool parseLDConfigTag (LDConfigParser& pars, char const* tag, str& val) 28 static bool parseLDConfigTag (LDConfigParser& pars, char const* tag, str& val)
29 { int pos; 29 {
30 int pos;
30 31
31 // Try find the token and get its position 32 // Try find the token and get its position
32 if (!pars.findToken (pos, tag, 1)) 33 if (!pars.findToken (pos, tag, 1))
33 return false; 34 return false;
34 35
37 } 38 }
38 39
39 // ============================================================================= 40 // =============================================================================
40 // ----------------------------------------------------------------------------- 41 // -----------------------------------------------------------------------------
41 void parseLDConfig() 42 void parseLDConfig()
42 { File* f = openLDrawFile ("LDConfig.ldr", false); 43 {
44 File* f = openLDrawFile ("LDConfig.ldr", false);
43 45
44 if (!f) 46 if (!f)
45 { critical (fmt (QObject::tr ("Unable to open LDConfig.ldr for parsing: %1"), 47 {
48 critical (fmt (QObject::tr ("Unable to open LDConfig.ldr for parsing: %1"),
46 strerror (errno))); 49 strerror (errno)));
47 return; 50 return;
48 } 51 }
49 52
50 // Read in the lines 53 // Read in the lines
51 for (str line : *f) 54 for (str line : *f)
52 { if (line.length() == 0 || line[0] != '0') 55 {
56 if (line.length() == 0 || line[0] != '0')
53 continue; // empty or illogical 57 continue; // empty or illogical
54 58
55 line.remove ('\r'); 59 line.remove ('\r');
56 line.remove ('\n'); 60 line.remove ('\n');
57 61
111 } 115 }
112 116
113 // ============================================================================= 117 // =============================================================================
114 // ----------------------------------------------------------------------------- 118 // -----------------------------------------------------------------------------
115 LDConfigParser::LDConfigParser (str inText, char sep) 119 LDConfigParser::LDConfigParser (str inText, char sep)
116 { m_tokens = inText.split (sep, QString::SkipEmptyParts); 120 {
121 m_tokens = inText.split (sep, QString::SkipEmptyParts);
117 m_pos = -1; 122 m_pos = -1;
118 } 123 }
119 124
120 // ============================================================================= 125 // =============================================================================
121 // ----------------------------------------------------------------------------- 126 // -----------------------------------------------------------------------------
122 bool LDConfigParser::isAtBeginning() 127 bool LDConfigParser::isAtBeginning()
123 { return m_pos == -1; 128 {
129 return m_pos == -1;
124 } 130 }
125 131
126 // ============================================================================= 132 // =============================================================================
127 // ----------------------------------------------------------------------------- 133 // -----------------------------------------------------------------------------
128 bool LDConfigParser::isAtEnd() 134 bool LDConfigParser::isAtEnd()
129 { return m_pos == m_tokens.size() - 1; 135 {
136 return m_pos == m_tokens.size() - 1;
130 } 137 }
131 138
132 // ============================================================================= 139 // =============================================================================
133 // ----------------------------------------------------------------------------- 140 // -----------------------------------------------------------------------------
134 bool LDConfigParser::getToken (str& val, const int pos) 141 bool LDConfigParser::getToken (str& val, const int pos)
135 { if (pos >= m_tokens.size()) 142 {
143 if (pos >= m_tokens.size())
136 return false; 144 return false;
137 145
138 val = m_tokens[pos]; 146 val = m_tokens[pos];
139 return true; 147 return true;
140 } 148 }
141 149
142 // ============================================================================= 150 // =============================================================================
143 // ----------------------------------------------------------------------------- 151 // -----------------------------------------------------------------------------
144 bool LDConfigParser::getNextToken (str& val) 152 bool LDConfigParser::getNextToken (str& val)
145 { return getToken (val, ++m_pos); 153 {
154 return getToken (val, ++m_pos);
146 } 155 }
147 156
148 // ============================================================================= 157 // =============================================================================
149 // ----------------------------------------------------------------------------- 158 // -----------------------------------------------------------------------------
150 bool LDConfigParser::peekNextToken (str& val) 159 bool LDConfigParser::peekNextToken (str& val)
151 { return getToken (val, m_pos + 1); 160 {
161 return getToken (val, m_pos + 1);
152 } 162 }
153 163
154 // ============================================================================= 164 // =============================================================================
155 // ----------------------------------------------------------------------------- 165 // -----------------------------------------------------------------------------
156 bool LDConfigParser::findToken (int& result, char const* needle, int args) 166 bool LDConfigParser::findToken (int& result, char const* needle, int args)
157 { for (int i = 0; i < (m_tokens.size() - args); ++i) 167 {
158 { if (m_tokens[i] == needle) 168 for (int i = 0; i < (m_tokens.size() - args); ++i)
159 { result = i; 169 {
170 if (m_tokens[i] == needle)
171 {
172 result = i;
160 return true; 173 return true;
161 } 174 }
162 } 175 }
163 176
164 return false; 177 return false;
165 } 178 }
166 179
167 // ============================================================================= 180 // =============================================================================
168 // ----------------------------------------------------------------------------- 181 // -----------------------------------------------------------------------------
169 void LDConfigParser::rewind() 182 void LDConfigParser::rewind()
170 { m_pos = -1; 183 {
184 m_pos = -1;
171 } 185 }
172 186
173 // ============================================================================= 187 // =============================================================================
174 // ----------------------------------------------------------------------------- 188 // -----------------------------------------------------------------------------
175 void LDConfigParser::seek (int amount, bool rel) 189 void LDConfigParser::seek (int amount, bool rel)
176 { m_pos = (rel ? m_pos : 0) + amount; 190 {
191 m_pos = (rel ? m_pos : 0) + amount;
177 } 192 }
178 193
179 // ============================================================================= 194 // =============================================================================
180 // ----------------------------------------------------------------------------- 195 // -----------------------------------------------------------------------------
181 int LDConfigParser::getSize() 196 int LDConfigParser::getSize()
182 { return m_tokens.size(); 197 {
198 return m_tokens.size();
183 } 199 }
184 200
185 // ============================================================================= 201 // =============================================================================
186 // ----------------------------------------------------------------------------- 202 // -----------------------------------------------------------------------------
187 bool LDConfigParser::tokenCompare (int inPos, const char* sOther) 203 bool LDConfigParser::tokenCompare (int inPos, const char* sOther)
188 { str tok; 204 {
205 str tok;
189 206
190 if (!getToken (tok, inPos)) 207 if (!getToken (tok, inPos))
191 return false; 208 return false;
192 209
193 return (tok == sOther); 210 return (tok == sOther);

mercurial