static void OutputClassMethodMockDeclarations(CodeGen.Formatter output, CodeGen.Interface classData, Dictionary<string, CodeGen.QualifiableType> typeDictionary) { foreach (CodeGen.Interface.Method m in classData.Methods) { if (m.IsOverload) continue; output.WriteIndent(); output.Write("CALL_COUNTER_WITH_MOCK(" + m.Name + "Method, "); if (m.ReturnsHResult()) { output.Write("HRESULT"); } else { output.Write(typeDictionary[m.NativeReturnType].NativeName); } output.Write("("); for (int i=0; i<m.Parameters.Count; i++) { output.Write(GetParameterTypeNameIncludingIndirection(m.Parameters[i], typeDictionary)); if (m.Parameters[i].IsArray) { output.Write(", UINT32"); } if (i < m.Parameters.Count - 1) output.Write(", "); } output.Write("));"); output.WriteLine(); } output.WriteLine(); }
static void OutputClassMethodMockDeclarations(CodeGen.Formatter output, CodeGen.Interface classData, Dictionary <string, CodeGen.QualifiableType> typeDictionary) { foreach (CodeGen.Interface.Method m in classData.Methods) { if (m.IsOverload) { continue; } int projectedParameterCount = 0; for (int i = 0; i < m.Parameters.Count; i++) { projectedParameterCount++; if (m.Parameters[i].IsArray) { projectedParameterCount++; } } string constSuffix = m.IsConst ? "_CONST" : ""; output.WriteIndent(); output.Write($"MOCK_METHOD{projectedParameterCount}{constSuffix}({m.Name}, "); if (m.ReturnsHResult()) { output.Write("HRESULT"); } else { output.Write(typeDictionary[m.NativeReturnType].NativeName); } output.Write("("); for (int i = 0; i < m.Parameters.Count; i++) { output.Write(GetParameterTypeNameIncludingIndirection(m.Parameters[i], typeDictionary)); if (m.Parameters[i].IsArray) { output.Write(", UINT32"); } if (i < m.Parameters.Count - 1) { output.Write(", "); } } output.Write("));"); output.WriteLine(); } output.WriteLine(); }
static void GetInheritanceHierarchy(string keyName, CodeGen.Program.ProcessedInputFiles processedInputFiles, List <CodeGen.Interface> inheritanceHierarchy) { CodeGen.Interface interfaceType = processedInputFiles.TypeDictionary[keyName] as CodeGen.Interface; inheritanceHierarchy.Add(interfaceType); string extends = interfaceType.NativeNameOfIntheritanceParent; if (extends != "IUnknown") { GetInheritanceHierarchy(extends, processedInputFiles, inheritanceHierarchy); } }
static void OutputClassMethodDefinitions(CodeGen.Formatter output, CodeGen.Interface classData, Dictionary <string, CodeGen.QualifiableType> typeDictionary) { output.WriteLine("//"); output.WriteLine("// " + classData.NativeName); output.WriteLine("//"); output.WriteLine(); foreach (CodeGen.Interface.Method m in classData.Methods) { if (m.IsOverload) { continue; } output.WriteIndent(); if (m.ReturnsHResult()) { output.Write("STDMETHOD(" + m.Name + ")("); } else { output.Write("STDMETHOD_(" + typeDictionary[m.NativeReturnType].NativeName + ", " + m.Name + ")("); } output.Indent(); for (int i = 0; i < m.Parameters.Count; i++) { output.WriteLine(); string parameterString = GetParameterTypeNameIncludingIndirection(m.Parameters[i], typeDictionary) + " " + m.Parameters[i].Name; output.WriteIndent(); output.Write(parameterString); if (m.Parameters[i].IsArray) { output.Write(","); output.WriteLine(); output.WriteIndent(); output.Write("UINT32 " + m.Parameters[i].Name + "Count"); } if (i < m.Parameters.Count - 1) { output.Write(","); } } string constString = m.IsConst ? " const" : ""; output.Write(")" + constString + " override"); output.WriteLine(); output.Unindent(); output.WriteLine("{"); output.Indent(); output.WriteIndent(); if (m.NativeReturnType != "void") { output.Write("return "); } output.Write(m.Name + "Method.WasCalled("); for (int i = 0; i < m.Parameters.Count; i++) { output.Write(m.Parameters[i].Name); if (m.Parameters[i].IsArray) { output.Write(", " + m.Parameters[i].Name + "Count"); } if (i < m.Parameters.Count - 1) { output.Write(", "); } } output.Write(");"); output.WriteLine(); output.Unindent(); output.WriteLine("}"); output.WriteLine(); } }