///////////////////////////////////////////////////////////// // Subsystem1.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 "Subsystem1.h" #include #include //----< announce self >-------------------------------------- std::string Subsystem1::say(const std::string& msg) { std::ostringstream out; out << "\n Subsystem1:"; 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 Subsystem1::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 Subsystem1"; XmlNode^ text = doc->CreateTextNode(temp); Node->AppendChild(text); doc->AppendChild(Node); doc->Save("Facade-Subsystem1.output.xml"); String^ output = doc->ToString(); Console::Write("\n {0}\n\n",output); } //----< entry point >---------------------------------------- void main(int argc, char* argv[]) { Subsystem1 ss1; std::string temp; if(argc == 1) temp = "no message from Facade"; else temp = argv[1]; ss1.save(ss1.say(temp)); Console::Write("\nPress key to quit: "); Console::ReadKey(); }