/// <summary> /// Parses a C++ parameters. /// </summary> private void ParseParameters(XElement xElement, CppElement constructorOrMethodOrFunction) { int paramCount = 0; foreach (XElement parameter in xElement.Elements()) { if (parameter.Name.LocalName != "Argument") { continue; } CppParameter cppParameter = new CppParameter(); XAttribute nameAttribute = parameter.Attribute("name"); if (nameAttribute != null) { cppParameter.Name = nameAttribute.Value; } if (string.IsNullOrEmpty(cppParameter.Name)) { cppParameter.Name = "arg" + paramCount; } // All parameters without any annotations are considerate as In if (cppParameter.Attribute == ParameterAttributeMapping.None) { cppParameter.Attribute = ParameterAttributeMapping.In; } XAttribute typeAttribute = parameter.Attribute("type"); if (typeAttribute != null) { ResolveAndFillType(typeAttribute.Value, cppParameter); } constructorOrMethodOrFunction.Add(cppParameter); paramCount++; } }
/// <summary> /// Parses a C++ parameters. /// </summary> /// <param name="xElement">The gccxml <see cref="XElement"/> that describes a C++ parameter.</param> /// <param name="methodOrFunction">The method or function to populate.</param> private void ParseParameters(XElement xElement, CppElement methodOrFunction) { var paramCount = 0; foreach (var parameter in xElement.Elements()) { if (parameter.Name.LocalName != "Argument") { continue; } var cppParameter = new CppParameter { Name = parameter.AttributeValue("name") }; if (string.IsNullOrEmpty(cppParameter.Name)) { cppParameter.Name = "arg" + paramCount; } ParseAnnotations(parameter, cppParameter); // All parameters without any annotations are considerate as In if (cppParameter.Attribute == ParamAttribute.None) { cppParameter.Attribute = ParamAttribute.In; } Logger.PushContext("Parameter:[{0}]", cppParameter.Name); ResolveAndFillType(parameter.AttributeValue("type"), cppParameter); methodOrFunction.Add(cppParameter); Logger.PopContext(); paramCount++; } }