View Issue Details

IDProjectCategoryView StatusLast Update
0005977DarkRadiantDesign/Codingpublic26.06.2022 10:53
Reportergreebo Assigned Togreebo  
PrioritynormalSeveritynormalReproducibilityhave not tried
Status assignedResolutionopen 
Product Version3.0.0 
Summary0005977: Improve Declaration Block Parsing
DescriptionFollowup of 0005911: Since all the idTech4 declaration files have the same format, DR should perform all the parsing using the same DefBlockTokeniser type. There's still some custom if-else trickery involved for entityDef or material/table parsing that could be shifted towards the tokeniser. The output token type BlockTokeniser::Block needs to be expanded by a "type" field, which can hold the optional decl type like "material" or "skin" or "entityDef".
TagsNo tags attached.

Relationships

related to 0004910 confirmed DR does not parse materials in def files 
related to 0005911 resolvedgreebo Unify Declaration Parsers 

Activities

There are no notes attached to this issue.

Related Changesets

DarkRadiant: declmanager 9939fd69

2022-06-17 06:57:55

greebo

Details Diff
0005977: Add a few more unit test cases Affected Issues
0005977
mod - test/Parsing.cpp Diff File

DarkRadiant: declmanager 0f91058b

2022-06-17 06:58:12

greebo

Details Diff
0005977: Set up a few declaration-related interfaces Affected Issues
0005977
add - include/ideclmanager.h Diff File
mod - tools/msvc/include.vcxproj Diff File
mod - tools/msvc/include.vcxproj.filters Diff File

DarkRadiant: declmanager 0aa291a2

2022-06-18 17:53:20

greebo

Details Diff
0005977: Add empty implementation, define a few unit tests Affected Issues
0005977
mod - radiantcore/CMakeLists.txt Diff File
add - radiantcore/decl/DeclarationManager.cpp Diff File
mod - test/CMakeLists.txt Diff File
add - test/DeclManager.cpp Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File
mod - tools/msvc/Tests/Tests.vcxproj Diff File
mod - tools/msvc/Tests/Tests.vcxproj.filters Diff File

DarkRadiant: declmanager e0a32134

2022-06-18 18:03:25

greebo

Details Diff
0005977: Implement registerDeclType and unregisterDeclType Affected Issues
0005977
mod - radiantcore/decl/DeclarationManager.cpp Diff File

DarkRadiant: declmanager 941062eb

2022-06-19 07:57:41

greebo

Details Diff
0005977: First iteration supporting parsing of known declarations. Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - include/idecltypes.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
add - radiantcore/decl/DeclarationManager.h Diff File
add - radiantcore/decl/DeclarationParser.cpp Diff File
add - radiantcore/decl/DeclarationParser.h Diff File
mod - test/DeclManager.cpp Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File

DarkRadiant: declmanager 409ae7af

2022-06-19 08:04:10

greebo

Details Diff
0005977: Safely close parser threads when the module is shut down Affected Issues
0005977
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File

DarkRadiant: declmanager 2ef2444c

2022-06-19 08:36:23

greebo

Details Diff
0005977: Separate the unit test resources, they will collide with the regular RadiantTest setup once GlobalMaterialManager() et al will have been migrated to use the decl manager. Affected Issues
0005977
mod - test/DeclManager.cpp Diff File
add - test/resources/tdm/testdecls/exporttest.decl Diff File
add - test/resources/tdm/testdecls/numbers.decl Diff File

DarkRadiant: declmanager 813575cd

2022-06-19 08:54:24

greebo

Details Diff
0005977: Late parser registration is working now Affected Issues
0005977
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - radiantcore/decl/DeclarationParser.cpp Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 639bdeaf

2022-06-19 09:01:48

greebo

Details Diff
0005977: Late parser registration is working now even when added during thread processing Affected Issues
0005977
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 30e8b3f1

2022-06-19 14:08:01

greebo

Details Diff
0005977: Start migrating SoundManager to use the DeclarationManager's parsing infrastructure instead of a custom threaded parser. Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - include/ifilesystem.h Diff File
mod - include/isound.h Diff File
mod - plugins/script/interfaces/SoundInterface.h Diff File
mod - plugins/sound/SoundFileLoader.h Diff File
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundManager.h Diff File
mod - plugins/sound/SoundShader.h Diff File
mod - radiant/ui/common/SoundChooser.cpp Diff File
mod - radiant/ui/common/SoundShaderDefinitionView.cpp Diff File
mod - radiant/ui/common/SoundShaderPreview.cpp Diff File
mod - radiantcore/CMakeLists.txt Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - radiantcore/decl/DeclarationParser.cpp Diff File
mod - radiantcore/decl/DeclarationParser.h Diff File
mod - radiantcore/entity/algorithm/Speaker.h Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager e6c400e4

2022-06-19 16:32:03

greebo

Details Diff
0005977: SoundManager no longer maintains its own dictionary of shaders as member Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - plugins/sound/SoundFileLoader.h Diff File
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundManager.h Diff File
mod - plugins/sound/SoundShader.cpp Diff File
mod - plugins/sound/SoundShader.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager c4f2bbb0

2022-06-19 16:33:54

greebo

Details Diff
0005977: Rename SoundFileLoader to SoundShaderParser Affected Issues
0005977
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundManager.h Diff File
mod - tools/msvc/sound.vcxproj Diff File
mod - tools/msvc/sound.vcxproj.filters Diff File

DarkRadiant: declmanager 38ed7f2b

2022-06-19 17:25:49

greebo

Details Diff
0005977: Add reloadDecarations() to IDeclarationManager interface Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - plugins/sound/SoundManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File

DarkRadiant: declmanager df14b271

2022-06-24 12:59:09

greebo

Details Diff
0005977: Add unit test checking that reloadDecls re-parses the file Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - plugins/sound/SoundShader.cpp Diff File
mod - plugins/sound/SoundShader.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - test/DeclManager.cpp Diff File
add - test/testutil/TemporaryFile.h Diff File
mod - tools/msvc/Tests/Tests.vcxproj Diff File
mod - tools/msvc/Tests/Tests.vcxproj.filters Diff File

DarkRadiant: declmanager a9896bcb

2022-06-24 17:55:08

greebo

Details Diff
0005977: Some restructuring to make the parsing logic reusable outside the ThreadedDeclParser. Affected Issues
0005977
mod - radiantcore/CMakeLists.txt Diff File
add - radiantcore/decl/DeclarationFile.h Diff File
add - radiantcore/decl/DeclarationFolderParser.cpp Diff File
add - radiantcore/decl/DeclarationFolderParser.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File

DarkRadiant: declmanager 43c9214e

2022-06-25 04:30:11

greebo

Details Diff
0005977: Change IDeclarationParser to IDeclarationCreator. The declaration instances will work with the DeclarationBlockSyntax. Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundShader.cpp Diff File
mod - plugins/sound/SoundShader.h Diff File
mod - plugins/sound/SoundShaderParser.h Diff File
mod - radiantcore/decl/DeclarationFileParser.cpp Diff File
mod - radiantcore/decl/DeclarationFileParser.h Diff File
mod - radiantcore/decl/DeclarationFolderParser.cpp Diff File
mod - radiantcore/decl/DeclarationFolderParser.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 81fd9fea

2022-06-25 04:49:52

greebo

Details Diff
0005977: Rename interface method Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundShader.cpp Diff File
mod - plugins/sound/SoundShader.h Diff File
mod - radiantcore/decl/DeclarationFileParser.cpp Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 612a5307

2022-06-25 13:36:38

greebo

Details Diff
0005977: Reduce DeclarationFileParser responsibility to cut the incoming streams into blocks and determine their type.
The DeclarationManager will receive all identified blocks and will process them further.
Affected Issues
0005977
mod - include/idecltypes.h Diff File
mod - radiantcore/decl/DeclarationFileParser.cpp Diff File
mod - radiantcore/decl/DeclarationFileParser.h Diff File
mod - radiantcore/decl/DeclarationFolderParser.cpp Diff File
mod - radiantcore/decl/DeclarationFolderParser.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File

DarkRadiant: declmanager e79828b0

2022-06-25 14:18:08

greebo

Details Diff
0005977: First implementation of IDeclarationManager::reloadDecarations Affected Issues
0005977
mod - radiantcore/decl/DeclarationFileParser.cpp Diff File
mod - radiantcore/decl/DeclarationFileParser.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 8bf2ffeb

2022-06-25 16:26:28

greebo

Details Diff
0005977: Introduce parse stamp methods to the IDeclaration interface. Add unit test. Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - plugins/sound/SoundShader.cpp Diff File
mod - plugins/sound/SoundShader.h Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 73d41714

2022-06-26 04:31:45

greebo

Details Diff
0005977: More reloadDecls unit tests Affected Issues
0005977
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 9eff8281

2022-06-26 05:53:57

greebo

Details Diff
0005977: First working version of reloadDecls Affected Issues
0005977
mod - radiantcore/decl/DeclarationFile.h Diff File
mod - radiantcore/decl/DeclarationFileParser.cpp Diff File
mod - radiantcore/decl/DeclarationFileParser.h Diff File
mod - radiantcore/decl/DeclarationFolderParser.cpp Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager f1cb6204

2022-06-26 06:36:53

greebo

Details Diff
0005977: Some more precautions, code cleanup Affected Issues
0005977
mod - radiantcore/decl/DeclarationFileParser.cpp Diff File
mod - radiantcore/decl/DeclarationFileParser.h Diff File
mod - radiantcore/decl/DeclarationFolderParser.h Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File

DarkRadiant: declmanager 3a1d720f

2022-06-26 06:42:50

greebo

Details Diff
0005977: Merge DeclarationFileParser back into DeclarationFolderParser, turns out it doesn't add much value Affected Issues
0005977
mod - radiantcore/CMakeLists.txt Diff File
rm - radiantcore/decl/DeclarationFileParser.cpp Diff File
rm - radiantcore/decl/DeclarationFileParser.h Diff File
mod - radiantcore/decl/DeclarationFolderParser.cpp Diff File
mod - radiantcore/decl/DeclarationFolderParser.h Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj Diff File
mod - tools/msvc/DarkRadiantCore.vcxproj.filters Diff File

DarkRadiant: declmanager 3a58c3cc

2022-06-26 06:56:34

greebo

Details Diff
0005977: More signal tests Affected Issues
0005977
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - test/DeclManager.cpp Diff File

DarkRadiant: declmanager 9cd59760

2022-06-26 07:11:13

greebo

Details Diff
0005977: Add unit test checking the precedence of parsed decls with the same name (test is failing right now) Affected Issues
0005977
mod - test/DeclManager.cpp Diff File
add - test/resources/tdm/testdecls/precedence_test1.decl Diff File
add - test/resources/tdm/testdecls/precedence_test2.decl Diff File

DarkRadiant: declmanager 86fc80f3

2022-06-26 07:28:18

greebo

Details Diff
0005977: Declaration precedence is matching the engine's behaviour now, the first decl takes precedence Affected Issues
0005977
mod - radiantcore/decl/DeclarationManager.cpp Diff File

DarkRadiant: declmanager 523dc791

2022-06-26 08:21:07

greebo

Details Diff
0005977: Fix SoundManager returning empty references in getSoundShader(). The docs state that this should return an empty shader instead. Affected Issues
0005977
mod - plugins/sound/SoundManager.cpp Diff File

DarkRadiant: declmanager 90631131

2022-06-26 08:37:39

greebo

Details Diff
0005977: Extend DefBlockTokeniser tests to handle some blocks with type names Affected Issues
0005977
mod - test/Parsing.cpp Diff File

DarkRadiant: declmanager 93bf93f1

2022-06-26 10:03:10

greebo

Details Diff
0005977: Separate SoundManager tests from DefBlockTokeniser tests. Affected Issues
0005977
mod - test/CMakeLists.txt Diff File
add - test/SoundManager.cpp Diff File
mod - test/resources/tdm/sound/parsing_test.sndshd Diff File
mod - tools/msvc/Tests/Tests.vcxproj Diff File
mod - tools/msvc/Tests/Tests.vcxproj.filters Diff File

DarkRadiant: declmanager f2032dfa

2022-06-26 10:17:40

greebo

Details Diff
0005977: More SoundManager tests Affected Issues
0005977
mod - test/SoundManager.cpp Diff File
mod - test/resources/tdm/sound/parsing_test.sndshd Diff File
add - test/resources/tdm/sound/test/jorge.ogg Diff File
add - test/resources/tdm/sound/test/jorge.wav Diff File

DarkRadiant: declmanager fbb3e81e

2022-06-26 10:24:22

greebo

Details Diff
0005977: Check SoundManager behaviour when serving requests for files without extensions Affected Issues
0005977
mod - test/SoundManager.cpp Diff File

DarkRadiant: declmanager 60dc9427

2022-06-26 10:31:08

greebo

Details Diff
0005977: Simplify file extension replacement code a bit Affected Issues
0005977
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundManager.h Diff File

DarkRadiant: declmanager a533214b

2022-06-26 10:51:52

greebo

Details Diff
0005977: Add ReloadDecls which is now the target of the ReloadSounds command. Cleanup and comments. Affected Issues
0005977
mod - include/ideclmanager.h Diff File
mod - include/isound.h Diff File
mod - plugins/sound/SoundManager.cpp Diff File
mod - plugins/sound/SoundManager.h Diff File
mod - radiant/ui/common/SoundChooser.cpp Diff File
mod - radiantcore/decl/DeclarationManager.cpp Diff File
mod - radiantcore/decl/DeclarationManager.h Diff File
mod - test/DeclManager.cpp Diff File

Issue History

Date Modified Username Field Change
16.06.2022 15:55 greebo New Issue
16.06.2022 15:55 greebo Status new => confirmed
16.06.2022 15:55 greebo Relationship added related to 0004910
16.06.2022 15:55 greebo Relationship added related to 0005911
16.06.2022 15:56 greebo Assigned To => greebo
16.06.2022 15:56 greebo Status confirmed => assigned
16.06.2022 15:56 greebo Summary Improve Declaration Block Parser => Improve Declaration Block Parsing
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 9939fd69
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 0f91058b
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 0aa291a2
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager e0a32134
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 941062eb
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 409ae7af
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 2ef2444c
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 813575cd
19.06.2022 09:13 greebo Changeset attached => DarkRadiant declmanager 639bdeaf
19.06.2022 17:26 greebo Changeset attached => DarkRadiant declmanager 30e8b3f1
19.06.2022 17:26 greebo Changeset attached => DarkRadiant declmanager e6c400e4
19.06.2022 17:26 greebo Changeset attached => DarkRadiant declmanager c4f2bbb0
19.06.2022 17:26 greebo Changeset attached => DarkRadiant declmanager 38ed7f2b
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager df14b271
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager a9896bcb
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 43c9214e
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 81fd9fea
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 612a5307
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager e79828b0
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 8bf2ffeb
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 73d41714
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 9eff8281
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager f1cb6204
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 3a1d720f
26.06.2022 06:56 greebo Changeset attached => DarkRadiant declmanager 3a58c3cc
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager 9cd59760
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager 86fc80f3
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager 523dc791
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager 90631131
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager 93bf93f1
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager f2032dfa
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager fbb3e81e
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager 60dc9427
26.06.2022 10:53 greebo Changeset attached => DarkRadiant declmanager a533214b