Пример #1
0
        private static void GenerateIntelliControls(ParsedControlList controls, string intelliFileControls)
        {
            //nome file per i controlli registrati
            string tmp = Path.GetTempFileName();

            using (StreamWriter sw = new StreamWriter(tmp, false, new UTF8Encoding(false)))
            {
                using (JsonTextWriter writer = new JsonTextWriter(sw))
                {
                    writer.Formatting = Newtonsoft.Json.Formatting.Indented;
                    writer.WriteStartArray();

                    foreach (var c in controls)
                    {
                        writer.WriteStartObject();
                        writer.WritePropertyName(JsonConstants.DATA_TYPE);
                        writer.WriteValue(c.Key);
                        writer.WritePropertyName(JsonConstants.CONTROLS);
                        writer.WriteStartArray();
                        foreach (var c1 in c.Value)
                        {
                            writer.WriteValue(c1.Name);
                        }
                        writer.WriteEndArray();
                        writer.WriteEndObject();
                    }
                    writer.WriteEndArray();
                }
            }
            File.Copy(tmp, intelliFileControls, true);
            File.Delete(tmp);
        }
Пример #2
0
        public static int GenerateIntellisense(string path)
        {
            //salverò i file nel path di installazione
            string installationPath = Helper.GetInstallationPath(path);

            if (string.IsNullOrEmpty(installationPath))
            {
                Diagnostic.WriteLine("Cannot find installation path");
                return(-1);
            }
            //GenerateIntelliDB(path, installationPath);
            //cerco tutti i file con estensione *.cpp
            List <string> files      = new List <string>();
            string        appsFolder = Path.Combine(installationPath, "standard\\applications");
            string        tbFolder   = Path.Combine(installationPath, "standard\\taskbuilder");

            //metto i sorgenti delle applicazioni
            files.AddRange(Directory.GetFiles(appsFolder, "*.h", SearchOption.AllDirectories));
            files.AddRange(Directory.GetFiles(appsFolder, "*.cpp", SearchOption.AllDirectories));

            //e gli interface di tb
            files.AddRange(Directory.GetFiles(tbFolder, "*interface.cpp", SearchOption.AllDirectories));

            string intelliFileControls = Path.Combine(installationPath, JsonConstants.INTELLI_FILE_CONTROLS);
            string intelliFileDbts     = Path.Combine(installationPath, JsonConstants.INTELLI_FILE_DBTS);
            string hjsonOwnerFile      = Path.Combine(installationPath, JsonConstants.HJSON_DOC_OWNER);

            if (UpdateNeeded(files.ToArray(), new string[] { intelliFileControls, intelliFileDbts, hjsonOwnerFile }))
            {
                ParsedControlList controls = new ParsedControlList();
                CppInfo           info     = new CppInfo();
                foreach (string f in files)
                {
                    CPPParser parser = new CPPParser(controls, info);
                    Diagnostic.WriteLine("Parsing file " + f);
                    parser.Parse(f);
                }

                GenerateIntelliControls(controls, intelliFileControls);

                GenerateIntelliDbts(info, intelliFileDbts);

                GenerateHJsonOwnerMap(info, hjsonOwnerFile, appsFolder);
            }
            return(0);
        }