int main(int argc, char* argv[]) { Container c; stdStr directori = Convert::ToStdStr(argv[1]); Directory::SetCurrentDirectoryW(directori); std::cout<<Convert::ToString(Directory::GetCurrentDirectoryW()); Directory::FileCollection(Convert::ToStdStr(argv[argc-1])); headervec = Directory::getxvector(); stdStr final = Convert::ToStdStr(argv[2]); std::string data = Convert::ToString(final); std::transform(data.begin(), data.end(), data.begin(), ::toupper); stdStr packname = Convert::ToStdStr(data); c.Sethfile(Convert::ToString(packname)); depenfunc(packname); std::vector<std::string> indirectdep; cout<<endl; cout<<c.GetHfile()<<" Direct and Indirect dependencies are "<<endl; cout<<"---------------------------------------------"<<endl; functionremove(); indirectdep = c.GetRVector(); for(unsigned i =0; i<indirectdep.size();i++) { cout<<indirectdep[i]<<endl; } }
// The functionremove function removes the packagename or the inputted file name from the dependency list. Since there can be no cyclic dependency void functionremove() { Container c; std::vector<std::string> indirectdep; indirectdep = c.GetRVector(); vector<std::string>::iterator it1; it1 = find(indirectdep.begin(),indirectdep.end(),c.GetHfile()); // The c.GetHfile() gets the package name which is inputted or if(it1!=indirectdep.end()) //the file to which direct and indirect dependencies are determined { indirectdep.erase(it1); } c.SetRVector(indirectdep); }
//to determine the direct and indirect dependencies void Traverse::functionEdge(stdStr file) { Container c; Directory::FileCollection(file); std::vector<std::string> vec; stdStr final = file; std::string data = Convert::ToString(final); std::transform(data.begin(), data.end(), data.begin(), ::toupper); stdStr packname = Convert::ToStdStr(data); c.Sethfile(Convert::ToString(packname)); depenfunc(packname); std::vector<std::string> indirectdep; cout<<endl; cout<<c.GetHfile()<<" Direct and Indirect dependencies are "<<endl; cout<<"---------------------------------------------"<<endl; functionremove(); indirectdep = c.GetRVector(); for(unsigned i =0; i<indirectdep.size();i++) { cout<<indirectdep[i]<<endl; } }