Ejemplo n.º 1
0
        private void ImplementItem(ProjectConverter P, CodeWriter writer)
        {
            var paramName = P.GetParamNameFromInfo(Info.Parameters);

            writer.NewLine();
            writer.Write(Info.ReturnDataType == null ? "void" : $"typename e::system::MethodPtrPackager_Result<{Info.ReturnDataType}>::NativeType");
            writer.Write(" __stdcall ");
            writer.Write("eoc_export_");
            writer.Write(ExportId);
            writer.Write("(");
            for (int i = 0; i < Info.Parameters.Count; i++)
            {
                if (i != 0)
                {
                    writer.Write(", ");
                }
                writer.Write("typename e::system::MethodPtrPackager_Arg<");
                writer.Write(P.GetParameterTypeString(Info.Parameters[i]));
                writer.Write(">::NativeType ");
                writer.Write(paramName[i]);
            }
            writer.Write(")");
            using (writer.NewBlock())
            {
                writer.NewLine();
                writer.Write("return e::system::MethodPtrPackager<");
                writer.Write(Info.ReturnDataType == null ? "void" : Info.ReturnDataType.ToString());
                writer.Write("(");
                writer.Write(string.Join(", ", Info.Parameters.Select(x => P.GetParameterTypeString(x))));
                writer.Write(")");
                writer.Write(">::func<&" + Info.CppName + ">");
                writer.Write("(");
                writer.Write(string.Join(", ", paramName));
                writer.Write(");");
            }
        }