|
- unit uvkuBase;
-
- {$mode objfpc}{$H+}
-
- interface
-
- uses
- Classes, SysUtils,
- Vulkan;
-
- type
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TvkuObject = class(TObject)
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TvkuHandle = class(TvkuObject)
- private
- fOwnsHandle: Boolean;
- public
- property OwnsHandle: Boolean read fOwnsHandle write fOwnsHandle;
- constructor Create;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TvkuAllocHandle = class(TvkuHandle)
- private
- fAllocCallbacks: PVkAllocationCallbacks;
- protected
- property AllocCallbacks: PVkAllocationCallbacks read fAllocCallbacks;
-
- procedure SetAllocCallbacks(const aAllocCallbacks: TVkAllocationCallbacks);
- procedure SetAllocCallbacks(const aAllocCallbacks: PVkAllocationCallbacks);
- procedure DisposeAllocCallbacks;
- public
- constructor Create;
- destructor Destroy; override;
- end;
-
- implementation
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TvkuHandle/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TvkuHandle.Create;
- begin
- inherited Create;
- fOwnsHandle := true;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TvkuAllocHandle////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TvkuAllocHandle.SetAllocCallbacks(const aAllocCallbacks: TVkAllocationCallbacks);
- begin
- if not Assigned(fAllocCallbacks) then
- new(fAllocCallbacks);
- fAllocCallbacks^ := aAllocCallbacks;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TvkuAllocHandle.SetAllocCallbacks(const aAllocCallbacks: PVkAllocationCallbacks);
- begin
- if Assigned(aAllocCallbacks) then
- SetAllocCallbacks(aAllocCallbacks^);
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TvkuAllocHandle.DisposeAllocCallbacks;
- begin
- if not Assigned(fAllocCallbacks) then
- exit;
- Dispose(fAllocCallbacks);
- fAllocCallbacks := nil;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TvkuAllocHandle.Create;
- begin
- inherited Create;
- fAllocCallbacks := nil;
- end;
-
- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- destructor TvkuAllocHandle.Destroy;
- begin
- inherited Destroy;
- DisposeAllocCallbacks;
- end;
-
- end.
|