| 192 | } |
| 193 | |
| 194 | void HLSLCompiler::m_freeImmediate() |
| 195 | { |
| 196 | for (int i = 0; i < m_immFuncs.size(); i++) { |
| 197 | M4::HLSLArgument* arg = m_immFuncs[i]->argument; |
| 198 | |
| 199 | while (arg) { |
| 200 | M4::HLSLArgument* curArg = arg; |
| 201 | arg = arg->nextArgument; |
| 202 | delete curArg; |
| 203 | } |
| 204 | |
| 205 | delete m_immFuncs[i]; |
| 206 | } |
| 207 | for (int i = 0; i < m_immStructs.size(); i++) { |
| 208 | M4::HLSLStructField* field = m_immStructs[i]->field; |
| 209 | |
| 210 | while (field) { |
| 211 | M4::HLSLStructField* curArg = field; |
| 212 | field = field->nextField; |
| 213 | delete curArg; |
| 214 | } |
| 215 | |
| 216 | delete m_immStructs[i]; |
| 217 | } |
| 218 | m_immStructs.clear(); |
| 219 | m_immFuncs.clear(); |
| 220 | } |
| 221 | |
| 222 | // hlslparser allocator functions |
| 223 | void* New(void* userData, size_t size) |