///////////////////////////////////////////////////////////// // Subsystem3.cpp - Part of Facade Skeleton Demo // // // // Jim Fawcett, CSE776 - Design Patterns, Summer 2009 // ///////////////////////////////////////////////////////////// #using using namespace System; using namespace System::Text; using namespace System::Xml; #include "Subsystem3.h" #include #include //----< announce self >-------------------------------------- std::string Subsystem3::say(const std::string& msg) { std::ostringstream out; out << "\n Subsystem3:"; out << "\n " << msg.c_str(); return out.str(); } //----< convert from std::string to System::String >--------- String^ convert(const std::string& str) { StringBuilder^ temp = gcnew StringBuilder(); for(size_t i = 0; iAppend((wchar_t)str[i]); return temp->ToString(); } //----< save output in xml file and send to console >-------- void Subsystem3::save(const std::string& msg) { XmlDocument^ doc = gcnew XmlDocument(); XmlNode^ Decl = doc->CreateXmlDeclaration("1.0", "Utf-8", ""); doc->AppendChild(Decl); XmlElement^ Node = doc->CreateElement("output"); String^ temp = convert(msg) + "\n some very important output from Subsystem3"; XmlNode^ text = doc->CreateTextNode(temp); Node->AppendChild(text); doc->AppendChild(Node); doc->Save("Facade-Subsystem3.output.xml"); String^ output = doc->ToString(); Console::Write("\n {0}\n\n",output); } //----< entry point >---------------------------------------- void main(int argc, char* argv[]) { Subsystem3 ss3; std::string temp; if(argc == 1) temp = "no message from Facade"; else temp = argv[1]; ss3.save(ss3.say(temp)); Console::Write("\nPress key to quit: "); Console::ReadKey(); }