Classe TTb_Access

Unit

Declaração

type TTb_Access = class(TTb_Access_consts)

Descrição

No description available, ancestor TTb_Access_consts description follows

A classe TTb_Access_consts é usada para declarar todas as constantes da classe TTb_Access

Hierarquia

Visão Geral

Métodos

Public class Procedure Create;
Public class Procedure Destroy;
Public class function FExisteCodigo(Var IxF:IndexFile; Const codigo:tString):Boolean;
Public class Procedure CreateTAccess;
Public class Procedure DestroyTAccess;
Public class function EscrevaTurboError(DatF : DataFile;Const NR : Longint;Error:SmallWord):Boolean;
Public class function TAIOCheck(VAR DatF : DataFile;Const R : LONGINT):Boolean;
Public class function SincronizaPosChave(Var datFIx:IndexFile;Const NrCurrent:Longint; KeyCurrent : TaKeyStr):Boolean;
Public class function GetRec(var DatF : DataFile;Const R : Longint;var Buffer ):Boolean; overload;
Public class function GetRecBlock(VAR DatF : DataFile; Const R : LONGINT; delta:Word;Var BlocksRead:Word ;VAR Buffer ):Boolean;
Public class function PutRec(var DatF : DataFile;Const R : Longint;var Buffer;Const Transaction_Current : T_TTransaction):Boolean; overload;
Public class function PutRec(var DatF : DataFile;Const R : Longint;var Buffer ):Boolean; overload;
Public class function MakeFile(var DatF : DataFile;Const FName : FileName;Const RecLen : SmallWord):Integer; overload;
Public class function FDelStrBrancos(S:tString):tString;
Public class function FileNameTemp_Ext(const aPath:PathStr;Var NomeArqTemp : PathStr;const Extencao : PathStr):Boolean; overload;
Public class function FileNameTemp_Ext(Var NomeArqTemp : PathStr;const Extencao : PathStr):Boolean; Overload;
Public class function FileNameTemp(const Extencao : PathStr):PathStr;
Public class function FileName_Seq(Const aName:PathStr;Const aExt : PathStr):PathStr;
Public class function IsPortLocal(WPort: TTb_Access.tString):Boolean;
Public class function DelFile( Const Nome : NameStr):Boolean;
Public class function SetOkAddRecFirstFree(Const aOkAddRecFirstFree: Boolean):Boolean;
Public class function TestaSePodeAbrirArquivo(Const FName : PathStr): Byte;
Public class function FileShared(Const FName : PathStr) : Boolean;
Public class function FTrocaExtencao(Const NomeArq:NameStr; Extencao:PathStr) : PathStr;
Public class function Ren(NomeFonte,NomeDestino: PathStr) : Boolean;
Public class function OkRecSizeMismatch(Const FName : FileName;Const RecLenBufferRecord : SmallWord):Boolean;
Public class function ModifyStructurFile(Const FName:FileName;Const RecLenDest : SmallWord ):Boolean; virtual; abstract;
Public class function OpenFile(var DatF:DataFile; Const FName : FileName; Const RecLen:SmallWord):Integer;
Public class function ReadHeader(VAR DatF : DataFile):Boolean;
Public class function PutFileHeader(VAR DatF : DataFile):Boolean;
Public class function NaoMuDOuHeader(VAR DatF : DataFile) : BOOLEAN;
Public class function MudouHeaderEmMemoria(VAR DatF : DataFile) : BOOLEAN;
Public class function aCloseFile(VAR DatF : DataFile):boolean;
Public class function CloseFile(VAR DatF : DataFile):boolean; Overload;
Public class function CloseFile(VAR DatF : DataFile;OkCondicional:Boolean):boolean; Overload;
Public class function FlushFile(VAR DatF : DataFile):Boolean; overload;
Public class function TraveRegistro(VAR DatF : DataFile; Const R : LONGINT):Boolean;
Public class function DestraveRegistro(Var DatF : DataFile;Const R : Longint):Boolean;
Public class function TraveHeader(VAR DatF : DataFile):Boolean;
Public class function DestraveHeader(VAR DatF : DataFile):Boolean;
Public class function IoResult(Var DatF : DataFile) : Integer; overload;
Public class function FileSize(VAR DatF : DataFile):Longint; Overload;
Public class Procedure NewRec(VAR DatF : DataFile;VAR R : LONGINT );
Public class function AddRec(var DatF : DataFile;var R : Longint;var Buffer ):Boolean; overload;
Public class function DeleteRecord(VAR DatF : DataFile;Const R : LONGINT; Var Buffer ):Boolean; overload;
Public class function DeleteRec(var DatF : DataFile;Const R : Longint):Boolean; overload;
Public class function FileLen(VAR DatF : DataFile) : LONGINT; overload;
Public class function UsedRecs(VAR DatF : DataFile) : LONGINT; Overload;
Public class function UsedRecs(VAR DatF : DataFile;OK_GetHeader : Boolean) : LONGINT; Overload;
Public class function UsedRecs(Var IxF :IndexFile;OK_GetHeaderDoIndice : Boolean) : LONGINT; Overload;
Public class function UsedRecs(Var IxF :IndexFile) : LONGINT; Overload;
Public class function UsedRecs(Const FileName:PathStr) : Longint; Overload;
Public class Procedure TaPack(VAR Page : TaPage;Const KeyL : BYTE);
Public class Procedure TaUnpack(VAR Page : TaPage; Const KeyL : BYTE);
Public class function Multiplo_Mais_proximo_de_N(Const K,N:Longint): Longint;
Public class function MakeIndex(var IxF : IndexFile;Const FName : FileName;Const KeyLen,S : byte):Integer; overload;
Public class function OpenIndex(var IxF : IndexFile;Const FName : FileName;Const KeyLen,S : byte):Integer; overload;
Public class Procedure LeiaHeaderDoIndice( VAR IxF : IndexFile);
Public class function aCloseIndex(VAR IxF : IndexFile):Boolean; overload;
Public class function CloseIndex(VAR IxF : IndexFile):boolean; Overload;
Public class function CloseIndex(VAR IxF : IndexFile;OkCondicional:Boolean):boolean; Overload;
Public class function FlushIndex(VAR IxF : IndexFile):boolean; overload;
Public class function EraseFile(VAR DatF : DataFile):boolean; overload;
Public class function EraseIndex(VAR IxF : IndexFile):boolean; overload;
Public class function TaGetPage(VAR IxF : IndexFile;Const R : LONGINT;VAR PgPtr : TaPagePtr):boolean;
Public class Procedure TaNewPage(VAR IxF : IndexFile; VAR R : LONGINT; VAR PgPtr : TaPagePtr);
Public class Procedure TaDeletePage(var IxF : IndexFile; VAR R : LONGINT; VAR PgPtr : TaPagePtr);
Public class Procedure ClearKey(VAR IxF : IndexFile); overload;
Public class function NextKey(VAR IxF : IndexFile; VAR DataRecNum : LONGINT; VAR ProcKey ):Boolean; overload;
Public class function PrevKey(var IxF : IndexFile; var DataRecNum : Longint; var ProcKey ):Boolean; overload;
Public class Procedure TaXKey(VAR K:TaKeyStr; Const KeyL : BYTE);
Public class function TaCompKeys(Const K1 ,K2; DR1,DR2 : LONGINT; Const Dup : BOOLEAN ) : Shortint;
Public class function TaFindKey(VAR IxF : IndexFile;VAR DataRecNum : LONGINT;VAR ProcKey ):boolean;
Public class function FindKey(var IxF : IndexFile;var DataRecNum : Longint;var ProcKey ):Boolean; overload;
Public class function FindKeyTop(var IxF : IndexFile;var DataRecNum : Longint;var ProcKey ):Boolean; overload;
Public class function SearchKey(var IxF : IndexFile; var DataRecNum : Longint; var ProcKey:TaKeyStr):Boolean; overload;
Public class function SearchKeyTop(var IxF : IndexFile; var DataRecNum : Longint; var ProcKey:TaKeyStr;Const Okequal : Boolean):Boolean; overload;
Public class Procedure TaUpdatePage(VAR IxF : IndexFile; VAR R : LONGINT; VAR PgPtr : TaPagePtr; Const Transaction_Current : T_TTransaction); overload;
Public class Procedure AddKey_Search_Insert( var IxF : IndexFile; Var PrPgRef1 : LONGINT; VAR PrPgRef2,c : LONGINT; VAR PagePtr1,PagePtr2 : TaPagePtr; VAR ProcItem1, ProcItem2 : TaItem; vAR PassUp, okAddKey : BOOLEAN; Const ProcKey : TaKeyStr; Const DataRecNum : Longint; VAR K,L : SmallInt; Var R : SmallInt );
Public class Procedure AddKey_Search_Init_ProcItem1(Const ProcKey : TaKeyStr; Const DataRecNum : Longint; vAR PassUp : BOOLEAN; VAR ProcItem1 : TaItem);
Public class Procedure AddKey_Search(var IxF : IndexFile; PrPgRef1 : LONGINT; VAR PrPgRef2,c : LONGINT; VAR PagePtr1,PagePtr2 : TaPagePtr; VAR ProcItem1, ProcItem2 : TaItem; vAR PassUp, okAddKey : BOOLEAN; Const ProcKey : TaKeyStr; Const DataRecNum : Longint; VAR K,L : SmallInt );
Public class function AddKey(var IxF : IndexFile; Const DataRecNum : Longint; Const ProcKey : TaKeyStr):Boolean; overload;
Public class function DeleteKey(var IxF : IndexFile;Const DataRecNum : Longint;var ProcKey:TaKeyStr ):Boolean; OVERLOAD;
Public class function FGetHeaderDataFile(Const FileName: PathStr;Var Header : TsImagemHeader;Var aFileSize : Longint):Boolean;
Public class function FTamRegDataFile(Const FileName: PathStr):SmallWord;
Public class function NewFileName(FileName,Extencao:PathStr):PathStr;
Public class function FTb(Const FileName:PathStr):PathStr;
Public class function FObj(Const FileName:PathStr):PathStr;
Public class function FIx(Const FileName:PathStr):PathStr;
Public class function FDup(Const FileName:PathStr):PathStr;
Public class Procedure AssignDataFile(Var DatF :DataFile; Const aFileName:PathStr; aBaseSize, aRecSize:SmallWord; aF :TStream; WTipo : AnsiChar ); Overload;
Public class Procedure AssignDataFile(Var DatF :DataFile; Const aFileName:PathStr; aBaseSize, aRecSize:SmallWord); Overload;
Public class Procedure AssignIndexFile(Var IxF : IndexFile; Const aFileName : PathStr; aBaseSize, aRecSize : SmallWord); Overload;
Public class function UpperCase(str:AnsiString):AnsiString;
Public class function Lowcase(str:AnsiString):AnsiString;
Public class function Int2str(Const L : LongInt) : TTb_Access.tString;
Public class procedure Beep;
Public class function spc(Const campo:AnsiString;Const tam :Longint):AnsiString;
Public class function SetOkTransaction(Const aOkTransaction : BOOLEAN):BOOLEAN;
Public class function StartTransaction(Const aDelta : SmallWord):Integer; Overload;
Public class function StartTransaction(Const DatF : DataFile ; Var aok_Set_Transaction : Boolean): Integer; Overload;
Public class function SetTransaction(const OnOff:Boolean;out WOK : Boolean):Boolean; Overload;
Public class function COMMIT:Boolean; Overload;
Public class function COMMIT(Const Wok_Set_Transaction : Boolean):Boolean; Overload;
Public class Procedure Rollback;
Public class function SetTransaction(const OnOff:Boolean; out wok, Wok_Set_Transaction:Boolean):Boolean; Overload;
Public class function GetFileName_Transaction(): tString;
Public class function Assign_Transaction(Const aFileName : PathStr):SmallWord;
Public class function TransactionPendant_Error:Boolean;
Public class function TransactionPendant:Boolean;
Public class Procedure Truncate(Var DatF: DataFile;NR : LongInt);
Public class Procedure CopyFrom(Font_DatF: DataFile ;Var Dest_DatF: DataFile); Overload;
Public class Procedure CopyFrom(Font_IxF : IndexFile ;Var Dest_IxF : IndexFile); Overload;

Descrição

Métodos

Public class Procedure Create;
 
Public class Procedure Destroy;
 
Public class function FExisteCodigo(Var IxF:IndexFile; Const codigo:tString):Boolean;
 
Public class Procedure CreateTAccess;
 
Public class Procedure DestroyTAccess;
 
Public class function EscrevaTurboError(DatF : DataFile;Const NR : Longint;Error:SmallWord):Boolean;
 
Public class function TAIOCheck(VAR DatF : DataFile;Const R : LONGINT):Boolean;
 
Public class function SincronizaPosChave(Var datFIx:IndexFile;Const NrCurrent:Longint; KeyCurrent : TaKeyStr):Boolean;
 
Public class function GetRec(var DatF : DataFile;Const R : Longint;var Buffer ):Boolean; overload;
 
Public class function GetRecBlock(VAR DatF : DataFile; Const R : LONGINT; delta:Word;Var BlocksRead:Word ;VAR Buffer ):Boolean;
 
Public class function PutRec(var DatF : DataFile;Const R : Longint;var Buffer;Const Transaction_Current : T_TTransaction):Boolean; overload;
 
Public class function PutRec(var DatF : DataFile;Const R : Longint;var Buffer ):Boolean; overload;
 
Public class function MakeFile(var DatF : DataFile;Const FName : FileName;Const RecLen : SmallWord):Integer; overload;
 
Public class function FDelStrBrancos(S:tString):tString;
 
Public class function FileNameTemp_Ext(const aPath:PathStr;Var NomeArqTemp : PathStr;const Extencao : PathStr):Boolean; overload;
 
Public class function FileNameTemp_Ext(Var NomeArqTemp : PathStr;const Extencao : PathStr):Boolean; Overload;
 
Public class function FileNameTemp(const Extencao : PathStr):PathStr;
 
Public class function FileName_Seq(Const aName:PathStr;Const aExt : PathStr):PathStr;
 
Public class function IsPortLocal(WPort: TTb_Access.tString):Boolean;
 
Public class function DelFile( Const Nome : NameStr):Boolean;
 
Public class function SetOkAddRecFirstFree(Const aOkAddRecFirstFree: Boolean):Boolean;
 
Public class function TestaSePodeAbrirArquivo(Const FName : PathStr): Byte;
 
Public class function FileShared(Const FName : PathStr) : Boolean;
 
Public class function FTrocaExtencao(Const NomeArq:NameStr; Extencao:PathStr) : PathStr;
 
Public class function Ren(NomeFonte,NomeDestino: PathStr) : Boolean;
 
Public class function OkRecSizeMismatch(Const FName : FileName;Const RecLenBufferRecord : SmallWord):Boolean;

A class método OkRecSizeMismatch retorna true se o Tamanho do registro em arquivo é maior que o tamanho do buffer do registro em Memória.

Public class function ModifyStructurFile(Const FName:FileName;Const RecLenDest : SmallWord ):Boolean; virtual; abstract;
 
Public class function OpenFile(var DatF:DataFile; Const FName : FileName; Const RecLen:SmallWord):Integer;
 
Public class function ReadHeader(VAR DatF : DataFile):Boolean;
 
Public class function PutFileHeader(VAR DatF : DataFile):Boolean;
 
Public class function NaoMuDOuHeader(VAR DatF : DataFile) : BOOLEAN;
 
Public class function MudouHeaderEmMemoria(VAR DatF : DataFile) : BOOLEAN;
 
Public class function aCloseFile(VAR DatF : DataFile):boolean;
 
Public class function CloseFile(VAR DatF : DataFile):boolean; Overload;
 
Public class function CloseFile(VAR DatF : DataFile;OkCondicional:Boolean):boolean; Overload;
 
Public class function FlushFile(VAR DatF : DataFile):Boolean; overload;
 
Public class function TraveRegistro(VAR DatF : DataFile; Const R : LONGINT):Boolean;
 
Public class function DestraveRegistro(Var DatF : DataFile;Const R : Longint):Boolean;
 
Public class function TraveHeader(VAR DatF : DataFile):Boolean;
 
Public class function DestraveHeader(VAR DatF : DataFile):Boolean;
 
Public class function IoResult(Var DatF : DataFile) : Integer; overload;
 
Public class function FileSize(VAR DatF : DataFile):Longint; Overload;
 
Public class Procedure NewRec(VAR DatF : DataFile;VAR R : LONGINT );
 
Public class function AddRec(var DatF : DataFile;var R : Longint;var Buffer ):Boolean; overload;
 
Public class function DeleteRecord(VAR DatF : DataFile;Const R : LONGINT; Var Buffer ):Boolean; overload;
 
Public class function DeleteRec(var DatF : DataFile;Const R : Longint):Boolean; overload;
 
Public class function FileLen(VAR DatF : DataFile) : LONGINT; overload;
 
Public class function UsedRecs(VAR DatF : DataFile) : LONGINT; Overload;
 
Public class function UsedRecs(VAR DatF : DataFile;OK_GetHeader : Boolean) : LONGINT; Overload;
 
Public class function UsedRecs(Var IxF :IndexFile;OK_GetHeaderDoIndice : Boolean) : LONGINT; Overload;
 
Public class function UsedRecs(Var IxF :IndexFile) : LONGINT; Overload;
 
Public class function UsedRecs(Const FileName:PathStr) : Longint; Overload;
 
Public class Procedure TaPack(VAR Page : TaPage;Const KeyL : BYTE);
 
Public class Procedure TaUnpack(VAR Page : TaPage; Const KeyL : BYTE);
 
Public class function Multiplo_Mais_proximo_de_N(Const K,N:Longint): Longint;
 
Public class function MakeIndex(var IxF : IndexFile;Const FName : FileName;Const KeyLen,S : byte):Integer; overload;
 
Public class function OpenIndex(var IxF : IndexFile;Const FName : FileName;Const KeyLen,S : byte):Integer; overload;
 
Public class Procedure LeiaHeaderDoIndice( VAR IxF : IndexFile);
 
Public class function aCloseIndex(VAR IxF : IndexFile):Boolean; overload;
 
Public class function CloseIndex(VAR IxF : IndexFile):boolean; Overload;
 
Public class function CloseIndex(VAR IxF : IndexFile;OkCondicional:Boolean):boolean; Overload;
 
Public class function FlushIndex(VAR IxF : IndexFile):boolean; overload;
 
Public class function EraseFile(VAR DatF : DataFile):boolean; overload;
 
Public class function EraseIndex(VAR IxF : IndexFile):boolean; overload;
 
Public class function TaGetPage(VAR IxF : IndexFile;Const R : LONGINT;VAR PgPtr : TaPagePtr):boolean;
 
Public class Procedure TaNewPage(VAR IxF : IndexFile; VAR R : LONGINT; VAR PgPtr : TaPagePtr);
 
Public class Procedure TaDeletePage(var IxF : IndexFile; VAR R : LONGINT; VAR PgPtr : TaPagePtr);
 
Public class Procedure ClearKey(VAR IxF : IndexFile); overload;
 
Public class function NextKey(VAR IxF : IndexFile; VAR DataRecNum : LONGINT; VAR ProcKey ):Boolean; overload;
 
Public class function PrevKey(var IxF : IndexFile; var DataRecNum : Longint; var ProcKey ):Boolean; overload;
 
Public class Procedure TaXKey(VAR K:TaKeyStr; Const KeyL : BYTE);
 
Public class function TaCompKeys(Const K1 ,K2; DR1,DR2 : LONGINT; Const Dup : BOOLEAN ) : Shortint;
 
Public class function TaFindKey(VAR IxF : IndexFile;VAR DataRecNum : LONGINT;VAR ProcKey ):boolean;
 
Public class function FindKey(var IxF : IndexFile;var DataRecNum : Longint;var ProcKey ):Boolean; overload;
 
Public class function FindKeyTop(var IxF : IndexFile;var DataRecNum : Longint;var ProcKey ):Boolean; overload;
 
Public class function SearchKey(var IxF : IndexFile; var DataRecNum : Longint; var ProcKey:TaKeyStr):Boolean; overload;
 
Public class function SearchKeyTop(var IxF : IndexFile; var DataRecNum : Longint; var ProcKey:TaKeyStr;Const Okequal : Boolean):Boolean; overload;
 
Public class Procedure TaUpdatePage(VAR IxF : IndexFile; VAR R : LONGINT; VAR PgPtr : TaPagePtr; Const Transaction_Current : T_TTransaction); overload;
 
Public class Procedure AddKey_Search_Insert( var IxF : IndexFile; Var PrPgRef1 : LONGINT; VAR PrPgRef2,c : LONGINT; VAR PagePtr1,PagePtr2 : TaPagePtr; VAR ProcItem1, ProcItem2 : TaItem; vAR PassUp, okAddKey : BOOLEAN; Const ProcKey : TaKeyStr; Const DataRecNum : Longint; VAR K,L : SmallInt; Var R : SmallInt );
 
Public class Procedure AddKey_Search_Init_ProcItem1(Const ProcKey : TaKeyStr; Const DataRecNum : Longint; vAR PassUp : BOOLEAN; VAR ProcItem1 : TaItem);
 
Public class Procedure AddKey_Search(var IxF : IndexFile; PrPgRef1 : LONGINT; VAR PrPgRef2,c : LONGINT; VAR PagePtr1,PagePtr2 : TaPagePtr; VAR ProcItem1, ProcItem2 : TaItem; vAR PassUp, okAddKey : BOOLEAN; Const ProcKey : TaKeyStr; Const DataRecNum : Longint; VAR K,L : SmallInt );
 
Public class function AddKey(var IxF : IndexFile; Const DataRecNum : Longint; Const ProcKey : TaKeyStr):Boolean; overload;
 
Public class function DeleteKey(var IxF : IndexFile;Const DataRecNum : Longint;var ProcKey:TaKeyStr ):Boolean; OVERLOAD;
 
Public class function FGetHeaderDataFile(Const FileName: PathStr;Var Header : TsImagemHeader;Var aFileSize : Longint):Boolean;
 
Public class function FTamRegDataFile(Const FileName: PathStr):SmallWord;
 
Public class function NewFileName(FileName,Extencao:PathStr):PathStr;
 
Public class function FTb(Const FileName:PathStr):PathStr;
 
Public class function FObj(Const FileName:PathStr):PathStr;
 
Public class function FIx(Const FileName:PathStr):PathStr;
 
Public class function FDup(Const FileName:PathStr):PathStr;
 
Public class Procedure AssignDataFile(Var DatF :DataFile; Const aFileName:PathStr; aBaseSize, aRecSize:SmallWord; aF :TStream; WTipo : AnsiChar ); Overload;
 
Public class Procedure AssignDataFile(Var DatF :DataFile; Const aFileName:PathStr; aBaseSize, aRecSize:SmallWord); Overload;
 
Public class Procedure AssignIndexFile(Var IxF : IndexFile; Const aFileName : PathStr; aBaseSize, aRecSize : SmallWord); Overload;
 
Public class function UpperCase(str:AnsiString):AnsiString;
 
Public class function Lowcase(str:AnsiString):AnsiString;
 
Public class function Int2str(Const L : LongInt) : TTb_Access.tString;
 
Public class procedure Beep;
 
Public class function spc(Const campo:AnsiString;Const tam :Longint):AnsiString;
 
Public class function SetOkTransaction(Const aOkTransaction : BOOLEAN):BOOLEAN;
 
Public class function StartTransaction(Const aDelta : SmallWord):Integer; Overload;
 
Public class function StartTransaction(Const DatF : DataFile ; Var aok_Set_Transaction : Boolean): Integer; Overload;
 
Public class function SetTransaction(const OnOff:Boolean;out WOK : Boolean):Boolean; Overload;
 
Public class function COMMIT:Boolean; Overload;
 
Public class function COMMIT(Const Wok_Set_Transaction : Boolean):Boolean; Overload;
 
Public class Procedure Rollback;
 
Public class function SetTransaction(const OnOff:Boolean; out wok, Wok_Set_Transaction:Boolean):Boolean; Overload;

O Método SetTransaction inicia uma transação.

  • PARÂMETROS

    • OnOff

      • True : Inicia a transação;

      • False : Executa Rollback se na chamada anterior;

    • Var WOK :

      • Retorna true se a transacao foi inicializada e false caso contrario, usado para executar rollback ou commite se o processo criou a trasacao

    • Var Wok_Set_Transaction

Public class function GetFileName_Transaction(): tString;
 
Public class function Assign_Transaction(Const aFileName : PathStr):SmallWord;
 
Public class function TransactionPendant_Error:Boolean;
 
Public class function TransactionPendant:Boolean;
 
Public class Procedure Truncate(Var DatF: DataFile;NR : LongInt);
 
Public class Procedure CopyFrom(Font_DatF: DataFile ;Var Dest_DatF: DataFile); Overload;
 
Public class Procedure CopyFrom(Font_IxF : IndexFile ;Var Dest_IxF : IndexFile); Overload;
 

Gerado por PasDoc 0.16.0.