Menu

Commit [r4033]  Maximize  Restore  History

Added minimal new TDatabase singleton: no functionality yet.

delphidabbler 2013-12-01

changed /branches/parsnip/Src/DB.UMain.pas
/branches/parsnip/Src/DB.UMain.pas Diff Switch to side-by-side view
--- a/branches/parsnip/Src/DB.UMain.pas
+++ b/branches/parsnip/Src/DB.UMain.pas
@@ -21,14 +21,31 @@
 
 uses
   // Project
+  CS.Database.SnippetsTable,
   CS.Database.Types,
   DB.UCategory,
   DB.USnippet,
   UIStringList,
-  UMultiCastEvents;
+  UMultiCastEvents,
+  USingleton;
 
 
 type
+
+  TDatabase = class(TSingleton)
+  strict private
+    class var
+      fInstance: TDatabase;
+    class function GetInstance: TDatabase; static;
+  strict private
+    var
+      fSnippetsTable: TDBSnippetsTable;
+  strict protected
+    procedure Initialize; override;
+    procedure Finalize; override;
+  public
+    class property Instance: TDatabase read GetInstance;
+  end;
 
   {
   TDatabaseChangeEventKind:
@@ -273,6 +290,8 @@
   databases.
     @return Singleton object.
   }
+
+function Database: TDatabase;
 
 
 implementation
@@ -570,6 +589,11 @@
       }
   end;
 
+function Database: TDatabase;
+begin
+  Result := TDatabase.Instance;
+end;
+
 function _Database: _IDatabase;
   {Returns singleton instance of object that encapsulates main and user
   databases.
@@ -1221,6 +1245,27 @@
   Result := (Snippet as TSnippetEx).GetReferences;
 end;
 
+{ TDatabase }
+
+procedure TDatabase.Finalize;
+begin
+  fSnippetsTable.Free;
+  inherited;
+end;
+
+class function TDatabase.GetInstance: TDatabase;
+begin
+  if not Assigned(fInstance) then
+    fInstance := TDatabase.Create;
+  Result := fInstance;
+end;
+
+procedure TDatabase.Initialize;
+begin
+  inherited;
+  fSnippetsTable := TDBSnippetsTable.Create;
+end;
+
 initialization
 
 
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.