///////////////////////////////////////////// // MT1Q2b.cpp - Scope class #include "MT1Q2b.h" #include #include #include int main() { std::cout << "\n MT1Q2b - Scope class and sorting by complexity"; std::cout << "\n ================================================\n"; //Scope s1; //s1.name() = "Scope1"; //s1.file() = "MT1Q2.cpp"; //s1.type() = "function"; //s1.start() = 23; //s1.end() = 88; //s1.complexity() = 6; //s1.childType() = Scope::ChildType() = { "for", "if", "for" }; Scope s1 { "Scope1", "MT1Q2.cpp", "function", 23, 88, 6, { "for", "if", "for" } }; Scope s2 { "Scope2", "MT1Q2.cpp", "for", 27, 42, 3, { "for", "if" } }; Scope s3 { "Scope3", "MT1Q2.cpp", "for", 29, 40, 2, { "if" } }; Scope s4 { "Scope4", "MT1Q2.cpp", "if", 35, 39, 1, {} }; Scope s5 { "Scope5", "MT1Q2.cpp", "if", 41, 42, 1, {} }; Scope s6 { "Scope6", "MT1Q2.cpp", "if", 45, 52, 1, {} }; Scope s7 { "Scope7", "MT1Q2.cpp", "for", 60, 84, 1, {} }; // sorting vector of scopes using Scopes = std::vector; Scopes scopes{ &s6, &s4, &s3, &s1, &s2, &s5 }; std::sort(std::begin(scopes), std::end(scopes), Scope::more); for (auto pScope : scopes) { std::cout << "\n " << pScope->name() << " - complexity = " << pScope->complexity(); std::cout << ", type = " << pScope->type(); if (pScope->numberChildren() > 0) { std::cout << ", child types = "; for (auto type : pScope->childType()) std::cout << type << " "; } } // non-stressing test of scope matching std::cout << "\n"; for (auto pScope : scopes) { if (Scope::match(pScope, &s2)) std::cout << "\n " << pScope->name() << " matches " << s2.name(); else std::cout << "\n " << pScope->name() << " does not match " << s2.name(); } std::cout << "\n\n"; }