123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- unit fpdocproj;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils;
- Type
- { TFPDocPackage }
- TFPDocPackage = Class(TCollectionItem)
- private
- FContent: String;
- FDescriptions: TStrings;
- FImports: TStrings;
- FInputs: TStrings;
- FName: String;
- FOutput: String;
- Public
- constructor Create(ACollection: TCollection); override;
- destructor destroy; override;
- procedure Assign(Source : TPersistent); override;
- Property Name : String Read FName Write FName;
- Property Inputs : TStrings Read FinPuts;
- Property Descriptions : TStrings Read FDescriptions;
- Property Imports : TStrings read FIMports;
- Property ContentFile : String Read FContent Write FContent;
- Property Output : String Read FOutput Write FOutput;
- end;
- { TFPDocPackages }
- TFPDocPackages = Class(TCollection)
- private
- function GetP(AIndex : Integer): TFPDocPackage;
- procedure SetP(AIndex : Integer; const AValue: TFPDocPackage);
- Public
- Function IndexOfPackage(Const AName : String) : Integer;
- Function FindPackage(Const AName : String) : TFPDOcPackage;
- Property Packages[AIndex : Integer] : TFPDocPackage Read GetP Write SetP; Default;
- end;
- { TEngineOptions }
- TEngineOptions = Class(TPersistent)
- private
- FBackEndoptions: TStrings;
- FCPUTarget: String;
- FDefaultPackageName: String;
- FEmitNotes: Boolean;
- FEndianNess: String;
- FFormat: String;
- FHidePrivate: Boolean;
- FHideProtected: Boolean;
- FFallBackSeeAlsoLinks: Boolean;
- FIO: Boolean;
- FLanguage: String;
- FMoDir: String;
- FOSTarget: String;
- FSOPE: Boolean;
- FWarnDocumentationEmpty: Boolean;
- FWarnNoNode: Boolean;
- FDontTrim : Boolean;
- FInfoUsedFile: Boolean;
- FWarnXCT: Boolean;
- procedure SetBackendOptions(const AValue: TStrings);
- Public
- Constructor Create;
- Destructor Destroy; override;
- procedure Assign(Source : TPersistent); override;
- Published
- Property OSTarget : String Read FOSTarget Write FOStarget;
- Property CPUTarget : String Read FCPUTarget Write FCPUTarget;
- Property EndianNess : String Read FEndianNess Write FEndianNess;
- Property Language : String Read FLanguage Write fLanguage;
- Property Backend : String Read FFormat Write FFormat;
- Property BackendOptions : TStrings Read FBackEndoptions Write SetBackendOptions;
- Property StopOnParseError : Boolean Read FSOPE Write FSOPE;
- Property HideProtected : Boolean Read FHideProtected Write FHideProtected;
- Property FallBackSeeAlsoLinks :Boolean Read FFallBackSeeAlsoLinks Write FFallBackSeeAlsoLinks;
- Property WarnNoNode : Boolean Read FWarnNoNode Write FWarnNoNode;
- Property InfoUsedFile : Boolean Read FInfoUsedFile Write FInfoUsedFile;
- Property WarnDocumentationEmpty : Boolean Read FWarnDocumentationEmpty Write FWarnDocumentationEmpty;
- Property WarnXCT : Boolean Read FWarnXCT Write FWarnXCT;
- Property ShowPrivate : Boolean Read FHidePrivate Write FHidePrivate;
- Property InterfaceOnly : Boolean Read FIO Write FIO;
- Property MoDir : String Read FMoDir Write FMODir;
- Property DefaultPackageName : String Read FDefaultPackageName Write FDefaultPackageName;
- Property DontTrim : Boolean Read FDontTrim Write FDontTrim;
- Property EmitNotes : Boolean Read FEmitNotes Write FEmitNotes;
- end;
- { TFPDocProject }
- TFPDocProject = Class(TComponent)
- private
- FOptions: TEngineOptions;
- FPackages: TFPDocPackages;
- procedure setOptions(const AValue: TEngineOptions);
- Public
- Constructor Create(AOwner : TComponent); override;
- Destructor Destroy; override;
- Published
- Property Packages : TFPDocPackages Read FPackages Write FPackages;
- Property Options : TEngineOptions Read FOptions Write setOptions;
- end;
- Procedure SplitInputFileOption(Const AInputFile : String; Out AFile,AOption : String);
- implementation
- Procedure SplitInputFileOption(Const AInputFile : String; Out AFile,AOption : String);
- Function GetNextWord(Var s : string) : String;
- Const
- WhiteSpace = [' ',#9,#10,#13];
- var
- i,j: integer;
- begin
- I:=1;
- While (I<=Length(S)) and (S[i] in WhiteSpace) do
- Inc(I);
- J:=I;
- While (J<=Length(S)) and (not (S[J] in WhiteSpace)) do
- Inc(J);
- if (I<=Length(S)) then
- Result:=Copy(S,I,J-I);
- Delete(S,1,J);
- end;
- Var
- S,W,F,O : String;
- begin
- S:=AInputFile;
- O:='';
- F:='';
- While (S<>'') do
- begin
- W:=GetNextWord(S);
- If (W<>'') then
- begin
- if W[1]='-' then
- begin
- if (O<>'') then
- O:=O+' ';
- o:=O+W;
- end
- else
- F:=W;
- end;
- end;
- aFile:=F;
- AOption:=O;
- end;
- { TEngineOptions }
- procedure TEngineOptions.SetBackendOptions(const AValue: TStrings);
- begin
- if FBackEndoptions=AValue then exit;
- FBackEndoptions.Assign(AValue);
- end;
- constructor TEngineOptions.Create;
- begin
- FBackendOptions:=TStringList.Create;
- end;
- destructor TEngineOptions.Destroy;
- begin
- FreeAndNil(FBackendOptions);
- inherited Destroy;
- end;
- procedure TEngineOptions.Assign(Source: TPersistent);
- var
- O : TEngineOptions;
- begin
- if (Source is TEngineOptions) then
- begin
- O:=Source as TEngineOptions;
- FBackEndoptions.Assign(O.BackendOptions);
- FCPUTarget:=O.CPUTarget;
- FFormat:=O.Backend;
- FLanguage:=O.Language;
- FOSTarget:=O.OSTarget;
- FSOPE:=O.StopOnParseError;
- HideProtected:=O.HideProtected;
- WarnNoNode:=O.WarnNoNode;
- InfoUsedFile:=O.InfoUsedFile;
- WarnDocumentationEmpty:=O.WarnDocumentationEmpty;
- WarnXCT:=O.WarnXCT;
- ShowPrivate:=O.ShowPrivate;
- InterfaceOnly:=O.InterfaceOnly;
- MoDir:=O.MoDir;
- end
- else
- inherited Assign(Source);
- end;
- { TFPDocProject }
- procedure TFPDocProject.setOptions(const AValue: TEngineOptions);
- begin
- if FOptions=AValue then exit;
- FOptions.Assign(AValue);
- end;
- constructor TFPDocProject.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- FPackages:=TFPDocPackages.Create(TFPDocPackage);
- FOptions:=TEngineOptions.Create;
- end;
- destructor TFPDocProject.Destroy;
- begin
- FreeAndNil(Foptions);
- FreeAndNil(FPackages);
- inherited Destroy;
- end;
- { TFPDocPackages }
- function TFPDocPackages.GetP(AIndex : Integer): TFPDocPackage;
- begin
- Result:=TFPDocPackage(Items[AIndex]);
- end;
- procedure TFPDocPackages.SetP(AIndex : Integer; const AValue: TFPDocPackage);
- begin
- Items[AIndex]:=AValue;
- end;
- function TFPDocPackages.IndexOfPackage(const AName: String): Integer;
- begin
- Result:=Count-1;
- While (Result>=0) and (CompareText(GetP(Result).Name,AName)<>0) do
- Dec(Result)
- end;
- function TFPDocPackages.FindPackage(const AName: String): TFPDOcPackage;
- Var
- I : Integer;
- begin
- I:=IndexOfPackage(AName);
- If (I=-1) then
- Result:=Nil
- else
- Result:=GetP(I);
- end;
- { TFPDocPackage }
- constructor TFPDocPackage.Create(ACollection: TCollection);
- begin
- inherited Create(ACollection);
- FImports:=TStringList.Create;
- FDescriptions:=TStringList.Create;
- FInputs:=TStringList.Create;
- end;
- destructor TFPDocPackage.destroy;
- begin
- FreeAndNil(FDescriptions);
- FreeAndNil(FIMports);
- FreeAndNil(FinPuts);
- inherited destroy;
- end;
- procedure TFPDocPackage.Assign(Source: TPersistent);
- Var
- P : TFPDocPackage;
- begin
- If Source is TFPDocPackage then
- begin
- P:=Source as TFPDocPackage;
- Fname:=P.Name;
- FContent:=P.ContentFile;
- FImports.Assign(P.Imports);
- FInputs.Assign(P.Inputs);
- FDescriptions.Assign(P.Descriptions);
- end
- else
- inherited Assign(Source);
- end;
- end.
|