unit uengShaderCodePart; {$mode objfpc}{$H+} {$I uengShaderFile.inc} interface uses Classes, SysUtils, uengShaderPart, uengShaderFileParser, uengShaderGeneratorArgs {$IFDEF SHADER_FILE_USE_BITSPACE_UTILS} , uutlGenerics {$ELSE} , uengShaderFileGenerics {$ENDIF} ; type TengShaderCodePart = class(TengShaderPart) { Code Loading & Storage } protected function ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String; virtual; public function ParseText(const aArgs: TengParseArgs): String; { Code Generation } public procedure GenerateCodeIntern(const aArgs: TengShaderGeneratorArgs); virtual; end; CengShaderCodePart = class of TengShaderCodePart; TengShaderCodePartList = specialize TutlSimpleList; implementation //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //TengShaderCodePart//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TengShaderCodePart.ParseIntern(const aArgs: TengParseArgs; const aParams: TengTokenParameterList): String; begin result := ''; // DUMMY end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function TengShaderCodePart.ParseText(const aArgs: TengParseArgs): String; var params: TengTokenParameterList; begin params := TengTokenParameterList.Create(Filename); try fCol := aArgs.Col; fLine := aArgs.Line; if (GetTokenName <> '') then aArgs.ExtractToken(self, params); result := ParseIntern(aArgs, params); finally FreeAndNil(params); end; end; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// procedure TengShaderCodePart.GenerateCodeIntern(const aArgs: TengShaderGeneratorArgs); var s: String; begin s := GetTokenName; if (s <> '') then aArgs.AddToken(s); end; end.