|
- unit uengShaderFileTypes;
-
- {$mode objfpc}{$H+}
- {$I uengShaderFile.inc}
-
- interface
-
- uses
- Classes, SysUtils
-
- {$IFDEF USE_BITSPACE_UTILS}
- , uutlSerialization, uutlCommon
- {$ENDIF}
- ;
-
- type
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- {$IFDEF USE_BITSPACE_UTILS}
- IengShaderFileWriter = uutlSerialization.IutlFileWriter;
- IengShaderFileReader = uutlSerialization.IutlFileReader;
- TengShaderFileReader = uutlSerialization.TutlSimpleFileReader;
- TengShaderFileWriter = uutlSerialization.TutlSimpleFileWriter;
- TIntfObjNoRefCount = uutlCommon.TutlInterfaceNoRefCount;
- {$ENDIF}
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- EengShaderPart = class(Exception)
- public
- Line: Integer;
- Col: Integer;
- Filename: String;
-
- constructor Create(const aMsg: String; const aLine, aCol: Integer; const aFilename: String); overload;
- end;
- EengShaderPartInternal = class(EengShaderPart);
- EengExpression = class(EengShaderPart);
-
- EengInvalidToken = class(EengShaderPartInternal)
- constructor Create(const aClassName: String; const aToken: String; const aLine, aCol: Integer; const aFilename: String); overload;
- end;
-
- EengUnexpectedToken = class(EengShaderPart)
- constructor Create(const aToken, aExpected: String; const aLine, aCol: Integer; const aFilename: String); overload;
- end;
-
- EengInvalidParamter = class(EengShaderPart)
- constructor Create(const aParam, aExpected: String; const aLine, aCol: Integer; const aFilename: String); overload;
- end;
-
- EengInvalidParamterCount = class(EengShaderPart)
- constructor Create(const aToken: String; const aExpected, aLine, aCol: Integer; const aFilename: String); overload;
- constructor Create(const aToken: String; const aExpectedMin, aExpectedMax, aLine, aCol: Integer; const aFilename: String); overload;
- end;
-
- EengInvalidIdentifier = class(EengShaderPart)
- constructor Create(const aIdentifier: String; const aLine, aCol: Integer; const aFilename: String); overload;
- end;
-
- EengOutOfRange = class(EengShaderPartInternal)
- constructor Create(const aMin, aMax, aIndex, aLine, aCol: Integer; const aFilename: String); overload;
- end;
-
- implementation
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengShaderPart////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengShaderPart.Create(const aMsg: String; const aLine, aCol: Integer; const aFilename: String);
- begin
- inherited Create(Format('%s (file: %s; line: %d; col: %d): %s', [ClassName, ExtractFileName(aFilename), aLine+1, aCol, aMsg]));
- Line := aLine;
- Col := aCol;
- Filename := aFilename;
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengInvalidToken//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengInvalidToken.Create(const aClassName: String; const aToken: String; const aLine, aCol: Integer; const aFilename: String);
- begin
- inherited Create('invalid token: ' + aClassName + ' <> '+ aToken, aLine, aCol, aFilename);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengUnexpectedToken///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengUnexpectedToken.Create(const aToken, aExpected: String; const aLine, aCol: Integer; const aFilename: String);
- var
- s: String;
- begin
- s := 'unexpected token: ' + aToken;
- if (aExpected <> '') then
- s := s + '(expected ' + aExpected + ')';
- inherited Create(s, aLine, aCol, aFilename);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengInvalidParamter///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengInvalidParamter.Create(const aParam, aExpected: String; const aLine, aCol: Integer; const aFilename: String);
- var
- s: String;
- begin
- s := 'invalid parameter: ' + aParam;
- if (aExpected <> '') then
- s := s + '(expected ' + aExpected + ')';
- inherited Create(s, aLine, aCol, aFilename);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengInvalidParamterCount//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengInvalidParamterCount.Create(const aToken: String; const aExpected, aLine, aCol: Integer; const aFilename: String);
- begin
- inherited Create('invalid parameter count in ' + aToken + '(expected ' + IntToStr(aExpected) + ' parameter)', aLine, aCol, aFilename);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengInvalidParamterCount.Create(const aToken: String; const aExpectedMin, aExpectedMax, aLine, aCol: Integer; const aFilename: String);
- var
- s: String;
- begin
- s := 'invalid parameter count in ' + aToken + '(expected ';
- if (aExpectedMax < 0)
- then s := s + ' at least '+ IntToStr(aExpectedMin)
- else s := s + IntToStr(aExpectedMin) + ' to ' + IntToStr(aExpectedMax);
- s := s + ' parameter)';
- inherited Create(s, aLine, aCol, aFilename);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengInvalidIdentifier/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengInvalidIdentifier.Create(const aIdentifier: String; const aLine, aCol: Integer; const aFilename: String);
- begin
- inherited Create('invalid identifier: ' + aIdentifier, aLine, aCol, aFilename);
- end;
-
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //EengOutOfRange////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- constructor EengOutOfRange.Create(const aMin, aMax, aIndex, aLine, aCol: Integer; const aFilename: String);
- begin
- inherited Create(format('index (%d) out of range (%d:%d)', [aIndex, aMin, aMax]), aLine, aCol, aFilename);
- end;
-
- end.
|