///////////////////////////////////////////// // MT2Q2a.cpp - Scope class #include "MT2Q2a.h" #include #include #include #include using Scopes = std::vector; int main() { std::cout << "\n MT2Q2a - Scope class and matching function"; std::cout << "\n ============================================\n"; Scope s1; s1.name() = "Scope1"; s1.type() = "function"; s1.childType() = std::vector() = { "for", "if", "for" }; s1.complexity() = 6; Scope s2; s2.name() = "Scope2"; s2.type() = "for"; s2.childType() = std::vector() = { "for", "if" }; s2.complexity() = 3; Scope s3; s3.name() = "Scope3"; s3.type() = "for"; s3.childType() = std::vector() = { "if" }; s3.complexity() = 2; Scope s4; s4.name() = "Scope4"; s4.type() = "if"; s4.childType() = std::vector(); s4.complexity() = 1; Scope s5; s5.name() = "Scope5"; s5.type() = "if"; s5.childType() = std::vector(); s5.complexity() = 1; Scope s6; s6.name() = "Scope6"; s6.type() = "for"; s6.childType() = std::vector(); s6.complexity() = 1; // non-stressing test of scope matching using Scopes = std::vector; Scopes scopes{ &s6, &s4, &s3, &s1, &s2, &s5 }; 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"; }