diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-22 14:00:41 +0200 | 
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-10-22 14:00:41 +0200 | 
| commit | bc02054d56118110a36aea72d21f9d5e73d07d1f (patch) | |
| tree | 2fc49dd3f93307df6242b8e63bca0e26b2e62168 /docs | |
| parent | fab0fccc0aaa18e915bcd08e81e5a04177e435cd (diff) | |
refactor file reading factory
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/class-diag.puml | 69 | 
1 files changed, 42 insertions, 27 deletions
| diff --git a/docs/class-diag.puml b/docs/class-diag.puml index 8058e0a..6c38d9c 100644 --- a/docs/class-diag.puml +++ b/docs/class-diag.puml @@ -18,29 +18,31 @@ exception Exception {  }  rectangle Group_FileReading as "File reading" <<group>> { -	class FileReaderFactory <<Factory>> { -		+ open(url) : FileReader& +	class FileReaderFactory <<factory>> { +		+ create(url : const string &) : uniq<FileReader>  	}  	interface FileReader { -		+ read() : string +		# FileReader(url : const string &) +		+ ~FileReader() +		-- +		# open() +		+ read() : const string  		+ close()  		-- -		# open(string url) -		# clone() : FileReader* <<const>> +		# url : const string  	}  	class LocalFileReader { -		- instance : LocalFileReader <<static>> +		+ ~LocalFileReader()  	}  	class HTTPFileReader { -		- instance : HTTPFileReader <<static>>  	}  	package CPR { } -	FileReader <|.u. LocalFileReader -	FileReader <|.u. HTTPFileReader +	FileReader <|.d. LocalFileReader +	FileReader <|.d. HTTPFileReader -	FileReader .l> FileReaderFactory -	FileReader <. FileReaderFactory +	FileReaderFactory -u-> LocalFileReader +	FileReaderFactory -u-> HTTPFileReader  	HTTPFileReader -l> CPR @@ -59,20 +61,21 @@ rectangle Group_ParsingDeserialization as "Parsing & deserialization" <<group>>  		+ heuristic(FileReader &) : unsigned int <<static>>  	} -	Parser .> ParserFactory -	Parser <. ParserFactory - -	class CSVParser  	class XMLParser  	class TXTParser +	class CSVParser  	package pugixml { } -	CSVParser ..|> Parser -	TXTParser ..|> Parser -	XMLParser ..|> Parser +	Parser <|.d. XMLParser +	Parser <|.d. TXTParser +	Parser <|.d. CSVParser + +	ParserFactory -u-> XMLParser +	ParserFactory -u-> TXTParser +	ParserFactory -u-> CSVParser -	XMLParser -> pugixml +	XMLParser -r> pugixml  	class MuseumDeserializer {  		+ MuseumDeserializer(Museum &) @@ -135,6 +138,7 @@ rectangle Group_Model as "Model" <<group>> {  		- worker : thread *  		- work()  	} +	together {  	class Canvas {  		+ Canvas(Museum &)  		-- @@ -148,6 +152,10 @@ rectangle Group_Model as "Model" <<group>> {  		- tiles : vector<Tile *>  		- museum : Museum &  	} +	struct CanvasData { +		+ rows : unsigned int +		+ columns : unsigned int +	}  	class People {  		+ People(Museum &)  		-- @@ -159,6 +167,8 @@ rectangle Group_Model as "Model" <<group>> {  		- artist_count : size_t  		- museum : Museum &  	} +	} +	together {  	class Tile {  		+ data : TileData  		+ color : Color @@ -190,11 +200,9 @@ rectangle Group_Model as "Model" <<group>> {  		+ vx : float  		+ vy : float  	} -	struct CanvasData { -		+ rows : unsigned int -		+ columns : unsigned int  	} +	together {  	struct Color {  		red : unsigned int  		green : unsigned int @@ -204,7 +212,9 @@ rectangle Group_Model as "Model" <<group>> {  		+ get_color(string) : Color <<static>>  		+ register_color(string, Color) <<static>>  	} +	} +	together {  	interface TileBehavior {  		+ step(Artist *)  		+ update(Tile &) @@ -214,13 +224,13 @@ rectangle Group_Model as "Model" <<group>> {  		# interactions : unsigned int  		# museum : Museum &  	} -  	class TileBehaviorFactory {  		+ TileBehaviorFactory(Museum &)  		+ create(string) : uniq<TileBehavior>  		--  		- museum : Museum &  	} +	}  	together {  		class NullTileBehavior { @@ -243,8 +253,15 @@ rectangle Group_Model as "Model" <<group>> {  			--  			- last_interactions : unsigned int  		} + +		NullTileBehavior -d[hidden]- StepTileBehavior +		StepTileBehavior -d[hidden]- DeleteArtistTileBehavior +		DeleteArtistTileBehavior -d[hidden]- SetNeighborTileBehavior +		SetNeighborTileBehavior -d[hidden]- CreateArtistTileBehavior  	} +	Canvas -l[hidden] People +  	Museum --> People  	Museum --> Canvas @@ -258,7 +275,7 @@ rectangle Group_Model as "Model" <<group>> {  	Tile --> "state" Color  	Tile .[norank].> TileColorFactory -	TileColorFactory .> Color +	TileColorFactory -> Color  	TileBehavior <|.. NullTileBehavior  	TileBehavior <|.. StepTileBehavior @@ -275,9 +292,6 @@ rectangle Group_Model as "Model" <<group>> {  	Tile --> "state" TileBehavior  	Tile .[norank].> TileBehaviorFactory -	TileBehaviorFactory .l> TileBehavior -	TileBehaviorFactory <. TileBehavior -  	' LAYOUT  	Artist -r[hidden] Tile  } @@ -378,6 +392,7 @@ rectangle Group_Commands as "Commands" <<group>> {  } /' LAYOUT '/  Parser .l> FileReader +' Parser -l> FileReaderFactory  MuseumDeserializer .l> Museum  Museum --> PathfindingContext |