private void setChildContent(string tag, string value) { if ((value == null) || (value.Length == 0)) { m_xml.RemoveChild(tag); } else { m_xml.UpdateChildContent(tag, value); } }
// Called for copying <links2> from commonLinks.xml to a method or property. public void CopyLinks(Chilkat.Xml xLinks) { if (m_xml == null) { return; } m_xml.RemoveChild("links2"); Chilkat.Xml xCopy = new Chilkat.Xml(); xCopy.LoadXml(xLinks.GetXml()); m_xml.AddChildTree(xCopy); return; }
// For a method to be fully loaded from XML, the args must also be cached. protected void loadEntryXml(Chilkat.Xml p) { if (p == null) { return; } if (m_xml == p) { return; } m_xml = p; m_entryType = EntryTypeMethod; if (m_xml.TagEquals("property")) { m_entryType = EntryTypeProperty; } else if (m_xml.TagEquals("event")) { m_entryType = EntryTypeEvent; } // Cache info... m_name = m_xml.GetAttrValue("name"); // We no longer user "cppType" in the XML. It is derived from the generic type m_xml.RemoveChild("cppType"); //m_cppType = m_xml.GetChildContent("cppType"); // m_genericType = m_xml.GetChildContent("gType"); if (m_genericType.Equals("long")) { GenericType = "int"; } if (m_genericType.Equals("unsigned int") || m_genericType.Equals("uint32")) { GenericType = "unsigned long"; } m_gt = ChilkatTypes.genericToGt(m_genericType); if (m_gt == ChilkatTypes.GT_DATE) { Chilkat.Xml gtXml = m_xml.FindChild("gType"); m_outputArgFileTime = gtXml.HasAttrWithValue("filetime", "1"); m_outputArgSystemTime = gtXml.HasAttrWithValue("systemtime", "1"); // If both are false, then assume systemtime. if (!m_outputArgFileTime && !m_outputArgSystemTime) { m_outputArgSystemTime = true; } } m_hasCppOutputArg = (m_gt == ChilkatTypes.GT_STRING || m_gt == ChilkatTypes.GT_BYTES || m_gt == ChilkatTypes.GT_DATE); if (m_hasCppOutputArg) { m_cppOutputArgName = m_xml.GetAttrValue("outArgName"); if (m_cppOutputArgName == null) { if (m_gt == ChilkatTypes.GT_DATE) { m_cppOutputArgName = "outDate"; } else if (m_gt == ChilkatTypes.GT_BYTES) { m_cppOutputArgName = "outBytes"; } else { m_cppOutputArgName = "outStr"; } } } m_descrip = m_xml.GetChildContent("descrip"); m_ifdef = m_xml.GetChildContent("ifdef"); m_introVersion = m_xml.GetChildContent("iversion"); m_cppEnabled = m_xml.HasAttrWithValue("cpp", "1"); m_dnEnabled = m_xml.HasAttrWithValue("dn", "1"); m_axEnabled = m_xml.HasAttrWithValue("ax", "1"); m_hasEvents = m_xml.HasAttrWithValue("events", "1"); m_hasStatusReturn = m_xml.HasAttrWithValue("status", "1"); m_isBaseEntry = m_xml.HasAttrWithValue("baseEntry", "1"); m_noPublish = m_xml.HasAttrWithValue("noPublish", "1"); m_deprecated = m_xml.HasAttrWithValue("deprecated", "1"); m_noxojo = m_xml.HasAttrWithValue("noxojo", "1"); m_windowsOnly = m_xml.HasAttrWithValue("windowsOnly", "1"); m_noSwig = m_xml.HasAttrWithValue("noSwig", "1"); m_noObjectiveC = m_xml.HasAttrWithValue("noObjC", "1"); m_noNodeJs = m_xml.HasAttrWithValue("noNodeJs", "1"); m_noSwig = m_xml.HasAttrWithValue("noSwig", "1"); m_noC = m_xml.HasAttrWithValue("noC", "1"); m_noWinRT = m_xml.HasAttrWithValue("noWinRT", "1"); m_lnameCk = m_lnameNoCk = StringUtil.ToLowerFirstChar(m_name); if (m_lnameCk.Equals("stat") || m_lnameCk.Equals("accept") || m_lnameCk.Equals("from")) { m_lnameCk = "ck_" + m_lnameCk; } m_refdocLinks = initRefdocLinks(); return; }
// Convert method XML to its Async variant so that we can use the normal code generation methods.. static private void convertMethodToAsync(Chilkat.Xml xml) { //<method cpp="1" dn="1" ax="1" events="1" name="QuickGetObj" axId="221"> // <gType>HttpResponse</gType> // <cppType>CkHttpResponse *</cppType> string returnType = xml.GetChildContent("gType"); // Is this an object? If so, we'll add a link to the async_returnObject example int returnGt = ChilkatTypes.genericToGt(returnType); xml.UpdateChildContent("gType", "Task"); xml.UpdateChildContent("cppType", "CkTask *"); xml.RemoveAttribute("status"); // It returns a Task object, not a status bool.. xml.RemoveAttribute("outArgName"); // If this method had an output arg, the async does not... int axId = xml.GetAttrValueInt("axId"); axId += 500; xml.UpdateAttributeInt("axId", axId); string origMethodName = xml.GetAttrValue("name"); xml.UpdateAttribute("name", origMethodName + "Async"); xml.UpdateChildContent("descrip", "Creates an asynchronous task to call the " + origMethodName + " method with the arguments provided. (Async methods are available starting in Chilkat v9.5.0.52.)"); xml.RemoveChild("links"); //bool bAlreadyHasAsyncExamples = false; // Check to see if this method already has async examples. // If so, when we leave it alone. // Otherwise, we add the default example.. //RefdocLinks rdLinks = new RefdocLinks(); // Chilkat.Xml xLinks2 = xml.FindChild("links2"); //if (xLinks2 != null) // { // int numChildren = xLinks2.NumChildren; // for (int i = 0; i < numChildren; i++) // { // Chilkat.Xml xLink = xLinks2.GetChild(i); // if (xLink.HasAttrWithValue("async", "1")) // { // //bAlreadyHasAsyncExamples = true; // break; // } // } // } //if (!bAlreadyHasAsyncExamples) // { // xml.RemoveChild("links2"); // Add to the links, because these standard links will be placed in the superscript link area.. Chilkat.Xml xmlLinks2 = xml.FindChild("links2"); if (xmlLinks2 == null) { xmlLinks2 = xml.NewChild("links2", ""); } Chilkat.Xml xmlLink; xmlLink = xmlLinks2.NewChild("link", ""); xmlLink.AddAttribute("lang", "activex"); xmlLink.AddAttribute("linkType", "external"); xmlLink.AddAttribute("async", "1"); xmlLink.AddAttribute("superscriptAsync", "1"); xmlLink.NewChild2("text", "VB6 Programs MUST Call FinalizeThreadPool Just Before Exiting"); xmlLink.NewChild2("url", "https://www.example-code.com/vb6/async_finalize_thread_pool_on_exit.asp"); xmlLink = xmlLinks2.NewChild("link", ""); xmlLink.AddAttribute("lang", "nodejs"); xmlLink.AddAttribute("linkType", "external"); xmlLink.AddAttribute("async", "1"); xmlLink.AddAttribute("superscriptAsync", "1"); xmlLink.NewChild2("text", "How to Run a Node.js Asynchronous Task"); xmlLink.NewChild2("url", "http://www.cknotes.com/asynchronous-chilkat-methods-in-node-js/"); xmlLink = xmlLinks2.NewChild("link", ""); xmlLink.AddAttribute("lang", "activex"); xmlLink.AddAttribute("linkType", "external"); xmlLink.AddAttribute("async", "1"); xmlLink.AddAttribute("superscriptAsync", "1"); xmlLink.NewChild2("text", "Asynchronous Methods in VB6 - Be Very Careful with Callbacks"); xmlLink.NewChild2("url", "http://www.chilkatforum.com/questions/10870/asynchronous-methods-in-vb6-be-very-careful-with-callbacks"); xmlLink = xmlLinks2.NewChild("link", ""); xmlLink.AddAttribute("skiplang", "nodejs"); xmlLink.AddAttribute("async", "1"); xmlLink.AddAttribute("superscriptAsync", "1"); xmlLink.AddAttribute("linkType", "example"); xmlLink.NewChild2("text", "How to Run an Asynchronous Task"); xmlLink.NewChild2("url", "async_task.asp"); if (returnGt == ChilkatTypes.GT_OBJECT) { xmlLink = xmlLinks2.NewChild("link", ""); xmlLink.AddAttribute("skiplang", "nodejs"); xmlLink.AddAttribute("async", "1"); xmlLink.AddAttribute("superscriptAsync", "1"); xmlLink.AddAttribute("linkType", "example"); xmlLink.NewChild2("text", "How to Return an Object from an Async Task"); xmlLink.NewChild2("url", "async_returnObject.asp"); } //} return; }