Esempio n. 1
0
        private static void WriteCppMethods(List <MethodInterpreter> closure, StringBuilder sb, ClosureEntities crRuntime)
        {
            var cppMethods = closure
                             .Where(m => m.Kind == MethodKind.RuntimeCppMethod)
                             .ToArray();

            var methodInterpreter = cppMethods.FirstOrDefault();

            if (methodInterpreter == null)
            {
                return;
            }
            foreach (var interpreter in cppMethods)
            {
                var cppInterpreter = (CppMethodInterpreter)interpreter;
                var runtimeLibrary = cppInterpreter.CppRepresentation;
                if (LinkingData.SetInclude(runtimeLibrary.Header))
                {
                    sb.AppendFormat("#include \"{0}\"", runtimeLibrary.Header).AppendLine();
                }
                var sbDeclaration = CppWriteSignature.WriteSignature(interpreter, crRuntime, false);
                sb.Append(sbDeclaration);
                sb.AppendFormat("{{\n{0}\n}}", runtimeLibrary.Source).AppendLine();
            }
        }
        static void WriteCppMethods(List <MethodInterpreter> closure, CodeOutput sb, ClosureEntities crRuntime)
        {
            var cppMethods = closure
                             .Where(m => m.Kind == MethodKind.RuntimeCppMethod)
                             .ToArray();

            var methodInterpreter = cppMethods.FirstOrDefault();

            if (methodInterpreter == null)
            {
                return;
            }
            foreach (var interpreter in cppMethods)
            {
                var cppInterpreter = (CppMethodInterpreter)interpreter;
                var runtimeLibrary = cppInterpreter.CppRepresentation;
                if (LinkingData.SetInclude(runtimeLibrary.Header))
                {
                    sb.AppendFormat("#include \"{0}\"\n", runtimeLibrary.Header);
                }
                CppWriteSignature.WriteSignature(sb, interpreter, crRuntime, false);
                sb.BracketOpen()
                .Append(runtimeLibrary.Source)
                .BracketClose();
            }
        }
        public static string WriteMethodSignature(MethodInterpreter interpreter, CrRuntimeLibrary crRuntime)
        {
            if (interpreter.Method == null)
            {
                Console.WriteLine("Should not be null");
                return("");
            }
            var sb = CppWriteSignature.WriteSignature(interpreter, crRuntime, true);

            return(sb.ToString());
        }
Esempio n. 4
0
        public static string WriteMethodSignature(MethodInterpreter interpreter, ClosureEntities closureEntities)
        {
            if (interpreter.Method == null)
            {
                Console.WriteLine("Should not be null");
                return("");
            }
            var sb = CppWriteSignature.WriteSignature(interpreter, closureEntities, true);

            return(sb.ToString());
        }
        public static void WriteMethodSignature(CodeOutput codeOutput, MethodInterpreter interpreter,
                                                ClosureEntities closureEntities)
        {
            if (interpreter.Method == null)
            {
                Console.WriteLine("Should not be null");
                return;
            }

            CppWriteSignature.WriteSignature(codeOutput, interpreter, closureEntities, true);
        }
        public static string WriteCode(MethodInterpreter midRepresentation)
        {
            var operations = midRepresentation.MidRepresentation.LocalOperations;
            var headerSb   = new StringBuilder();
            var sb         = CppWriteSignature.WriteSignature(midRepresentation);

            headerSb.AppendLine(sb.ToString());
            headerSb.Append("{");
            var bodySb      = ComputeBodySb(operations, midRepresentation.MidRepresentation.Vars);
            var variablesSb = ComputeVariableSb(midRepresentation.MidRepresentation);
            var finalSb     = new StringBuilder();

            finalSb.AppendLine(headerSb.ToString());
            finalSb.AppendLine(variablesSb.ToString());
            finalSb.AppendLine(bodySb.ToString());
            return(finalSb.ToString());
        }
        public static string WriteCode(MethodInterpreter interpreter, TypeDescriptionTable typeTable,
                                       CrRuntimeLibrary crRuntime)
        {
            var operations = interpreter.MidRepresentation.LocalOperations;
            var headerSb   = new StringBuilder();
            var sb         = CppWriteSignature.WriteSignature(interpreter, crRuntime);

            headerSb.AppendLine(sb.ToString());
            headerSb.Append("{");
            var bodySb      = ComputeBodySb(operations, interpreter.MidRepresentation.Vars, typeTable, interpreter, crRuntime);
            var variablesSb = ComputeVariableSb(interpreter.MidRepresentation, interpreter);
            var finalSb     = new StringBuilder();

            finalSb.AppendLine(headerSb.ToString());
            finalSb.AppendLine(variablesSb.ToString());
            finalSb.AppendLine(bodySb.ToString());
            return(finalSb.ToString());
        }