From ceeb25ea8264cc05edc26f692438d61ba0a45adf Mon Sep 17 00:00:00 2001 From: Robert Bendun Date: Fri, 23 Sep 2022 18:55:25 +0200 Subject: [PATCH] Created better hierarchy of source files --- Doxyfile | 2 +- Makefile | 25 ++++--------------- musique/algo.hh | 2 +- musique/errors.cc | 4 +-- musique/format.cc | 4 +-- musique/format.hh | 2 +- musique/guard.hh | 2 +- .../{ => interpreter}/builtin_functions.cc | 8 +++--- .../{ => interpreter}/builtin_operators.cc | 4 +-- musique/{ => interpreter}/context.cc | 2 +- musique/{ => interpreter}/context.hh | 6 ++--- musique/{ => interpreter}/env.cc | 2 +- musique/{ => interpreter}/env.hh | 2 +- musique/{ => interpreter}/incoming_midi.hh | 2 +- musique/{ => interpreter}/interpreter.cc | 6 ++--- musique/{ => interpreter}/interpreter.hh | 4 +-- musique/{ => lexer}/lexer.cc | 2 +- musique/{ => lexer}/lexer.hh | 2 +- musique/{ => lexer}/lines.cc | 2 +- musique/{ => lexer}/lines.hh | 0 musique/{ => lexer}/token.hh | 4 +-- musique/main.cc | 8 +++--- musique/{ => parser}/ast.hh | 2 +- musique/{ => parser}/parser.cc | 4 +-- musique/{ => parser}/parser.hh | 4 +-- musique/result.hh | 2 +- musique/try.hh | 2 +- musique/{ => value}/array.hh | 2 +- musique/{ => value}/block.hh | 4 +-- musique/{ => value}/chord.hh | 2 +- musique/{ => value}/note.hh | 2 +- musique/{ => value}/number.cc | 2 +- musique/{ => value}/number.hh | 2 +- musique/{ => value}/typecheck.hh | 2 +- musique/{ => value}/value.cc | 6 ++--- musique/{ => value}/value.hh | 14 +++++------ musique/{ => value}/value_algorithms.hh | 0 scripts/debug.mk | 6 ++--- scripts/release.mk | 2 +- 39 files changed, 69 insertions(+), 84 deletions(-) rename musique/{ => interpreter}/builtin_functions.cc (99%) rename musique/{ => interpreter}/builtin_operators.cc (99%) rename musique/{ => interpreter}/context.cc (90%) rename musique/{ => interpreter}/context.hh (84%) rename musique/{ => interpreter}/env.cc (95%) rename musique/{ => interpreter}/env.hh (96%) rename musique/{ => interpreter}/incoming_midi.hh (97%) rename musique/{ => interpreter}/interpreter.cc (98%) rename musique/{ => interpreter}/interpreter.hh (95%) rename musique/{ => lexer}/lexer.cc (99%) rename musique/{ => lexer}/lexer.hh (98%) rename musique/{ => lexer}/lines.cc (96%) rename musique/{ => lexer}/lines.hh (100%) rename musique/{ => lexer}/token.hh (96%) rename musique/{ => parser}/ast.hh (98%) rename musique/{ => parser}/parser.cc (99%) rename musique/{ => parser}/parser.hh (96%) rename musique/{ => value}/array.hh (94%) rename musique/{ => value}/block.hh (92%) rename musique/{ => value}/chord.hh (94%) rename musique/{ => value}/note.hh (96%) rename musique/{ => value}/number.cc (99%) rename musique/{ => value}/number.hh (98%) rename musique/{ => value}/typecheck.hh (98%) rename musique/{ => value}/value.cc (99%) rename musique/{ => value}/value.hh (95%) rename musique/{ => value}/value_algorithms.hh (100%) diff --git a/Doxyfile b/Doxyfile index 52a8cb6..e0656cf 100644 --- a/Doxyfile +++ b/Doxyfile @@ -864,7 +864,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = src doc/index.md include +INPUT = musique doc/index.md # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses diff --git a/Makefile b/Makefile index bd92fe7..2a34056 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,7 @@ include config.mk -Obj= \ - builtin_functions.o \ - builtin_operators.o \ - context.o \ - env.o \ - errors.o \ - format.o \ - interpreter.o \ - lexer.o \ - lines.o \ - location.o \ - number.o \ - parser.o \ - pretty.o \ - unicode.o \ - unicode_tables.o \ - value.o - +Sources := $(shell find musique/ -name '*.cc') +Obj := $(subst musique/,,$(Sources:%.cc=%.o)) all: bin/musique @@ -29,7 +13,7 @@ bin/bestline.o: lib/bestline/bestline.c lib/bestline/bestline.h @echo "CC $@" @$(CC) $< -c -O3 -o $@ -doc: Doxyfile musique/*.cc include/*.hh +doc: Doxyfile musique/*.cc musique/*.hh doxygen doc-open: doc @@ -46,4 +30,5 @@ install: bin/musique .PHONY: clean doc doc-open all test unit-tests release install -$(shell mkdir -p bin/debug/tests) +$(shell mkdir -p $(subst musique/,bin/,$(shell find musique/* -type d))) +$(shell mkdir -p $(subst musique/,bin/debug/,$(shell find musique/* -type d))) diff --git a/musique/algo.hh b/musique/algo.hh index 02efd1c..b592c46 100644 --- a/musique/algo.hh +++ b/musique/algo.hh @@ -3,7 +3,7 @@ #include #include -#include +#include #include /// Generic algorithms support diff --git a/musique/errors.cc b/musique/errors.cc index 14ed3cc..0fabeee 100644 --- a/musique/errors.cc +++ b/musique/errors.cc @@ -1,8 +1,8 @@ #include -#include +#include #include #include -#include +#include #include #include diff --git a/musique/format.cc b/musique/format.cc index 94a0b66..885131b 100644 --- a/musique/format.cc +++ b/musique/format.cc @@ -1,7 +1,7 @@ -#include +#include #include #include -#include +#include #include Result format(Interpreter &i, Value const& value) diff --git a/musique/format.hh b/musique/format.hh index 53a4bd3..37ff53e 100644 --- a/musique/format.hh +++ b/musique/format.hh @@ -1,7 +1,7 @@ #ifndef MUSIQUE_FORMAT_HH #define MUSIQUE_FORMAT_HH -#include "result.hh" +#include struct Interpreter; struct Value; diff --git a/musique/guard.hh b/musique/guard.hh index a5ef619..e7b14f6 100644 --- a/musique/guard.hh +++ b/musique/guard.hh @@ -5,7 +5,7 @@ #include #include #include -#include +#include /// Allows creation of guards that ensure proper type template diff --git a/musique/builtin_functions.cc b/musique/interpreter/builtin_functions.cc similarity index 99% rename from musique/builtin_functions.cc rename to musique/interpreter/builtin_functions.cc index ec0630f..a60ba73 100644 --- a/musique/builtin_functions.cc +++ b/musique/interpreter/builtin_functions.cc @@ -1,10 +1,10 @@ #include -#include +#include #include -#include -#include +#include +#include #include -#include +#include #include #include diff --git a/musique/builtin_operators.cc b/musique/interpreter/builtin_operators.cc similarity index 99% rename from musique/builtin_operators.cc rename to musique/interpreter/builtin_operators.cc index b771515..144947c 100644 --- a/musique/builtin_operators.cc +++ b/musique/interpreter/builtin_operators.cc @@ -1,9 +1,9 @@ #include #include #include -#include +#include #include -#include +#include /// Intrinsic implementation primitive to ease operation vectorization static Result vectorize(auto &&operation, Interpreter &interpreter, Value lhs, Value rhs) diff --git a/musique/context.cc b/musique/interpreter/context.cc similarity index 90% rename from musique/context.cc rename to musique/interpreter/context.cc index b64c259..281860f 100644 --- a/musique/context.cc +++ b/musique/interpreter/context.cc @@ -1,4 +1,4 @@ -#include +#include Note Context::fill(Note note) const { diff --git a/musique/context.hh b/musique/interpreter/context.hh similarity index 84% rename from musique/context.hh rename to musique/interpreter/context.hh index 68dbdf0..1aa0aa3 100644 --- a/musique/context.hh +++ b/musique/interpreter/context.hh @@ -1,9 +1,9 @@ #ifndef MUSIQUE_CONTEXT_HH #define MUSIQUE_CONTEXT_HH -#include "common.hh" -#include "note.hh" -#include "number.hh" +#include +#include +#include #include /// Context holds default values for music related actions diff --git a/musique/env.cc b/musique/interpreter/env.cc similarity index 95% rename from musique/env.cc rename to musique/interpreter/env.cc index b82702d..ba1cc23 100644 --- a/musique/env.cc +++ b/musique/interpreter/env.cc @@ -1,4 +1,4 @@ -#include +#include #include diff --git a/musique/env.hh b/musique/interpreter/env.hh similarity index 96% rename from musique/env.hh rename to musique/interpreter/env.hh index f3e4b76..7464fe8 100644 --- a/musique/env.hh +++ b/musique/interpreter/env.hh @@ -3,7 +3,7 @@ #include #include -#include "value.hh" +#include /// Collection holding all variables in given scope. struct Env : std::enable_shared_from_this diff --git a/musique/incoming_midi.hh b/musique/interpreter/incoming_midi.hh similarity index 97% rename from musique/incoming_midi.hh rename to musique/interpreter/incoming_midi.hh index e14dcc3..a111953 100644 --- a/musique/incoming_midi.hh +++ b/musique/interpreter/incoming_midi.hh @@ -1,7 +1,7 @@ #ifndef MUSIQUE_INCOMING_MIDI #define MUSIQUE_INCOMING_MIDI -#include "interpreter.hh" +#include struct Interpreter::Incoming_Midi_Callbacks { diff --git a/musique/interpreter.cc b/musique/interpreter/interpreter.cc similarity index 98% rename from musique/interpreter.cc rename to musique/interpreter/interpreter.cc index dc4beeb..05fdba9 100644 --- a/musique/interpreter.cc +++ b/musique/interpreter/interpreter.cc @@ -1,6 +1,6 @@ -#include -#include -#include +#include +#include +#include #include #include diff --git a/musique/interpreter.hh b/musique/interpreter/interpreter.hh similarity index 95% rename from musique/interpreter.hh rename to musique/interpreter/interpreter.hh index f6750cf..fd796ad 100644 --- a/musique/interpreter.hh +++ b/musique/interpreter/interpreter.hh @@ -2,8 +2,8 @@ #define MUSIQUE_INTERPRETER_HH #include -#include -#include +#include +#include /// Given program tree evaluates it into Value struct Interpreter diff --git a/musique/lexer.cc b/musique/lexer/lexer.cc similarity index 99% rename from musique/lexer.cc rename to musique/lexer/lexer.cc index 414a5a7..079b3f3 100644 --- a/musique/lexer.cc +++ b/musique/lexer/lexer.cc @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/musique/lexer.hh b/musique/lexer/lexer.hh similarity index 98% rename from musique/lexer.hh rename to musique/lexer/lexer.hh index 37c779b..1aa3f6e 100644 --- a/musique/lexer.hh +++ b/musique/lexer/lexer.hh @@ -3,7 +3,7 @@ #include #include -#include +#include #include /// Explicit marker of the end of file diff --git a/musique/lines.cc b/musique/lexer/lines.cc similarity index 96% rename from musique/lines.cc rename to musique/lexer/lines.cc index ca1c2fd..114e17c 100644 --- a/musique/lines.cc +++ b/musique/lexer/lines.cc @@ -1,6 +1,6 @@ #include #include -#include +#include Lines Lines::the; diff --git a/musique/lines.hh b/musique/lexer/lines.hh similarity index 100% rename from musique/lines.hh rename to musique/lexer/lines.hh diff --git a/musique/token.hh b/musique/lexer/token.hh similarity index 96% rename from musique/token.hh rename to musique/lexer/token.hh index 3ea39fa..407bbe2 100644 --- a/musique/token.hh +++ b/musique/lexer/token.hh @@ -1,8 +1,8 @@ #ifndef MUSIQUE_TOKEN_HH #define MUSIQUE_TOKEN_HH -#include "common.hh" -#include "location.hh" +#include +#include /// Lexical token representation for Musique language struct Token diff --git a/musique/main.cc b/musique/main.cc index 5c4631c..44d6e53 100644 --- a/musique/main.cc +++ b/musique/main.cc @@ -7,11 +7,11 @@ #include #include -#include +#include #include -#include -#include -#include +#include +#include +#include #include #include #include diff --git a/musique/ast.hh b/musique/parser/ast.hh similarity index 98% rename from musique/ast.hh rename to musique/parser/ast.hh index a18d224..9f4609d 100644 --- a/musique/ast.hh +++ b/musique/parser/ast.hh @@ -1,7 +1,7 @@ #ifndef MUSIQUE_AST_HH #define MUSIQUE_AST_HH -#include "token.hh" +#include #include #include diff --git a/musique/parser.cc b/musique/parser/parser.cc similarity index 99% rename from musique/parser.cc rename to musique/parser/parser.cc index 95da490..fff86a0 100644 --- a/musique/parser.cc +++ b/musique/parser/parser.cc @@ -1,5 +1,5 @@ -#include -#include +#include +#include #include #include diff --git a/musique/parser.hh b/musique/parser/parser.hh similarity index 96% rename from musique/parser.hh rename to musique/parser/parser.hh index 5b907fa..66db685 100644 --- a/musique/parser.hh +++ b/musique/parser/parser.hh @@ -1,8 +1,8 @@ #ifndef MUSIQUE_PARSER_HH #define MUSIQUE_PARSER_HH -#include "ast.hh" -#include "result.hh" +#include +#include /// Source code to program tree converter /// diff --git a/musique/result.hh b/musique/result.hh index 2a819fb..6b6f565 100644 --- a/musique/result.hh +++ b/musique/result.hh @@ -3,7 +3,7 @@ #include -#include "errors.hh" +#include /// Holds either T or Error template diff --git a/musique/try.hh b/musique/try.hh index 2ee019e..4b31e20 100644 --- a/musique/try.hh +++ b/musique/try.hh @@ -1,7 +1,7 @@ #ifndef MUSIQUE_TRY_HH #define MUSIQUE_TRY_HH -#include "result.hh" +#include /// Shorthand for forwarding error values with Result type family. /// diff --git a/musique/array.hh b/musique/value/array.hh similarity index 94% rename from musique/array.hh rename to musique/value/array.hh index 66130b7..4d257c4 100644 --- a/musique/array.hh +++ b/musique/value/array.hh @@ -2,7 +2,7 @@ #define MUSIQUE_ARRAY_HH #include -#include "result.hh" +#include struct Interpreter; struct Value; diff --git a/musique/block.hh b/musique/value/block.hh similarity index 92% rename from musique/block.hh rename to musique/value/block.hh index 20a8a2c..9c6f5f5 100644 --- a/musique/block.hh +++ b/musique/value/block.hh @@ -1,8 +1,8 @@ #ifndef MUSIQUE_BLOCK_HH #define MUSIQUE_BLOCK_HH -#include "result.hh" -#include "ast.hh" +#include +#include #include diff --git a/musique/chord.hh b/musique/value/chord.hh similarity index 94% rename from musique/chord.hh rename to musique/value/chord.hh index abd902c..b4b876c 100644 --- a/musique/chord.hh +++ b/musique/value/chord.hh @@ -1,6 +1,6 @@ #include -#include "note.hh" +#include struct Interpreter; struct Value; diff --git a/musique/note.hh b/musique/value/note.hh similarity index 96% rename from musique/note.hh rename to musique/value/note.hh index adb6124..5d255df 100644 --- a/musique/note.hh +++ b/musique/value/note.hh @@ -3,7 +3,7 @@ #include -#include "number.hh" +#include /// Representation of musical note or musical pause struct Note diff --git a/musique/number.cc b/musique/value/number.cc similarity index 99% rename from musique/number.cc rename to musique/value/number.cc index 94adf0d..c3efd47 100644 --- a/musique/number.cc +++ b/musique/value/number.cc @@ -1,4 +1,4 @@ -#include +#include #include #include diff --git a/musique/number.hh b/musique/value/number.hh similarity index 98% rename from musique/number.hh rename to musique/value/number.hh index dd8ab58..1b7a915 100644 --- a/musique/number.hh +++ b/musique/value/number.hh @@ -3,7 +3,7 @@ #include #include -#include +#include #include /// Number type supporting integer and fractional constants diff --git a/musique/typecheck.hh b/musique/value/typecheck.hh similarity index 98% rename from musique/typecheck.hh rename to musique/value/typecheck.hh index 1fab62f..e3370e2 100644 --- a/musique/typecheck.hh +++ b/musique/value/typecheck.hh @@ -1,7 +1,7 @@ #ifndef MUSIQUE_TYPECHECK_HH #define MUSIQUE_TYPECHECK_HH -#include +#include /// Intrinsic implementation primitive providing a short way to check if arguments match required type signature static inline bool typecheck(std::vector const& args, auto const& ...expected_types) diff --git a/musique/value.cc b/musique/value/value.cc similarity index 99% rename from musique/value.cc rename to musique/value/value.cc index da2a52f..472112f 100644 --- a/musique/value.cc +++ b/musique/value/value.cc @@ -1,8 +1,8 @@ -#include +#include #include -#include +#include #include -#include +#include #include #include diff --git a/musique/value.hh b/musique/value/value.hh similarity index 95% rename from musique/value.hh rename to musique/value/value.hh index 117cd7a..c14e6a7 100644 --- a/musique/value.hh +++ b/musique/value/value.hh @@ -1,13 +1,13 @@ #ifndef MUSIQUE_VALUE_HH #define MUSIQUE_VALUE_HH -#include "array.hh" -#include "block.hh" -#include "chord.hh" -#include "common.hh" -#include "note.hh" -#include "result.hh" -#include "token.hh" +#include +#include +#include +#include +#include +#include +#include /// Representation of any value in language struct Value diff --git a/musique/value_algorithms.hh b/musique/value/value_algorithms.hh similarity index 100% rename from musique/value_algorithms.hh rename to musique/value/value_algorithms.hh diff --git a/scripts/debug.mk b/scripts/debug.mk index 6e7e396..b59424c 100644 --- a/scripts/debug.mk +++ b/scripts/debug.mk @@ -2,10 +2,10 @@ Debug_Obj=$(addprefix bin/debug/,$(Obj)) debug: bin/debug/musique -bin/debug/musique: $(Debug_Obj) bin/debug/main.o bin/bestline.o include/*.hh +bin/debug/musique: $(Debug_Obj) bin/debug/main.o bin/bestline.o @echo "CXX $@" - @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/bestline.o bin/debug/main.o $(LDFLAGS) $(LDLIBS) + @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $(Debug_Obj) bin/bestline.o $(LDFLAGS) $(LDLIBS) -bin/debug/%.o: musique/%.cc include/*.hh +bin/debug/%.o: musique/%.cc @echo "CXX $@" @$(CXX) $(CXXFLAGS) $(DEBUG_FLAGS) $(CPPFLAGS) -o $@ $< -c diff --git a/scripts/release.mk b/scripts/release.mk index ef143c5..13e8ad3 100644 --- a/scripts/release.mk +++ b/scripts/release.mk @@ -6,4 +6,4 @@ bin/%.o: musique/%.cc bin/musique: $(Release_Obj) bin/main.o bin/bestline.o lib/midi/libmidi-alsa.a @echo "CXX $@" - @$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/bestline.o bin/main.o $(LDFLAGS) $(LDLIBS) + @$(CXX) $(CXXFLAGS) $(RELEASE_FLAGS) $(CPPFLAGS) -o $@ $(Release_Obj) bin/bestline.o $(LDFLAGS) $(LDLIBS)