コード例 #1
0
ファイル: Manager.cs プロジェクト: flibX0r/NaturalDocs
        /* Function: Start
         *
         * Dependencies:
         *
         *		- <Config.Manager> must be started before using the rest of the class.
         */
        public bool Start(Errors.ErrorList errors)
        {
            EngineInstance.AddStartupWatcher(this);

            SQLite.API.Result sqliteResult = SQLite.API.Initialize();

            if (sqliteResult != SQLite.API.Result.OK)
            {
                throw new SQLite.Exceptions.UnexpectedResult("Could not initialize SQLite.", sqliteResult);
            }

            Path databaseFile = EngineInstance.Config.WorkingDataFolder + "/CodeDB.nd";

            connection = new SQLite.Connection();
            bool success = false;

            if (!EngineInstance.HasIssues(StartupIssues.NeedToStartFresh |
                                          StartupIssues.FileIDsInvalidated |
                                          StartupIssues.CodeIDsInvalidated |
                                          StartupIssues.CommentIDsInvalidated))
            {
                try
                {
                    connection.Open(databaseFile, false);

                    Version version = GetVersion();

                    if (BinaryFile.IsCompatible(version, Engine.Instance.Version, "2.0.2") == true)
                    {
                        LoadSystemVariables();
                        success = true;
                    }
                }
                catch { }
            }

            if (!success)
            {
                connection.Dispose();

                if (System.IO.File.Exists(databaseFile))
                {
                    System.IO.File.Delete(databaseFile);
                }

                connection.Open(databaseFile, true);
                CreateDatabase();

                EngineInstance.AddStartupIssues(StartupIssues.CodeIDsInvalidated |
                                                StartupIssues.CommentIDsInvalidated |
                                                StartupIssues.NeedToReparseAllFiles,
                                                dontNotify: this);
            }

            started = true;
            return(true);
        }
コード例 #2
0
ファイル: Accessor.cs プロジェクト: flibX0r/NaturalDocs
        // Group: Functions
        // __________________________________________________________________________


        /* Function: Accessor
         */
        internal Accessor(CodeDB.Manager manager, SQLite.Connection connection, bool priority)
        {
            this.manager     = manager;
            this.connection  = connection;
            lockHeld         = LockType.None;
            this.priority    = priority;
            transactionLevel = 0;

            classIDLookupCache   = new IDLookupCache <Symbols.ClassString>();
            contextIDLookupCache = new IDLookupCache <Symbols.ContextString>();
        }
コード例 #3
0
        /* Function: Start
         *
         * Dependencies:
         *
         *		- <Config.Manager> must be started before using the rest of the class.
         */
        public bool Start(Errors.ErrorList errors)
        {
            SQLite.API.Result sqliteResult = SQLite.API.Initialize();

            if (sqliteResult != SQLite.API.Result.OK)
            {
                throw new SQLite.Exceptions.UnexpectedResult("Could not initialize SQLite.", sqliteResult);
            }

            Path databaseFile = EngineInstance.Config.WorkingDataFolder + "/CodeDB.nd";

            connection = new SQLite.Connection();
            bool success = false;

            if (EngineInstance.Config.ReparseEverything == false)
            {
                try
                {
                    connection.Open(databaseFile, false);

                    Version version = GetVersion();

                    if (Version.BinaryDataCompatibility(version, Engine.Instance.Version, "2.0") == true)
                    {
                        LoadSystemVariables();
                        success = true;
                    }
                }
                catch { }
            }

            if (!success)
            {
                connection.Dispose();

                if (System.IO.File.Exists(databaseFile))
                {
                    System.IO.File.Delete(databaseFile);
                }

                EngineInstance.Config.ReparseEverything = true;
                reparsingEverything = true;

                connection.Open(databaseFile, true);
                CreateDatabase();
            }

            return(true);
        }