| 4011 | } |
| 4012 | |
| 4013 | void BfSystem::RemoveOldData() |
| 4014 | { |
| 4015 | { |
| 4016 | AutoCrit autoCrit(mDataLock); |
| 4017 | |
| 4018 | for (int i = 0; i < (int)mTypeDefDeleteQueue.size(); i++) |
| 4019 | { |
| 4020 | auto typeDef = mTypeDefDeleteQueue[i]; |
| 4021 | mTypeDefDeleteQueue[i] = NULL; |
| 4022 | BfLogSys(this, "RemoveOldData deleting from mTypeDefDeleteQueue %p\n", typeDef); |
| 4023 | delete typeDef; |
| 4024 | } |
| 4025 | mTypeDefDeleteQueue.Clear(); |
| 4026 | |
| 4027 | if (!mProjectDeleteQueue.IsEmpty()) |
| 4028 | { |
| 4029 | for (auto project : mProjectDeleteQueue) |
| 4030 | project->mDeleteStage = BfProject::DeleteStage_AwaitingRefs; |
| 4031 | |
| 4032 | for (auto typeDef : mTypeDefs) |
| 4033 | if (typeDef->mProject->mDeleteStage == BfProject::DeleteStage_AwaitingRefs) |
| 4034 | typeDef->mProject->mDeleteStage = BfProject::DeleteStage_Queued; |
| 4035 | |
| 4036 | for (auto parser : mParsers) |
| 4037 | if ((parser->mProject != NULL) && (parser->mProject->mDeleteStage == BfProject::DeleteStage_AwaitingRefs)) |
| 4038 | parser->mProject->mDeleteStage = BfProject::DeleteStage_Queued; |
| 4039 | |
| 4040 | for (int projectIdx = 0; projectIdx < (int)mProjectDeleteQueue.size(); projectIdx++) |
| 4041 | { |
| 4042 | auto project = mProjectDeleteQueue[projectIdx]; |
| 4043 | if (project->mDeleteStage == BfProject::DeleteStage_AwaitingRefs) |
| 4044 | { |
| 4045 | mProjectDeleteQueue.RemoveAtFast(projectIdx); |
| 4046 | delete project; |
| 4047 | projectIdx--; |
| 4048 | } |
| 4049 | } |
| 4050 | } |
| 4051 | } |
| 4052 | |
| 4053 | RemoveOldParsers(); |
| 4054 | } |
| 4055 | |
| 4056 | void BfSystem::VerifyTypeDef(BfTypeDef* typeDef) |
| 4057 | { |
no test coverage detected