|
- unit uengShaderPartMessage;
-
- {$mode objfpc}{$H+}
- {$I uengShaderFile.inc}
-
- interface
-
- uses
- Classes, SysUtils,
- uengShaderPart, uengShaderCodePart, uengShaderFileParser, uengShaderFileTypes, uengShaderGeneratorArgs;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TengShaderPartInfo = class(TengShaderCodePart)
- private
- fMessage: String;
-
- { Code Loading & Storage }
- protected
- fLogLevel: TengShaderPartLogLevel;
- function GetText: String; override;
- function ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String; override;
-
- { Code Generation }
- public
- procedure GenerateCodeIntern(const aArgs: TengShaderGeneratorArgs); override;
-
- { General }
- public
- property Message: String read fMessage;
- constructor Create(const aParent: TengShaderPart); override;
-
- { Class Methods }
- public
- class function GetTokenName: String; override;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TengShaderPartWarning = class(TengShaderPartInfo)
- { General }
- public
- constructor Create(const aParent: TengShaderPart); override;
-
- { Class Methods }
- public
- class function GetTokenName: String; override;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- TengShaderPartError = class(TengShaderPartInfo)
- { General }
- public
- constructor Create(const aParent: TengShaderPart); override;
-
- { Class Methods }
- public
- class function GetTokenName: String; override;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- EengShaderPartThrow = class(EengShaderPart);
- TengShaderPartThrow = class(TengShaderPartInfo)
- { General }
- public
- constructor Create(const aParent: TengShaderPart); override;
-
- { Class Methods }
- public
- class function GetTokenName: String; override;
- end;
-
- implementation
-
- uses
- uengShaderFileConstants;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TengShaderPartInfo/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TengShaderPartInfo.GetText: String;
- begin
- result := TOKEN_CHAR_BEGIN + GetTokenName + ' ' + TOKEN_CHAR_QUOTE + fMessage + TOKEN_CHAR_QUOTE + TOKEN_CHAR_END;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- function TengShaderPartInfo.ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String;
- begin
- if (aParams[0].Name <> GetTokenName) then with aParams[0] do
- raise EengInvalidToken.Create(ClassName, Name, Line, Col, Filename, self);
- if (aParams.Count <> 2) then
- raise EengInvalidParamterCount.Create(GetTokenName, 2, self);
- fMessage := aParams[1].Name;
- result := inherited ParseIntern(aArgs, aParams);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- procedure TengShaderPartInfo.GenerateCodeIntern(const aArgs: TengShaderGeneratorArgs);
- begin
- inherited GenerateCodeIntern(aArgs);
- if (fLogLevel = llThrow)
- then raise EengShaderPartThrow.Create(fMessage, self)
- else LogMsg(fLogLevel, fMessage);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TengShaderPartInfo.Create(const aParent: TengShaderPart);
- begin
- inherited Create(aParent);
- fLogLevel := llInfo;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TengShaderPartInfo.GetTokenName: String;
- begin
- result := TOKEN_INFO;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TengShaderPartWarning.Create(const aParent: TengShaderPart);
- begin
- inherited Create(aParent);
- fLogLevel := llWarning;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TengShaderPartWarning/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TengShaderPartWarning.GetTokenName: String;
- begin
- result := TOKEN_WARNING;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TengShaderPartError.Create(const aParent: TengShaderPart);
- begin
- inherited Create(aParent);
- fLogLevel := llError;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TengShaderPartError///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TengShaderPartError.GetTokenName: String;
- begin
- result := TOKEN_ERROR;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor TengShaderPartThrow.Create(const aParent: TengShaderPart);
- begin
- inherited Create(aParent);
- fLogLevel := llThrow;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //TengShaderPartThrow///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- class function TengShaderPartThrow.GetTokenName: String;
- begin
- result := TOKEN_THROW;
- end;
-
- end.
|