From 9427ee0cb2f5013770287e70410afcc08bd1f446 Mon Sep 17 00:00:00 2001 From: Max Glass Date: Fri, 12 Jan 2024 15:59:18 -0600 Subject: [PATCH 01/83] Copy app.log from sandbox container --- sandbox-server/go.sum | 1 - sandbox-server/main.go | 29 ++++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/sandbox-server/go.sum b/sandbox-server/go.sum index 097bdb5b..576330fd 100644 --- a/sandbox-server/go.sum +++ b/sandbox-server/go.sum @@ -21,7 +21,6 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/matoous/go-nanoid v1.5.0 h1:VRorl6uCngneC4oUQqOYtO3S0H5QKFtKuKycFG3euek= github.com/matoous/go-nanoid v1.5.0/go.mod h1:zyD2a71IubI24efhpvkJz+ZwfwagzgSO6UNiFsZKN7U= github.com/matoous/go-nanoid/v2 v2.0.0 h1:d19kur2QuLeHmJBkvYkFdhFBzLoo1XVm2GgTpL+9Tj0= github.com/matoous/go-nanoid/v2 v2.0.0/go.mod h1:FtS4aGPVfEkxKxhdWPAspZpZSh1cOjtM7Ej/So3hR0g= diff --git a/sandbox-server/main.go b/sandbox-server/main.go index 615a5e2b..431135da 100644 --- a/sandbox-server/main.go +++ b/sandbox-server/main.go @@ -3,12 +3,16 @@ package main import ( "context" "fmt" + "io" "log" "net/http" + "os" "strings" "time" "unicode" + "archive/tar" + "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/client" @@ -32,7 +36,6 @@ func main() { if err := server.ListenAndServe(); err != nil { log.Fatal("Failed to start server\n") } - } func algoTestingHandler(w http.ResponseWriter, r *http.Request) { @@ -95,6 +98,30 @@ func algoTestingHandler(w http.ResponseWriter, r *http.Request) { go func() { time.Sleep(dockerTimeout) + reader, _, err := cli.CopyFromContainer(context.Background(), resp.ID, "logs/app.log") + if err != nil { + fmt.Printf("%s", err.Error()) + } + defer reader.Close() + + tarReader := tar.NewReader(reader) + + _, err = tarReader.Next() + if err != nil { + fmt.Printf("%s", err.Error()) + } + + dstFile, err := os.Create("out") + if err != nil { + fmt.Printf("%s", err.Error()) + } + defer dstFile.Close() + + _, err = io.Copy(dstFile, tarReader) + if err != nil { + fmt.Printf("%s", err.Error()) + } + cli.ContainerStop(context.Background(), resp.ID, container.StopOptions{}) }() From 678acf5deea33e64974bdde1d910993005d017da Mon Sep 17 00:00:00 2001 From: Max Glass Date: Sun, 14 Jan 2024 00:22:08 -0600 Subject: [PATCH 02/83] Upload sandbox structured.log to firebase storage --- sandbox-server/go.mod | 11 +++++-- sandbox-server/go.sum | 20 ++++++------- sandbox-server/main.go | 67 ++++++++++++++++++++++++++++++++++-------- 3 files changed, 72 insertions(+), 26 deletions(-) diff --git a/sandbox-server/go.mod b/sandbox-server/go.mod index 837d1291..a839886a 100644 --- a/sandbox-server/go.mod +++ b/sandbox-server/go.mod @@ -4,6 +4,11 @@ go 1.21.1 require github.com/docker/docker v24.0.7+incompatible +require ( + github.com/google/go-cmp v0.6.0 // indirect + golang.org/x/sync v0.6.0 // indirect +) + require ( github.com/Microsoft/go-winio v0.6.1 // indirect github.com/distribution/reference v0.5.0 // indirect @@ -19,9 +24,9 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/stretchr/testify v1.8.4 // indirect golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.6.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/time v0.4.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.6.0 // indirect gotest.tools/v3 v3.5.1 // indirect ) diff --git a/sandbox-server/go.sum b/sandbox-server/go.sum index 576330fd..774cb4b5 100644 --- a/sandbox-server/go.sum +++ b/sandbox-server/go.sum @@ -17,8 +17,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/matoous/go-nanoid v1.5.0/go.mod h1:zyD2a71IubI24efhpvkJz+ZwfwagzgSO6UNiFsZKN7U= @@ -53,22 +53,22 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= -golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/sandbox-server/main.go b/sandbox-server/main.go index 431135da..d07fcef8 100644 --- a/sandbox-server/main.go +++ b/sandbox-server/main.go @@ -1,12 +1,13 @@ package main import ( + "bytes" "context" "fmt" "io" "log" + "mime/multipart" "net/http" - "os" "strings" "time" "unicode" @@ -19,7 +20,9 @@ import ( gonanoid "github.com/matoous/go-nanoid/v2" ) -const dockerTimeout = time.Minute * 10 +const dockerTimeout = time.Minute * 1 +const firebaseStorageUrl = "https://firebasestorage.googleapis.com/v0/b/nutc-web.appspot.com/o" +const firebaseApiKey = "AIzaSyCo2l3x2DMhg5CaNy1Pyvknk_GK8v34iUc" const port = "8081" @@ -97,10 +100,14 @@ func algoTestingHandler(w http.ResponseWriter, r *http.Request) { } go func() { + defer cli.ContainerStop(context.Background(), resp.ID, container.StopOptions{}) + time.Sleep(dockerTimeout) - reader, _, err := cli.CopyFromContainer(context.Background(), resp.ID, "logs/app.log") + + reader, _, err := cli.CopyFromContainer(context.Background(), resp.ID, "logs/structured.log") if err != nil { fmt.Printf("%s", err.Error()) + return } defer reader.Close() @@ -109,20 +116,12 @@ func algoTestingHandler(w http.ResponseWriter, r *http.Request) { _, err = tarReader.Next() if err != nil { fmt.Printf("%s", err.Error()) + return } - dstFile, err := os.Create("out") - if err != nil { - fmt.Printf("%s", err.Error()) - } - defer dstFile.Close() - - _, err = io.Copy(dstFile, tarReader) - if err != nil { + if err := uploadLogFile(user_id, algo_id, firebaseApiKey, tarReader); err != nil { fmt.Printf("%s", err.Error()) } - - cli.ContainerStop(context.Background(), resp.ID, container.StopOptions{}) }() fmt.Fprintf(w, "Container %s started successfully with user_id: %s and algo_id: %s\n", container_name, user_id, algo_id) @@ -136,3 +135,45 @@ func isValidID(id string) bool { } return true } + +func uploadLogFile(user_id, algo_id, apiKey string, reader io.Reader) error { + var buffer bytes.Buffer + + writer := multipart.NewWriter(&buffer) + + fileName := fmt.Sprintf("logs/%s/%s.log", user_id, algo_id) + + part, err := writer.CreateFormFile("file", fileName) + if err != nil { + return fmt.Errorf("writer.CreateFormFile: %v", err) + } + + if _, err := io.Copy(part, reader); err != nil { + return fmt.Errorf("io.Copy: %v", err) + } + + if err := writer.Close(); err != nil { + return fmt.Errorf("writer.Close: %v", err) + } + + req, err := http.NewRequest("POST", firebaseStorageUrl+"?uploadType=media&name="+fileName, &buffer) + if err != nil { + return fmt.Errorf("http.NewRequest: %v", err) + } + + req.Header.Set("Authorization", "Bearer "+apiKey) + req.Header.Set("Content-Type", writer.FormDataContentType()) + + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return fmt.Errorf("client.Do: %v", err) + } + defer resp.Body.Close() + + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("upload failed with status: %v", resp.Status) + } + + return nil +} From a4464e4ddcb50660226c567a23ad9375e75ad73b Mon Sep 17 00:00:00 2001 From: Max Glass Date: Sun, 14 Jan 2024 00:32:46 -0600 Subject: [PATCH 03/83] flush output log --- exchange/src/utils/logger/logger.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/exchange/src/utils/logger/logger.cpp b/exchange/src/utils/logger/logger.cpp index 0683720f..7dbf3efe 100644 --- a/exchange/src/utils/logger/logger.cpp +++ b/exchange/src/utils/logger/logger.cpp @@ -54,6 +54,7 @@ Logger::log_event(const T& json_message) // Write start of JSON output_file_ << buffer << "\n"; + output_file_.flush(); } // Explicit instantiations From 23e5aa08270dca8b968fdc2bea2abe523453aa58 Mon Sep 17 00:00:00 2001 From: Max Glass Date: Sun, 14 Jan 2024 11:40:05 -0600 Subject: [PATCH 04/83] change timeout back to 10 minutes --- sandbox-server/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sandbox-server/main.go b/sandbox-server/main.go index d07fcef8..ae98b254 100644 --- a/sandbox-server/main.go +++ b/sandbox-server/main.go @@ -20,7 +20,7 @@ import ( gonanoid "github.com/matoous/go-nanoid/v2" ) -const dockerTimeout = time.Minute * 1 +const dockerTimeout = time.Minute * 10 const firebaseStorageUrl = "https://firebasestorage.googleapis.com/v0/b/nutc-web.appspot.com/o" const firebaseApiKey = "AIzaSyCo2l3x2DMhg5CaNy1Pyvknk_GK8v34iUc" From 406c9acade8568420e6b4376c81be35d6db612b5 Mon Sep 17 00:00:00 2001 From: miyaliu627 <107294785+miyaliu627@users.noreply.github.com> Date: Sat, 20 Jan 2024 21:20:31 -0600 Subject: [PATCH 05/83] added integration test for on account update --- exchange/test/src/integration/basic_algo.cpp | 39 ++++++++++ .../test/test_algos/buy_tsla_on_account.py | 71 +++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 exchange/test/test_algos/buy_tsla_on_account.py diff --git a/exchange/test/src/integration/basic_algo.cpp b/exchange/test/src/integration/basic_algo.cpp index 0bdd96f3..2dd6c6d2 100644 --- a/exchange/test/src/integration/basic_algo.cpp +++ b/exchange/test/src/integration/basic_algo.cpp @@ -89,3 +89,42 @@ TEST_F(IntegrationBasicAlgo, OnTradeUpdate) 1 ); } + + +TEST_F(IntegrationBasicAlgo, OnAccountUpdate) +{ + std::vector names{"test_algos/buy_tsla_on_account"}; + nutc::testing_utils::initialize_testing_clients(users_, names); + + engine_manager_.add_engine("TSLA"); + engine_manager_.add_engine("APPL"); + + rmq::RabbitMQOrderHandler::add_liquidity_to_ticker( + users_, engine_manager_, "TSLA", 100, 100 // NOLINT (magic-number-*) + ); + + // obupdate triggers one user to place a BUY order of 10 TSLA at 102 + auto mess1 = rmq::RabbitMQConsumer::consume_message(); + EXPECT_TRUE(std::holds_alternative(mess1)); + + nutc::messages::MarketOrder actual_mo = + std::get(mess1); + EXPECT_EQ_MARKET_ORDER( + actual_mo, "test_algos/buy_tsla_on_account", "TSLA", nutc::messages::SIDE::BUY, + 102, 10 + ); + + rmq::RabbitMQOrderHandler::handle_incoming_market_order( + engine_manager_, users_, actual_mo + ); + + // on_trade_match triggers one user to place a BUY order of 1 TSLA at 100 + auto mess2 = rmq::RabbitMQConsumer::consume_message(); + EXPECT_TRUE(std::holds_alternative(mess2)); + + nutc::messages::MarketOrder actual2 = std::get(mess2); + EXPECT_EQ_MARKET_ORDER( + actual2, "test_algos/buy_tsla_on_account", "APPL", nutc::messages::SIDE::BUY, 100, + 1 + ); +} diff --git a/exchange/test/test_algos/buy_tsla_on_account.py b/exchange/test/test_algos/buy_tsla_on_account.py new file mode 100644 index 00000000..a1ebb74f --- /dev/null +++ b/exchange/test/test_algos/buy_tsla_on_account.py @@ -0,0 +1,71 @@ +def place_market_order(side: str, ticker: str, quantity: float, price: float) -> None: + """Place a market order - DO NOT MODIFY""" + + +class Strategy: + """Template for a strategy.""" + + def __init__(self) -> None: + """Your initialization code goes here.""" + place_market_order("BUY", "TSLA", 10, 102) + + def on_trade_update( + self, ticker: str, side: str, price: float, quantity: float + ) -> None: + """Called whenever two orders match. Could be one of your orders, or two other people's orders. + Parameters + ---------- + ticker + Ticker of orders that were matched + side + price + Price that trade was executed at + quantity + Volume traded + """ + print(f"Python Trade update: {ticker} {side} {price} {quantity}") + + def on_orderbook_update( + self, ticker: str, side: str, price: float, quantity: float + ) -> None: + """Called whenever the orderbook changes. This could be because of a trade, or because of a new order, or both. + Parameters + ---------- + ticker + Ticker that has an orderbook update + side + Which orderbook was updated + price + Price of orderbook that has an update + quantity + Volume placed into orderbook + """ + print(f"Python Orderbook update: {ticker} {side} {price} {quantity}") + + def on_account_update( + self, + ticker: str, + side: str, + price: float, + quantity: float, + capital_remaining: float, + ) -> None: + """Called whenever one of your orders is filled. + Parameters + ---------- + ticker + Ticker of order that was fulfilled + side + Side of order that was fulfilled + price + Price that order was fulfilled at + quantity + Volume of order that was fulfilled + capital_remaining + Amount of capital after fulfilling order + """ + print( + f"Python Account update: {ticker} {side} {price} {quantity} {capital_remaining}" + ) + if ticker == "TSLA" and quantity >= 10: + place_market_order("BUY", "APPL", 1, 100) From 2107d043cb651ea4b24c97be744b2e9df60586ea Mon Sep 17 00:00:00 2001 From: miyaliu627 <107294785+miyaliu627@users.noreply.github.com> Date: Sat, 20 Jan 2024 21:29:26 -0600 Subject: [PATCH 06/83] tried fixing linter issue --- exchange/test/src/integration/basic_algo.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/exchange/test/src/integration/basic_algo.cpp b/exchange/test/src/integration/basic_algo.cpp index 2dd6c6d2..8f7f9e01 100644 --- a/exchange/test/src/integration/basic_algo.cpp +++ b/exchange/test/src/integration/basic_algo.cpp @@ -68,11 +68,9 @@ TEST_F(IntegrationBasicAlgo, OnTradeUpdate) auto mess1 = rmq::RabbitMQConsumer::consume_message(); EXPECT_TRUE(std::holds_alternative(mess1)); - nutc::messages::MarketOrder actual_mo = - std::get(mess1); + nutc::messages::MarketOrder actual_mo = std::get(mess1); EXPECT_EQ_MARKET_ORDER( - actual_mo, "test_algos/buy_tsla_on_trade", "TSLA", nutc::messages::SIDE::BUY, - 102, 10 + actual_mo, "test_algos/buy_tsla_on_trade", "TSLA", nutc::messages::SIDE::BUY, 102, 10 ); rmq::RabbitMQOrderHandler::handle_incoming_market_order( @@ -85,8 +83,7 @@ TEST_F(IntegrationBasicAlgo, OnTradeUpdate) nutc::messages::MarketOrder actual2 = std::get(mess2); EXPECT_EQ_MARKET_ORDER( - actual2, "test_algos/buy_tsla_on_trade", "APPL", nutc::messages::SIDE::BUY, 100, - 1 + actual2, "test_algos/buy_tsla_on_trade", "APPL", nutc::messages::SIDE::BUY, 100, 1 ); } @@ -107,11 +104,9 @@ TEST_F(IntegrationBasicAlgo, OnAccountUpdate) auto mess1 = rmq::RabbitMQConsumer::consume_message(); EXPECT_TRUE(std::holds_alternative(mess1)); - nutc::messages::MarketOrder actual_mo = - std::get(mess1); + nutc::messages::MarketOrder actual_mo = std::get(mess1); EXPECT_EQ_MARKET_ORDER( - actual_mo, "test_algos/buy_tsla_on_account", "TSLA", nutc::messages::SIDE::BUY, - 102, 10 + actual_mo, "test_algos/buy_tsla_on_account", "TSLA", nutc::messages::SIDE::BUY, 102, 10 ); rmq::RabbitMQOrderHandler::handle_incoming_market_order( @@ -124,7 +119,6 @@ TEST_F(IntegrationBasicAlgo, OnAccountUpdate) nutc::messages::MarketOrder actual2 = std::get(mess2); EXPECT_EQ_MARKET_ORDER( - actual2, "test_algos/buy_tsla_on_account", "APPL", nutc::messages::SIDE::BUY, 100, - 1 + actual2, "test_algos/buy_tsla_on_account", "APPL", nutc::messages::SIDE::BUY, 100, 1 ); } From 69b9d445a6fa7d8e56360b0345833336aa75b2f7 Mon Sep 17 00:00:00 2001 From: miyaliu627 <107294785+miyaliu627@users.noreply.github.com> Date: Sat, 20 Jan 2024 21:35:13 -0600 Subject: [PATCH 07/83] fixed linter issue --- exchange/test/src/integration/basic_algo.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/exchange/test/src/integration/basic_algo.cpp b/exchange/test/src/integration/basic_algo.cpp index 8f7f9e01..1b0b8c82 100644 --- a/exchange/test/src/integration/basic_algo.cpp +++ b/exchange/test/src/integration/basic_algo.cpp @@ -68,9 +68,11 @@ TEST_F(IntegrationBasicAlgo, OnTradeUpdate) auto mess1 = rmq::RabbitMQConsumer::consume_message(); EXPECT_TRUE(std::holds_alternative(mess1)); - nutc::messages::MarketOrder actual_mo = std::get(mess1); + nutc::messages::MarketOrder actual_mo = + std::get(mess1); EXPECT_EQ_MARKET_ORDER( - actual_mo, "test_algos/buy_tsla_on_trade", "TSLA", nutc::messages::SIDE::BUY, 102, 10 + actual_mo, "test_algos/buy_tsla_on_trade", "TSLA", nutc::messages::SIDE::BUY, + 102, 10 ); rmq::RabbitMQOrderHandler::handle_incoming_market_order( @@ -83,11 +85,11 @@ TEST_F(IntegrationBasicAlgo, OnTradeUpdate) nutc::messages::MarketOrder actual2 = std::get(mess2); EXPECT_EQ_MARKET_ORDER( - actual2, "test_algos/buy_tsla_on_trade", "APPL", nutc::messages::SIDE::BUY, 100, 1 + actual2, "test_algos/buy_tsla_on_trade", "APPL", nutc::messages::SIDE::BUY, 100, + 1 ); } - TEST_F(IntegrationBasicAlgo, OnAccountUpdate) { std::vector names{"test_algos/buy_tsla_on_account"}; @@ -104,9 +106,11 @@ TEST_F(IntegrationBasicAlgo, OnAccountUpdate) auto mess1 = rmq::RabbitMQConsumer::consume_message(); EXPECT_TRUE(std::holds_alternative(mess1)); - nutc::messages::MarketOrder actual_mo = std::get(mess1); + nutc::messages::MarketOrder actual_mo = + std::get(mess1); EXPECT_EQ_MARKET_ORDER( - actual_mo, "test_algos/buy_tsla_on_account", "TSLA", nutc::messages::SIDE::BUY, 102, 10 + actual_mo, "test_algos/buy_tsla_on_account", "TSLA", nutc::messages::SIDE::BUY, + 102, 10 ); rmq::RabbitMQOrderHandler::handle_incoming_market_order( @@ -119,6 +123,7 @@ TEST_F(IntegrationBasicAlgo, OnAccountUpdate) nutc::messages::MarketOrder actual2 = std::get(mess2); EXPECT_EQ_MARKET_ORDER( - actual2, "test_algos/buy_tsla_on_account", "APPL", nutc::messages::SIDE::BUY, 100, 1 + actual2, "test_algos/buy_tsla_on_account", "APPL", nutc::messages::SIDE::BUY, + 100, 1 ); } From 5f260644643e31d293fa749f99c717c34be63a84 Mon Sep 17 00:00:00 2001 From: Steven Ewald Date: Sun, 21 Jan 2024 12:00:27 -0800 Subject: [PATCH 08/83] Updated file paths for exchange --- exchange/CMakeLists.txt | 36 +++++++++---------- .../src/{ => exchange}/algos/algo_manager.hpp | 2 +- .../algos/dev_mode/dev_mode.cpp | 2 +- .../algos/dev_mode/dev_mode.hpp | 4 +-- .../algos/normal_mode/normal_mode.cpp | 2 +- .../algos/normal_mode/normal_mode.hpp | 2 +- .../algos/sandbox_mode/sandbox_mode.cpp | 4 +-- .../algos/sandbox_mode/sandbox_mode.hpp | 4 +-- .../client_manager/client_manager.cpp | 0 .../client_manager/client_manager.hpp | 2 +- exchange/src/{ => exchange}/curl/curl.cpp | 0 exchange/src/{ => exchange}/curl/curl.hpp | 0 exchange/src/{ => exchange}/main.cpp | 0 .../{ => exchange}/matching/engine/engine.cpp | 2 +- .../{ => exchange}/matching/engine/engine.hpp | 4 +-- .../matching/manager/engine_manager.cpp | 0 .../matching/manager/engine_manager.hpp | 2 +- .../process_spawning/spawning.cpp | 4 +-- .../process_spawning/spawning.hpp | 2 +- .../client_manager/RabbitMQClientManager.cpp | 6 ++-- .../client_manager/RabbitMQClientManager.hpp | 2 +- .../RabbitMQConnectionManager.cpp | 2 +- .../RabbitMQConnectionManager.hpp | 0 .../rabbitmq/consumer/RabbitMQConsumer.cpp | 4 +-- .../rabbitmq/consumer/RabbitMQConsumer.hpp | 6 ++-- .../src/{ => exchange}/rabbitmq/interface.md | 0 .../order_handler/RabbitMQOrderHandler.cpp | 2 +- .../order_handler/RabbitMQOrderHandler.hpp | 6 ++-- .../rabbitmq/publisher/RabbitMQPublisher.cpp | 2 +- .../rabbitmq/publisher/RabbitMQPublisher.hpp | 4 +-- .../queue_manager/RabbitMQQueueManager.cpp | 0 .../queue_manager/RabbitMQQueueManager.hpp | 0 .../src/{ => exchange}/rabbitmq/rabbitmq.hpp | 0 .../{ => exchange}/randomness/brownian.cpp | 0 .../{ => exchange}/randomness/brownian.hpp | 0 .../src/{ => exchange}/utils/doxygen_main.hpp | 0 .../utils/file_operations/file_operations.cpp | 0 .../utils/file_operations/file_operations.hpp | 0 .../{ => exchange}/utils/logger/logger.cpp | 2 +- .../{ => exchange}/utils/logger/logger.hpp | 2 +- .../src/{ => exchange}/utils/messages.hpp | 0 exchange/test/src/integration/basic_algo.cpp | 8 ++--- exchange/test/src/integration/basic_rmq.cpp | 6 ++-- exchange/test/src/test_utils/macros.hpp | 6 ++-- exchange/test/src/test_utils/process.cpp | 6 ++-- exchange/test/src/test_utils/process.hpp | 2 +- .../test/src/unit/logging/logging_orders.cpp | 4 +-- .../test/src/unit/matching/basic_matching.cpp | 4 +-- .../test/src/unit/matching/invalid_orders.cpp | 4 +-- .../test/src/unit/matching/many_orders.cpp | 2 +- 50 files changed, 76 insertions(+), 76 deletions(-) rename exchange/src/{ => exchange}/algos/algo_manager.hpp (96%) rename exchange/src/{ => exchange}/algos/dev_mode/dev_mode.cpp (96%) rename exchange/src/{ => exchange}/algos/dev_mode/dev_mode.hpp (88%) rename exchange/src/{ => exchange}/algos/normal_mode/normal_mode.cpp (96%) rename exchange/src/{ => exchange}/algos/normal_mode/normal_mode.hpp (93%) rename exchange/src/{ => exchange}/algos/sandbox_mode/sandbox_mode.cpp (92%) rename exchange/src/{ => exchange}/algos/sandbox_mode/sandbox_mode.hpp (85%) rename exchange/src/{ => exchange}/client_manager/client_manager.cpp (100%) rename exchange/src/{ => exchange}/client_manager/client_manager.hpp (98%) rename exchange/src/{ => exchange}/curl/curl.cpp (100%) rename exchange/src/{ => exchange}/curl/curl.hpp (100%) rename exchange/src/{ => exchange}/main.cpp (100%) rename exchange/src/{ => exchange}/matching/engine/engine.cpp (99%) rename exchange/src/{ => exchange}/matching/engine/engine.hpp (94%) rename exchange/src/{ => exchange}/matching/manager/engine_manager.cpp (100%) rename exchange/src/{ => exchange}/matching/manager/engine_manager.hpp (96%) rename exchange/src/{ => exchange}/process_spawning/spawning.cpp (95%) rename exchange/src/{ => exchange}/process_spawning/spawning.hpp (94%) rename exchange/src/{ => exchange}/rabbitmq/client_manager/RabbitMQClientManager.cpp (92%) rename exchange/src/{ => exchange}/rabbitmq/client_manager/RabbitMQClientManager.hpp (91%) rename exchange/src/{ => exchange}/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp (97%) rename exchange/src/{ => exchange}/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp (100%) rename exchange/src/{ => exchange}/rabbitmq/consumer/RabbitMQConsumer.cpp (93%) rename exchange/src/{ => exchange}/rabbitmq/consumer/RabbitMQConsumer.hpp (82%) rename exchange/src/{ => exchange}/rabbitmq/interface.md (100%) rename exchange/src/{ => exchange}/rabbitmq/order_handler/RabbitMQOrderHandler.cpp (97%) rename exchange/src/{ => exchange}/rabbitmq/order_handler/RabbitMQOrderHandler.hpp (77%) rename exchange/src/{ => exchange}/rabbitmq/publisher/RabbitMQPublisher.cpp (97%) rename exchange/src/{ => exchange}/rabbitmq/publisher/RabbitMQPublisher.hpp (89%) rename exchange/src/{ => exchange}/rabbitmq/queue_manager/RabbitMQQueueManager.cpp (100%) rename exchange/src/{ => exchange}/rabbitmq/queue_manager/RabbitMQQueueManager.hpp (100%) rename exchange/src/{ => exchange}/rabbitmq/rabbitmq.hpp (100%) rename exchange/src/{ => exchange}/randomness/brownian.cpp (100%) rename exchange/src/{ => exchange}/randomness/brownian.hpp (100%) rename exchange/src/{ => exchange}/utils/doxygen_main.hpp (100%) rename exchange/src/{ => exchange}/utils/file_operations/file_operations.cpp (100%) rename exchange/src/{ => exchange}/utils/file_operations/file_operations.hpp (100%) rename exchange/src/{ => exchange}/utils/logger/logger.cpp (95%) rename exchange/src/{ => exchange}/utils/logger/logger.hpp (95%) rename exchange/src/{ => exchange}/utils/messages.hpp (100%) diff --git a/exchange/CMakeLists.txt b/exchange/CMakeLists.txt index 53cac651..01ae6eaf 100644 --- a/exchange/CMakeLists.txt +++ b/exchange/CMakeLists.txt @@ -18,32 +18,32 @@ include(cmake/variables.cmake) add_library( NUTC24_lib OBJECT - src/algos/sandbox_mode/sandbox_mode.cpp - src/algos/dev_mode/dev_mode.cpp - src/algos/normal_mode/normal_mode.cpp + src/exchange/algos/sandbox_mode/sandbox_mode.cpp + src/exchange/algos/dev_mode/dev_mode.cpp + src/exchange/algos/normal_mode/normal_mode.cpp src/logging.cpp - src/curl/curl.cpp + src/exchange/curl/curl.cpp - src/process_spawning/spawning.cpp + src/exchange/process_spawning/spawning.cpp - src/rabbitmq/client_manager/RabbitMQClientManager.cpp - src/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp - src/rabbitmq/consumer/RabbitMQConsumer.cpp - src/rabbitmq/order_handler/RabbitMQOrderHandler.cpp - src/rabbitmq/publisher/RabbitMQPublisher.cpp - src/rabbitmq/queue_manager/RabbitMQQueueManager.cpp + src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp + src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp + src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp + src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp + src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp + src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp - src/matching/engine/engine.cpp - src/matching/manager/engine_manager.cpp + src/exchange/matching/engine/engine.cpp + src/exchange/matching/manager/engine_manager.cpp - src/client_manager/client_manager.cpp + src/exchange/client_manager/client_manager.cpp - src/utils/logger/logger.cpp - src/utils/file_operations/file_operations.cpp + src/exchange/utils/logger/logger.cpp + src/exchange/utils/file_operations/file_operations.cpp - src/randomness/brownian.cpp + src/exchange/randomness/brownian.cpp ) target_include_directories( @@ -84,7 +84,7 @@ target_link_libraries(NUTC24_lib PUBLIC glaze::glaze) # ---- Declare executable ---- -add_executable(NUTC24_exe src/main.cpp) +add_executable(NUTC24_exe src/exchange/main.cpp) add_executable(NUTC24::exe ALIAS NUTC24_exe) set_property(TARGET NUTC24_exe PROPERTY OUTPUT_NAME NUTC24) diff --git a/exchange/src/algos/algo_manager.hpp b/exchange/src/exchange/algos/algo_manager.hpp similarity index 96% rename from exchange/src/algos/algo_manager.hpp rename to exchange/src/exchange/algos/algo_manager.hpp index 242bee6c..d3310b35 100644 --- a/exchange/src/algos/algo_manager.hpp +++ b/exchange/src/exchange/algos/algo_manager.hpp @@ -1,6 +1,6 @@ #pragma once -#include "client_manager/client_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" namespace nutc { namespace algo_mgmt { diff --git a/exchange/src/algos/dev_mode/dev_mode.cpp b/exchange/src/exchange/algos/dev_mode/dev_mode.cpp similarity index 96% rename from exchange/src/algos/dev_mode/dev_mode.cpp rename to exchange/src/exchange/algos/dev_mode/dev_mode.cpp index 4af9d3a6..8931a49f 100644 --- a/exchange/src/algos/dev_mode/dev_mode.cpp +++ b/exchange/src/exchange/algos/dev_mode/dev_mode.cpp @@ -2,7 +2,7 @@ #include "config.h" #include "logging.hpp" -#include "utils/file_operations/file_operations.hpp" +#include "exchange/utils/file_operations/file_operations.hpp" #include diff --git a/exchange/src/algos/dev_mode/dev_mode.hpp b/exchange/src/exchange/algos/dev_mode/dev_mode.hpp similarity index 88% rename from exchange/src/algos/dev_mode/dev_mode.hpp rename to exchange/src/exchange/algos/dev_mode/dev_mode.hpp index 3c0144f6..8378a565 100644 --- a/exchange/src/algos/dev_mode/dev_mode.hpp +++ b/exchange/src/exchange/algos/dev_mode/dev_mode.hpp @@ -1,7 +1,7 @@ #pragma once -#include "algos/algo_manager.hpp" -#include "client_manager/client_manager.hpp" +#include "exchange/algos/algo_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" #include diff --git a/exchange/src/algos/normal_mode/normal_mode.cpp b/exchange/src/exchange/algos/normal_mode/normal_mode.cpp similarity index 96% rename from exchange/src/algos/normal_mode/normal_mode.cpp rename to exchange/src/exchange/algos/normal_mode/normal_mode.cpp index 8eb60dc4..570d5954 100644 --- a/exchange/src/algos/normal_mode/normal_mode.cpp +++ b/exchange/src/exchange/algos/normal_mode/normal_mode.cpp @@ -1,6 +1,6 @@ #include "normal_mode.hpp" -#include "curl/curl.hpp" +#include "exchange/curl/curl.hpp" namespace nutc { namespace algo_mgmt { diff --git a/exchange/src/algos/normal_mode/normal_mode.hpp b/exchange/src/exchange/algos/normal_mode/normal_mode.hpp similarity index 93% rename from exchange/src/algos/normal_mode/normal_mode.hpp rename to exchange/src/exchange/algos/normal_mode/normal_mode.hpp index a6aa6c79..2e5c80d8 100644 --- a/exchange/src/algos/normal_mode/normal_mode.hpp +++ b/exchange/src/exchange/algos/normal_mode/normal_mode.hpp @@ -1,6 +1,6 @@ #pragma once -#include "algos/algo_manager.hpp" +#include "exchange/algos/algo_manager.hpp" namespace nutc { namespace algo_mgmt { diff --git a/exchange/src/algos/sandbox_mode/sandbox_mode.cpp b/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp similarity index 92% rename from exchange/src/algos/sandbox_mode/sandbox_mode.cpp rename to exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp index 8e7b044a..08007339 100644 --- a/exchange/src/algos/sandbox_mode/sandbox_mode.cpp +++ b/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp @@ -1,8 +1,8 @@ #include "sandbox_mode.hpp" -#include "curl/curl.hpp" +#include "exchange/curl/curl.hpp" #include "logging.hpp" -#include "utils/file_operations/file_operations.hpp" +#include "exchange/utils/file_operations/file_operations.hpp" #include diff --git a/exchange/src/algos/sandbox_mode/sandbox_mode.hpp b/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.hpp similarity index 85% rename from exchange/src/algos/sandbox_mode/sandbox_mode.hpp rename to exchange/src/exchange/algos/sandbox_mode/sandbox_mode.hpp index c6d7ea46..f0cddf20 100644 --- a/exchange/src/algos/sandbox_mode/sandbox_mode.hpp +++ b/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.hpp @@ -1,7 +1,7 @@ #pragma once -#include "algos/algo_manager.hpp" -#include "client_manager/client_manager.hpp" +#include "exchange/algos/algo_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" namespace nutc { namespace algo_mgmt { diff --git a/exchange/src/client_manager/client_manager.cpp b/exchange/src/exchange/client_manager/client_manager.cpp similarity index 100% rename from exchange/src/client_manager/client_manager.cpp rename to exchange/src/exchange/client_manager/client_manager.cpp diff --git a/exchange/src/client_manager/client_manager.hpp b/exchange/src/exchange/client_manager/client_manager.hpp similarity index 98% rename from exchange/src/client_manager/client_manager.hpp rename to exchange/src/exchange/client_manager/client_manager.hpp index 312474ae..9b73cbe3 100644 --- a/exchange/src/client_manager/client_manager.hpp +++ b/exchange/src/exchange/client_manager/client_manager.hpp @@ -1,7 +1,7 @@ #pragma once // keep track of active users and account information #include "config.h" -#include "utils/messages.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/src/curl/curl.cpp b/exchange/src/exchange/curl/curl.cpp similarity index 100% rename from exchange/src/curl/curl.cpp rename to exchange/src/exchange/curl/curl.cpp diff --git a/exchange/src/curl/curl.hpp b/exchange/src/exchange/curl/curl.hpp similarity index 100% rename from exchange/src/curl/curl.hpp rename to exchange/src/exchange/curl/curl.hpp diff --git a/exchange/src/main.cpp b/exchange/src/exchange/main.cpp similarity index 100% rename from exchange/src/main.cpp rename to exchange/src/exchange/main.cpp diff --git a/exchange/src/matching/engine/engine.cpp b/exchange/src/exchange/matching/engine/engine.cpp similarity index 99% rename from exchange/src/matching/engine/engine.cpp rename to exchange/src/exchange/matching/engine/engine.cpp index ddd04532..5f37ac38 100644 --- a/exchange/src/matching/engine/engine.cpp +++ b/exchange/src/exchange/matching/engine/engine.cpp @@ -1,6 +1,6 @@ #include "engine.hpp" -#include "utils/logger/logger.hpp" +#include "exchange/utils/logger/logger.hpp" #include #include diff --git a/exchange/src/matching/engine/engine.hpp b/exchange/src/exchange/matching/engine/engine.hpp similarity index 94% rename from exchange/src/matching/engine/engine.hpp rename to exchange/src/exchange/matching/engine/engine.hpp index 1f7a4a10..37102b44 100644 --- a/exchange/src/matching/engine/engine.hpp +++ b/exchange/src/exchange/matching/engine/engine.hpp @@ -1,7 +1,7 @@ #pragma once -#include "client_manager/client_manager.hpp" -#include "utils/messages.hpp" +#include "exchange/client_manager/client_manager.hpp" +#include "exchange/utils/messages.hpp" #include #include diff --git a/exchange/src/matching/manager/engine_manager.cpp b/exchange/src/exchange/matching/manager/engine_manager.cpp similarity index 100% rename from exchange/src/matching/manager/engine_manager.cpp rename to exchange/src/exchange/matching/manager/engine_manager.cpp diff --git a/exchange/src/matching/manager/engine_manager.hpp b/exchange/src/exchange/matching/manager/engine_manager.hpp similarity index 96% rename from exchange/src/matching/manager/engine_manager.hpp rename to exchange/src/exchange/matching/manager/engine_manager.hpp index c0437893..eb90fa5c 100644 --- a/exchange/src/matching/manager/engine_manager.hpp +++ b/exchange/src/exchange/matching/manager/engine_manager.hpp @@ -1,5 +1,5 @@ #pragma once -#include "matching/engine/engine.hpp" +#include "exchange/matching/engine/engine.hpp" #include #include diff --git a/exchange/src/process_spawning/spawning.cpp b/exchange/src/exchange/process_spawning/spawning.cpp similarity index 95% rename from exchange/src/process_spawning/spawning.cpp rename to exchange/src/exchange/process_spawning/spawning.cpp index 7aef876e..1f87a161 100644 --- a/exchange/src/process_spawning/spawning.cpp +++ b/exchange/src/exchange/process_spawning/spawning.cpp @@ -1,7 +1,7 @@ -#include "process_spawning/spawning.hpp" +#include "spawning.hpp" #include "logging.hpp" -#include "utils/file_operations/file_operations.hpp" +#include "exchange/utils/file_operations/file_operations.hpp" namespace nutc { namespace client { diff --git a/exchange/src/process_spawning/spawning.hpp b/exchange/src/exchange/process_spawning/spawning.hpp similarity index 94% rename from exchange/src/process_spawning/spawning.hpp rename to exchange/src/exchange/process_spawning/spawning.hpp index 79989bea..376fb0da 100644 --- a/exchange/src/process_spawning/spawning.hpp +++ b/exchange/src/exchange/process_spawning/spawning.hpp @@ -1,6 +1,6 @@ #pragma once -#include "client_manager/client_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" #include #include diff --git a/exchange/src/rabbitmq/client_manager/RabbitMQClientManager.cpp b/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp similarity index 92% rename from exchange/src/rabbitmq/client_manager/RabbitMQClientManager.cpp rename to exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp index c3260d6f..815551c3 100644 --- a/exchange/src/rabbitmq/client_manager/RabbitMQClientManager.cpp +++ b/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp @@ -1,9 +1,9 @@ #include "RabbitMQClientManager.hpp" -#include "client_manager/client_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" #include "logging.hpp" -#include "rabbitmq/consumer/RabbitMQConsumer.hpp" -#include "rabbitmq/publisher/RabbitMQPublisher.hpp" +#include "exchange/rabbitmq/consumer/RabbitMQConsumer.hpp" +#include "exchange/rabbitmq/publisher/RabbitMQPublisher.hpp" namespace nutc { namespace rabbitmq { diff --git a/exchange/src/rabbitmq/client_manager/RabbitMQClientManager.hpp b/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.hpp similarity index 91% rename from exchange/src/rabbitmq/client_manager/RabbitMQClientManager.hpp rename to exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.hpp index 7c755d61..6ae8fc63 100644 --- a/exchange/src/rabbitmq/client_manager/RabbitMQClientManager.hpp +++ b/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.hpp @@ -1,6 +1,6 @@ #pragma once -#include "client_manager/client_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" namespace nutc { namespace rabbitmq { diff --git a/exchange/src/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp b/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp similarity index 97% rename from exchange/src/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp rename to exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp index 156fb83b..82c484b7 100644 --- a/exchange/src/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp +++ b/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp @@ -1,7 +1,7 @@ #include "RabbitMQConnectionManager.hpp" #include "logging.hpp" -#include "rabbitmq/queue_manager/RabbitMQQueueManager.hpp" +#include "exchange/rabbitmq/queue_manager/RabbitMQQueueManager.hpp" #include diff --git a/exchange/src/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp b/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp similarity index 100% rename from exchange/src/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp rename to exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp diff --git a/exchange/src/rabbitmq/consumer/RabbitMQConsumer.cpp b/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp similarity index 93% rename from exchange/src/rabbitmq/consumer/RabbitMQConsumer.cpp rename to exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp index 4793691d..0e8d3549 100644 --- a/exchange/src/rabbitmq/consumer/RabbitMQConsumer.cpp +++ b/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp @@ -1,8 +1,8 @@ #include "RabbitMQConsumer.hpp" #include "logging.hpp" -#include "rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" -#include "rabbitmq/order_handler/RabbitMQOrderHandler.hpp" +#include "exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" +#include "exchange/rabbitmq/order_handler/RabbitMQOrderHandler.hpp" #include diff --git a/exchange/src/rabbitmq/consumer/RabbitMQConsumer.hpp b/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.hpp similarity index 82% rename from exchange/src/rabbitmq/consumer/RabbitMQConsumer.hpp rename to exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.hpp index 36c0214d..fed23a04 100644 --- a/exchange/src/rabbitmq/consumer/RabbitMQConsumer.hpp +++ b/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.hpp @@ -1,8 +1,8 @@ #pragma once -#include "client_manager/client_manager.hpp" -#include "matching/manager/engine_manager.hpp" -#include "utils/messages.hpp" +#include "exchange/client_manager/client_manager.hpp" +#include "exchange/matching/manager/engine_manager.hpp" +#include "exchange/utils/messages.hpp" #include #include diff --git a/exchange/src/rabbitmq/interface.md b/exchange/src/exchange/rabbitmq/interface.md similarity index 100% rename from exchange/src/rabbitmq/interface.md rename to exchange/src/exchange/rabbitmq/interface.md diff --git a/exchange/src/rabbitmq/order_handler/RabbitMQOrderHandler.cpp b/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp similarity index 97% rename from exchange/src/rabbitmq/order_handler/RabbitMQOrderHandler.cpp rename to exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp index a83a29f6..1e4e498e 100644 --- a/exchange/src/rabbitmq/order_handler/RabbitMQOrderHandler.cpp +++ b/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp @@ -1,7 +1,7 @@ #include "RabbitMQOrderHandler.hpp" #include "logging.hpp" -#include "rabbitmq/publisher/RabbitMQPublisher.hpp" +#include "exchange/rabbitmq/publisher/RabbitMQPublisher.hpp" namespace nutc { namespace rabbitmq { diff --git a/exchange/src/rabbitmq/order_handler/RabbitMQOrderHandler.hpp b/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.hpp similarity index 77% rename from exchange/src/rabbitmq/order_handler/RabbitMQOrderHandler.hpp rename to exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.hpp index b231f64d..1fb4189c 100644 --- a/exchange/src/rabbitmq/order_handler/RabbitMQOrderHandler.hpp +++ b/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.hpp @@ -1,8 +1,8 @@ #pragma once -#include "client_manager/client_manager.hpp" -#include "matching/manager/engine_manager.hpp" -#include "utils/messages.hpp" +#include "exchange/client_manager/client_manager.hpp" +#include "exchange/matching/manager/engine_manager.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/src/rabbitmq/publisher/RabbitMQPublisher.cpp b/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp similarity index 97% rename from exchange/src/rabbitmq/publisher/RabbitMQPublisher.cpp rename to exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp index 7722f2db..3fe0dc5b 100644 --- a/exchange/src/rabbitmq/publisher/RabbitMQPublisher.cpp +++ b/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp @@ -1,7 +1,7 @@ #include "RabbitMQPublisher.hpp" #include "logging.hpp" -#include "rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" +#include "exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" namespace nutc { namespace rabbitmq { diff --git a/exchange/src/rabbitmq/publisher/RabbitMQPublisher.hpp b/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.hpp similarity index 89% rename from exchange/src/rabbitmq/publisher/RabbitMQPublisher.hpp rename to exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.hpp index 0025ad0a..de8d1367 100644 --- a/exchange/src/rabbitmq/publisher/RabbitMQPublisher.hpp +++ b/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.hpp @@ -1,7 +1,7 @@ #pragma once -#include "client_manager/client_manager.hpp" -#include "utils/messages.hpp" +#include "exchange/client_manager/client_manager.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/src/rabbitmq/queue_manager/RabbitMQQueueManager.cpp b/exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp similarity index 100% rename from exchange/src/rabbitmq/queue_manager/RabbitMQQueueManager.cpp rename to exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp diff --git a/exchange/src/rabbitmq/queue_manager/RabbitMQQueueManager.hpp b/exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.hpp similarity index 100% rename from exchange/src/rabbitmq/queue_manager/RabbitMQQueueManager.hpp rename to exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.hpp diff --git a/exchange/src/rabbitmq/rabbitmq.hpp b/exchange/src/exchange/rabbitmq/rabbitmq.hpp similarity index 100% rename from exchange/src/rabbitmq/rabbitmq.hpp rename to exchange/src/exchange/rabbitmq/rabbitmq.hpp diff --git a/exchange/src/randomness/brownian.cpp b/exchange/src/exchange/randomness/brownian.cpp similarity index 100% rename from exchange/src/randomness/brownian.cpp rename to exchange/src/exchange/randomness/brownian.cpp diff --git a/exchange/src/randomness/brownian.hpp b/exchange/src/exchange/randomness/brownian.hpp similarity index 100% rename from exchange/src/randomness/brownian.hpp rename to exchange/src/exchange/randomness/brownian.hpp diff --git a/exchange/src/utils/doxygen_main.hpp b/exchange/src/exchange/utils/doxygen_main.hpp similarity index 100% rename from exchange/src/utils/doxygen_main.hpp rename to exchange/src/exchange/utils/doxygen_main.hpp diff --git a/exchange/src/utils/file_operations/file_operations.cpp b/exchange/src/exchange/utils/file_operations/file_operations.cpp similarity index 100% rename from exchange/src/utils/file_operations/file_operations.cpp rename to exchange/src/exchange/utils/file_operations/file_operations.cpp diff --git a/exchange/src/utils/file_operations/file_operations.hpp b/exchange/src/exchange/utils/file_operations/file_operations.hpp similarity index 100% rename from exchange/src/utils/file_operations/file_operations.hpp rename to exchange/src/exchange/utils/file_operations/file_operations.hpp diff --git a/exchange/src/utils/logger/logger.cpp b/exchange/src/exchange/utils/logger/logger.cpp similarity index 95% rename from exchange/src/utils/logger/logger.cpp rename to exchange/src/exchange/utils/logger/logger.cpp index 0683720f..f94d6500 100644 --- a/exchange/src/utils/logger/logger.cpp +++ b/exchange/src/exchange/utils/logger/logger.cpp @@ -1,4 +1,4 @@ -#include "utils/logger/logger.hpp" // includes fstream, string, optional +#include "exchange/utils/logger/logger.hpp" // includes fstream, string, optional #include #include diff --git a/exchange/src/utils/logger/logger.hpp b/exchange/src/exchange/utils/logger/logger.hpp similarity index 95% rename from exchange/src/utils/logger/logger.hpp rename to exchange/src/exchange/utils/logger/logger.hpp index ecd1f289..4de2e2b6 100644 --- a/exchange/src/utils/logger/logger.hpp +++ b/exchange/src/exchange/utils/logger/logger.hpp @@ -2,7 +2,7 @@ #include "config.h" #include "logging.hpp" -#include "utils/messages.hpp" // TYPE should be an enum {AccountUpdate, OrderbookUpdate, TradeUpdate, MarketOrder} +#include "exchange/utils/messages.hpp" // TYPE should be an enum {AccountUpdate, OrderbookUpdate, TradeUpdate, MarketOrder} #include #include diff --git a/exchange/src/utils/messages.hpp b/exchange/src/exchange/utils/messages.hpp similarity index 100% rename from exchange/src/utils/messages.hpp rename to exchange/src/exchange/utils/messages.hpp diff --git a/exchange/test/src/integration/basic_algo.cpp b/exchange/test/src/integration/basic_algo.cpp index 1b0b8c82..2b7b11a0 100644 --- a/exchange/test/src/integration/basic_algo.cpp +++ b/exchange/test/src/integration/basic_algo.cpp @@ -1,9 +1,9 @@ -#include "rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" -#include "rabbitmq/consumer/RabbitMQConsumer.hpp" -#include "rabbitmq/order_handler/RabbitMQOrderHandler.hpp" +#include "exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" +#include "exchange/rabbitmq/consumer/RabbitMQConsumer.hpp" +#include "exchange/rabbitmq/order_handler/RabbitMQOrderHandler.hpp" #include "test_utils/macros.hpp" #include "test_utils/process.hpp" -#include "utils/messages.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/test/src/integration/basic_rmq.cpp b/exchange/test/src/integration/basic_rmq.cpp index 12628aa2..b02f542d 100644 --- a/exchange/test/src/integration/basic_rmq.cpp +++ b/exchange/test/src/integration/basic_rmq.cpp @@ -1,7 +1,7 @@ // #include "local_algos/dev_mode.hpp" -#include "algos/dev_mode/dev_mode.hpp" -#include "process_spawning/spawning.hpp" -#include "rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" +#include "exchange/algos/dev_mode/dev_mode.hpp" +#include "exchange/process_spawning/spawning.hpp" +#include "exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" #include "test_utils/process.hpp" #include diff --git a/exchange/test/src/test_utils/macros.hpp b/exchange/test/src/test_utils/macros.hpp index eebd824e..36d153e8 100644 --- a/exchange/test/src/test_utils/macros.hpp +++ b/exchange/test/src/test_utils/macros.hpp @@ -1,6 +1,6 @@ -#include "client_manager/client_manager.hpp" -#include "matching/engine/engine.hpp" -#include "utils/logger/logger.hpp" +#include "exchange/client_manager/client_manager.hpp" +#include "exchange/matching/engine/engine.hpp" +#include "exchange/utils/logger/logger.hpp" #include diff --git a/exchange/test/src/test_utils/process.cpp b/exchange/test/src/test_utils/process.cpp index 460812c7..e693abd3 100644 --- a/exchange/test/src/test_utils/process.cpp +++ b/exchange/test/src/test_utils/process.cpp @@ -1,8 +1,8 @@ #include "process.hpp" -#include "algos/dev_mode/dev_mode.hpp" -#include "process_spawning/spawning.hpp" -#include "rabbitmq/client_manager/RabbitMQClientManager.hpp" +#include "exchange/algos/dev_mode/dev_mode.hpp" +#include "exchange/process_spawning/spawning.hpp" +#include "exchange/rabbitmq/client_manager/RabbitMQClientManager.hpp" #include diff --git a/exchange/test/src/test_utils/process.hpp b/exchange/test/src/test_utils/process.hpp index 1070d714..0552613d 100644 --- a/exchange/test/src/test_utils/process.hpp +++ b/exchange/test/src/test_utils/process.hpp @@ -1,6 +1,6 @@ #pragma once -#include "client_manager/client_manager.hpp" +#include "exchange/client_manager/client_manager.hpp" namespace nutc { namespace testing_utils { diff --git a/exchange/test/src/unit/logging/logging_orders.cpp b/exchange/test/src/unit/logging/logging_orders.cpp index 66dbcf8b..ada5bb50 100644 --- a/exchange/test/src/unit/logging/logging_orders.cpp +++ b/exchange/test/src/unit/logging/logging_orders.cpp @@ -1,7 +1,7 @@ #include "config.h" -#include "matching/engine/engine.hpp" +#include "exchange/matching/engine/engine.hpp" #include "test_utils/macros.hpp" -#include "utils/messages.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/test/src/unit/matching/basic_matching.cpp b/exchange/test/src/unit/matching/basic_matching.cpp index 5a179abc..b650f298 100644 --- a/exchange/test/src/unit/matching/basic_matching.cpp +++ b/exchange/test/src/unit/matching/basic_matching.cpp @@ -1,6 +1,6 @@ -#include "matching/engine/engine.hpp" +#include "exchange/matching/engine/engine.hpp" #include "test_utils/macros.hpp" -#include "utils/messages.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/test/src/unit/matching/invalid_orders.cpp b/exchange/test/src/unit/matching/invalid_orders.cpp index 447e3a4e..2330fa78 100644 --- a/exchange/test/src/unit/matching/invalid_orders.cpp +++ b/exchange/test/src/unit/matching/invalid_orders.cpp @@ -1,7 +1,7 @@ #include "config.h" -#include "matching/engine/engine.hpp" +#include "exchange/matching/engine/engine.hpp" #include "test_utils/macros.hpp" -#include "utils/messages.hpp" +#include "exchange/utils/messages.hpp" #include diff --git a/exchange/test/src/unit/matching/many_orders.cpp b/exchange/test/src/unit/matching/many_orders.cpp index e05bbb2c..087bdbef 100644 --- a/exchange/test/src/unit/matching/many_orders.cpp +++ b/exchange/test/src/unit/matching/many_orders.cpp @@ -1,5 +1,5 @@ #include "test_utils/macros.hpp" -#include "utils/messages.hpp" +#include "exchange/utils/messages.hpp" #include From 1ec06e655b9bc048933bf37fb1a53fd7bfb75b22 Mon Sep 17 00:00:00 2001 From: Steven Ewald Date: Sun, 21 Jan 2024 12:06:15 -0800 Subject: [PATCH 09/83] Moved config and log files to exchange subdirectory --- exchange/CMakeLists.txt | 2 +- exchange/src/exchange/algos/dev_mode/dev_mode.cpp | 4 ++-- exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp | 2 +- exchange/src/exchange/client_manager/client_manager.hpp | 2 +- exchange/src/{ => exchange}/config.h | 0 exchange/src/exchange/curl/curl.cpp | 2 +- exchange/src/{ => exchange}/logging.cpp | 0 exchange/src/{ => exchange}/logging.hpp | 0 exchange/src/exchange/process_spawning/spawning.cpp | 2 +- .../rabbitmq/client_manager/RabbitMQClientManager.cpp | 2 +- .../rabbitmq/connection_manager/RabbitMQConnectionManager.cpp | 2 +- exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp | 2 +- .../exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp | 2 +- .../src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp | 2 +- .../exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp | 2 +- .../src/exchange/utils/file_operations/file_operations.cpp | 2 +- exchange/src/exchange/utils/logger/logger.hpp | 4 ++-- exchange/test/src/unit/logging/logging_orders.cpp | 2 +- exchange/test/src/unit/matching/invalid_orders.cpp | 2 +- 19 files changed, 18 insertions(+), 18 deletions(-) rename exchange/src/{ => exchange}/config.h (100%) rename exchange/src/{ => exchange}/logging.cpp (100%) rename exchange/src/{ => exchange}/logging.hpp (100%) diff --git a/exchange/CMakeLists.txt b/exchange/CMakeLists.txt index 01ae6eaf..0a073b43 100644 --- a/exchange/CMakeLists.txt +++ b/exchange/CMakeLists.txt @@ -22,7 +22,7 @@ add_library( src/exchange/algos/dev_mode/dev_mode.cpp src/exchange/algos/normal_mode/normal_mode.cpp - src/logging.cpp + src/exchange/logging.cpp src/exchange/curl/curl.cpp diff --git a/exchange/src/exchange/algos/dev_mode/dev_mode.cpp b/exchange/src/exchange/algos/dev_mode/dev_mode.cpp index 8931a49f..ddd3e79f 100644 --- a/exchange/src/exchange/algos/dev_mode/dev_mode.cpp +++ b/exchange/src/exchange/algos/dev_mode/dev_mode.cpp @@ -1,7 +1,7 @@ #include "dev_mode.hpp" -#include "config.h" -#include "logging.hpp" +#include "exchange/config.h" +#include "exchange/logging.hpp" #include "exchange/utils/file_operations/file_operations.hpp" #include diff --git a/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp b/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp index 08007339..b6fb45e2 100644 --- a/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp +++ b/exchange/src/exchange/algos/sandbox_mode/sandbox_mode.cpp @@ -1,7 +1,7 @@ #include "sandbox_mode.hpp" #include "exchange/curl/curl.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/utils/file_operations/file_operations.hpp" #include diff --git a/exchange/src/exchange/client_manager/client_manager.hpp b/exchange/src/exchange/client_manager/client_manager.hpp index 9b73cbe3..610a7839 100644 --- a/exchange/src/exchange/client_manager/client_manager.hpp +++ b/exchange/src/exchange/client_manager/client_manager.hpp @@ -1,6 +1,6 @@ #pragma once // keep track of active users and account information -#include "config.h" +#include "exchange/config.h" #include "exchange/utils/messages.hpp" #include diff --git a/exchange/src/config.h b/exchange/src/exchange/config.h similarity index 100% rename from exchange/src/config.h rename to exchange/src/exchange/config.h diff --git a/exchange/src/exchange/curl/curl.cpp b/exchange/src/exchange/curl/curl.cpp index bece48e0..cd697d52 100644 --- a/exchange/src/exchange/curl/curl.cpp +++ b/exchange/src/exchange/curl/curl.cpp @@ -1,6 +1,6 @@ #include "curl.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include diff --git a/exchange/src/logging.cpp b/exchange/src/exchange/logging.cpp similarity index 100% rename from exchange/src/logging.cpp rename to exchange/src/exchange/logging.cpp diff --git a/exchange/src/logging.hpp b/exchange/src/exchange/logging.hpp similarity index 100% rename from exchange/src/logging.hpp rename to exchange/src/exchange/logging.hpp diff --git a/exchange/src/exchange/process_spawning/spawning.cpp b/exchange/src/exchange/process_spawning/spawning.cpp index 1f87a161..66f0794b 100644 --- a/exchange/src/exchange/process_spawning/spawning.cpp +++ b/exchange/src/exchange/process_spawning/spawning.cpp @@ -1,6 +1,6 @@ #include "spawning.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/utils/file_operations/file_operations.hpp" namespace nutc { diff --git a/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp b/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp index 815551c3..f3814c98 100644 --- a/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp +++ b/exchange/src/exchange/rabbitmq/client_manager/RabbitMQClientManager.cpp @@ -1,7 +1,7 @@ #include "RabbitMQClientManager.hpp" #include "exchange/client_manager/client_manager.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/rabbitmq/consumer/RabbitMQConsumer.hpp" #include "exchange/rabbitmq/publisher/RabbitMQPublisher.hpp" diff --git a/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp b/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp index 82c484b7..6b0751a5 100644 --- a/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp +++ b/exchange/src/exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.cpp @@ -1,6 +1,6 @@ #include "RabbitMQConnectionManager.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/rabbitmq/queue_manager/RabbitMQQueueManager.hpp" #include diff --git a/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp b/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp index 0e8d3549..8d357cdf 100644 --- a/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp +++ b/exchange/src/exchange/rabbitmq/consumer/RabbitMQConsumer.cpp @@ -1,6 +1,6 @@ #include "RabbitMQConsumer.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" #include "exchange/rabbitmq/order_handler/RabbitMQOrderHandler.hpp" diff --git a/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp b/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp index 1e4e498e..347c60d3 100644 --- a/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp +++ b/exchange/src/exchange/rabbitmq/order_handler/RabbitMQOrderHandler.cpp @@ -1,6 +1,6 @@ #include "RabbitMQOrderHandler.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/rabbitmq/publisher/RabbitMQPublisher.hpp" namespace nutc { diff --git a/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp b/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp index 3fe0dc5b..ee825dbf 100644 --- a/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp +++ b/exchange/src/exchange/rabbitmq/publisher/RabbitMQPublisher.cpp @@ -1,6 +1,6 @@ #include "RabbitMQPublisher.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include "exchange/rabbitmq/connection_manager/RabbitMQConnectionManager.hpp" namespace nutc { diff --git a/exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp b/exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp index 6569dae7..32949530 100644 --- a/exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp +++ b/exchange/src/exchange/rabbitmq/queue_manager/RabbitMQQueueManager.cpp @@ -1,6 +1,6 @@ #include "RabbitMQQueueManager.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" namespace nutc { namespace rabbitmq { diff --git a/exchange/src/exchange/utils/file_operations/file_operations.cpp b/exchange/src/exchange/utils/file_operations/file_operations.cpp index d0c1944c..38ef0551 100644 --- a/exchange/src/exchange/utils/file_operations/file_operations.cpp +++ b/exchange/src/exchange/utils/file_operations/file_operations.cpp @@ -1,6 +1,6 @@ #include "file_operations.hpp" -#include "logging.hpp" +#include "exchange/logging.hpp" #include #include diff --git a/exchange/src/exchange/utils/logger/logger.hpp b/exchange/src/exchange/utils/logger/logger.hpp index 4de2e2b6..87fd4809 100644 --- a/exchange/src/exchange/utils/logger/logger.hpp +++ b/exchange/src/exchange/utils/logger/logger.hpp @@ -1,7 +1,7 @@ #pragma once -#include "config.h" -#include "logging.hpp" +#include "exchange/config.h" +#include "exchange/logging.hpp" #include "exchange/utils/messages.hpp" // TYPE should be an enum {AccountUpdate, OrderbookUpdate, TradeUpdate, MarketOrder} #include diff --git a/exchange/test/src/unit/logging/logging_orders.cpp b/exchange/test/src/unit/logging/logging_orders.cpp index ada5bb50..418e2d32 100644 --- a/exchange/test/src/unit/logging/logging_orders.cpp +++ b/exchange/test/src/unit/logging/logging_orders.cpp @@ -1,4 +1,4 @@ -#include "config.h" +#include "exchange/config.h" #include "exchange/matching/engine/engine.hpp" #include "test_utils/macros.hpp" #include "exchange/utils/messages.hpp" diff --git a/exchange/test/src/unit/matching/invalid_orders.cpp b/exchange/test/src/unit/matching/invalid_orders.cpp index 2330fa78..112c1564 100644 --- a/exchange/test/src/unit/matching/invalid_orders.cpp +++ b/exchange/test/src/unit/matching/invalid_orders.cpp @@ -1,4 +1,4 @@ -#include "config.h" +#include "exchange/config.h" #include "exchange/matching/engine/engine.hpp" #include "test_utils/macros.hpp" #include "exchange/utils/messages.hpp" From ae075d70510501a1ec5f464ffa6a734cd4d4cb40 Mon Sep 17 00:00:00 2001 From: Steven Ewald Date: Sun, 21 Jan 2024 12:42:59 -0800 Subject: [PATCH 10/83] Moved wrapper to exchange repository and updated CMakeList accordingly --- exchange/CMakeLists.txt | 102 +- exchange/cmake/dev-mode.cmake | 4 +- exchange/cmake/install-rules.cmake | 4 +- exchange/conanfile.py | 6 +- exchange/src/exchange/logging.cpp | 15 +- .../src => exchange/src/wrapper}/common.hpp | 4 +- .../src/wrapper/config.h | 0 .../src/wrapper}/dev_mode/dev_mode.cpp | 0 .../src/wrapper}/dev_mode/dev_mode.hpp | 0 .../src/wrapper}/firebase/firebase.cpp | 0 .../src/wrapper}/firebase/firebase.hpp | 4 +- .../src => exchange/src/wrapper}/logging.cpp | 6 +- .../src => exchange/src/wrapper}/logging.hpp | 2 +- .../src => exchange/src/wrapper}/main.cpp | 33 +- .../src/wrapper}/pywrapper/pywrapper.cpp | 0 .../src/wrapper}/pywrapper/pywrapper.hpp | 4 +- .../src/wrapper}/pywrapper/rate_limiter.cpp | 0 .../src/wrapper}/pywrapper/rate_limiter.hpp | 0 .../src/wrapper}/rabbitmq/rabbitmq.cpp | 2 +- .../src/wrapper}/rabbitmq/rabbitmq.hpp | 6 +- .../src/wrapper}/util/doxygen_main.hpp | 0 .../src/wrapper}/util/messages.hpp | 0 exchange/test/CMakeLists.txt | 2 +- wrapper/.clang-format | 189 -- wrapper/.clang-tidy | 134 - wrapper/.clangd | 2 - wrapper/.codespellignore | 1 - wrapper/.codespellrc | 7 - wrapper/.gitignore | 16 - wrapper/BUILDING-DEPRECATED.md | 67 - wrapper/CMakeLists.txt | 121 - wrapper/CMakePresets.json | 193 -- wrapper/CODE_OF_CONDUCT.md | 5 - wrapper/CONTRIBUTING.md | 19 - wrapper/Doxyfile | 2822 ----------------- wrapper/HACKING.md | 156 - wrapper/README.md | 19 - wrapper/Taskfile.yml | 63 - wrapper/cmake/coverage.cmake | 33 - wrapper/cmake/dev-mode.cmake | 28 - wrapper/cmake/docs-ci.cmake | 112 - wrapper/cmake/docs.cmake | 46 - wrapper/cmake/folders.cmake | 21 - wrapper/cmake/install-rules.cmake | 8 - wrapper/cmake/lint-targets.cmake | 33 - wrapper/cmake/lint.cmake | 51 - wrapper/cmake/prelude.cmake | 10 - wrapper/cmake/project-is-top-level.cmake | 6 - wrapper/cmake/spell-targets.cmake | 22 - wrapper/cmake/spell.cmake | 29 - wrapper/cmake/variables.cmake | 29 - wrapper/conanfile.py | 22 - wrapper/docs/Doxyfile.in | 32 - wrapper/docs/conf.py.in | 6 - wrapper/docs/pages/about.dox | 7 - wrapper/test/CMakeLists.txt | 30 - wrapper/test/src/NUTC-client_test.cpp | 11 - 57 files changed, 116 insertions(+), 4428 deletions(-) rename {wrapper/src => exchange/src/wrapper}/common.hpp (96%) rename wrapper/src/config.h.in => exchange/src/wrapper/config.h (100%) rename {wrapper/src => exchange/src/wrapper}/dev_mode/dev_mode.cpp (100%) rename {wrapper/src => exchange/src/wrapper}/dev_mode/dev_mode.hpp (100%) rename {wrapper/src => exchange/src/wrapper}/firebase/firebase.cpp (100%) rename {wrapper/src => exchange/src/wrapper}/firebase/firebase.hpp (90%) rename {wrapper/src => exchange/src/wrapper}/logging.cpp (97%) rename {wrapper/src => exchange/src/wrapper}/logging.hpp (99%) rename {wrapper/src => exchange/src/wrapper}/main.cpp (84%) rename {wrapper/src => exchange/src/wrapper}/pywrapper/pywrapper.cpp (100%) rename {wrapper/src => exchange/src/wrapper}/pywrapper/pywrapper.hpp (95%) rename {wrapper/src => exchange/src/wrapper}/pywrapper/rate_limiter.cpp (100%) rename {wrapper/src => exchange/src/wrapper}/pywrapper/rate_limiter.hpp (100%) rename {wrapper/src => exchange/src/wrapper}/rabbitmq/rabbitmq.cpp (99%) rename {wrapper/src => exchange/src/wrapper}/rabbitmq/rabbitmq.hpp (97%) rename {wrapper/src => exchange/src/wrapper}/util/doxygen_main.hpp (100%) rename {wrapper/src => exchange/src/wrapper}/util/messages.hpp (100%) delete mode 100644 wrapper/.clang-format delete mode 100644 wrapper/.clang-tidy delete mode 100644 wrapper/.clangd delete mode 100644 wrapper/.codespellignore delete mode 100644 wrapper/.codespellrc delete mode 100644 wrapper/.gitignore delete mode 100644 wrapper/BUILDING-DEPRECATED.md delete mode 100644 wrapper/CMakeLists.txt delete mode 100644 wrapper/CMakePresets.json delete mode 100644 wrapper/CODE_OF_CONDUCT.md delete mode 100644 wrapper/CONTRIBUTING.md delete mode 100644 wrapper/Doxyfile delete mode 100644 wrapper/HACKING.md delete mode 100644 wrapper/README.md delete mode 100644 wrapper/Taskfile.yml delete mode 100644 wrapper/cmake/coverage.cmake delete mode 100644 wrapper/cmake/dev-mode.cmake delete mode 100644 wrapper/cmake/docs-ci.cmake delete mode 100644 wrapper/cmake/docs.cmake delete mode 100644 wrapper/cmake/folders.cmake delete mode 100644 wrapper/cmake/install-rules.cmake delete mode 100644 wrapper/cmake/lint-targets.cmake delete mode 100644 wrapper/cmake/lint.cmake delete mode 100644 wrapper/cmake/prelude.cmake delete mode 100644 wrapper/cmake/project-is-top-level.cmake delete mode 100644 wrapper/cmake/spell-targets.cmake delete mode 100644 wrapper/cmake/spell.cmake delete mode 100644 wrapper/cmake/variables.cmake delete mode 100644 wrapper/conanfile.py delete mode 100644 wrapper/docs/Doxyfile.in delete mode 100644 wrapper/docs/conf.py.in delete mode 100644 wrapper/docs/pages/about.dox delete mode 100644 wrapper/test/CMakeLists.txt delete mode 100644 wrapper/test/src/NUTC-client_test.cpp diff --git a/exchange/CMakeLists.txt b/exchange/CMakeLists.txt index 0a073b43..3c25ef5e 100644 --- a/exchange/CMakeLists.txt +++ b/exchange/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.14) include(cmake/prelude.cmake) project( - NUTC24 + NUTC VERSION 0.1.0 DESCRIPTION "Northwestern University Trading Competition, 2024" HOMEPAGE_URL "https://github.com/northwesternfintech/NUTC" @@ -13,10 +13,12 @@ project( include(cmake/project-is-top-level.cmake) include(cmake/variables.cmake) +# ---- EXCHANGE ---------- + # ---- Declare library ---- add_library( - NUTC24_lib OBJECT + EXCHANGE_lib OBJECT src/exchange/algos/sandbox_mode/sandbox_mode.cpp src/exchange/algos/dev_mode/dev_mode.cpp @@ -47,74 +49,128 @@ add_library( ) target_include_directories( - NUTC24_lib ${warning_guard} + EXCHANGE_lib ${warning_guard} PUBLIC "$" ) -target_compile_features(NUTC24_lib PUBLIC cxx_std_20) +target_compile_features(EXCHANGE_lib PUBLIC cxx_std_20) # argparse find_package(argparse REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC argparse::argparse) +target_link_libraries(EXCHANGE_lib PUBLIC argparse::argparse) # libzip find_package(libzip REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC libzip::zip) +target_link_libraries(EXCHANGE_lib PUBLIC libzip::zip) # Fmt find_package(fmt REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC fmt::fmt) +target_link_libraries(EXCHANGE_lib PUBLIC fmt::fmt) # quill find_package(quill REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC quill::quill) +target_link_libraries(EXCHANGE_lib PUBLIC quill::quill) # rabbitmq find_package(rabbitmq-c REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC rabbitmq::rabbitmq-static) +target_link_libraries(EXCHANGE_lib PUBLIC rabbitmq::rabbitmq-static) # libcurl find_package(CURL REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC CURL::libcurl) +target_link_libraries(EXCHANGE_lib PUBLIC CURL::libcurl) # glaze find_package(glaze REQUIRED) -target_link_libraries(NUTC24_lib PUBLIC glaze::glaze) +target_link_libraries(EXCHANGE_lib PUBLIC glaze::glaze) # ---- Declare executable ---- -add_executable(NUTC24_exe src/exchange/main.cpp) -add_executable(NUTC24::exe ALIAS NUTC24_exe) +add_executable(EXCHANGE_exe src/exchange/main.cpp) +add_executable(EXCHANGE::exe ALIAS EXCHANGE_exe) -set_property(TARGET NUTC24_exe PROPERTY OUTPUT_NAME NUTC24) +set_property(TARGET EXCHANGE_exe PROPERTY OUTPUT_NAME NUTC) -target_compile_features(NUTC24_exe PRIVATE cxx_std_20) +target_compile_features(EXCHANGE_exe PRIVATE cxx_std_20) -target_link_libraries(NUTC24_exe PRIVATE NUTC24_lib) +target_link_libraries(EXCHANGE_exe PRIVATE EXCHANGE_lib) # quill -target_link_libraries(NUTC24_exe PRIVATE quill::quill) +target_link_libraries(EXCHANGE_exe PRIVATE quill::quill) # fmt -target_link_libraries(NUTC24_exe PRIVATE fmt::fmt) +target_link_libraries(EXCHANGE_exe PRIVATE fmt::fmt) # libzip -target_link_libraries(NUTC24_exe PUBLIC libzip::zip) +target_link_libraries(EXCHANGE_exe PUBLIC libzip::zip) # rabbitmq find_package(rabbitmq-c REQUIRED) -target_link_libraries(NUTC24_exe PRIVATE rabbitmq::rabbitmq-static) +target_link_libraries(EXCHANGE_exe PRIVATE rabbitmq::rabbitmq-static) # curl find_package(CURL REQUIRED) -target_link_libraries(NUTC24_exe PRIVATE CURL::libcurl) +target_link_libraries(EXCHANGE_exe PRIVATE CURL::libcurl) -target_link_libraries(NUTC24_exe PRIVATE argparse::argparse) +target_link_libraries(EXCHANGE_exe PRIVATE argparse::argparse) # glaze find_package(glaze REQUIRED) -target_link_libraries(NUTC24_exe PRIVATE glaze::glaze) +target_link_libraries(EXCHANGE_exe PRIVATE glaze::glaze) + +# ---- WRAPPER ---------- + +add_library( + WRAPPER_lib OBJECT + + src/wrapper/rabbitmq/rabbitmq.cpp + src/wrapper/firebase/firebase.cpp + src/wrapper/pywrapper/pywrapper.cpp + src/wrapper/dev_mode/dev_mode.cpp + src/wrapper/pywrapper/rate_limiter.cpp + # Utils + src/wrapper/logging.cpp +) + +target_include_directories( + WRAPPER_lib ${warning_guard} + PUBLIC + "$" +) + +find_package(Python 3.12 COMPONENTS Interpreter Development EXACT REQUIRED) +find_package(PythonLibs 3.12 EXACT REQUIRED) +find_package(pybind11 REQUIRED) + +target_link_libraries(WRAPPER_lib PUBLIC fmt::fmt) +target_link_libraries(WRAPPER_lib PUBLIC quill::quill) + +target_link_libraries(WRAPPER_lib PUBLIC argparse::argparse) +target_link_libraries(WRAPPER_lib PUBLIC rabbitmq::rabbitmq-static) +target_link_libraries(WRAPPER_lib PUBLIC CURL::libcurl) +target_link_libraries(WRAPPER_lib PUBLIC glaze::glaze) +target_link_libraries(WRAPPER_lib PUBLIC pybind11::pybind11) +target_link_libraries(WRAPPER_lib PUBLIC Python::Python) +target_link_libraries(WRAPPER_lib PUBLIC ${PYTHON_LIBRARIES}) + +add_executable(WRAPPER_exe src/wrapper/main.cpp) +add_executable(WRAPPER::exe ALIAS WRAPPER_exe) + +set_property(TARGET WRAPPER_exe PROPERTY OUTPUT_NAME WRAPPER) + +target_compile_features(WRAPPER_exe PRIVATE cxx_std_20) + +target_link_libraries(WRAPPER_exe PRIVATE WRAPPER_lib) +target_link_libraries(WRAPPER_exe PRIVATE fmt::fmt) +target_link_libraries(WRAPPER_exe PRIVATE quill::quill) + +target_link_libraries(WRAPPER_exe PRIVATE argparse::argparse) +target_link_libraries(WRAPPER_exe PRIVATE rabbitmq::rabbitmq-static) +target_link_libraries(WRAPPER_exe PRIVATE CURL::libcurl) +target_link_libraries(WRAPPER_exe PRIVATE glaze::glaze) +target_link_libraries(WRAPPER_exe PRIVATE pybind11::pybind11) +target_link_libraries(WRAPPER_exe PRIVATE Python::Python) +target_link_libraries(WRAPPER_exe PRIVATE ${PYTHON_LIBRARIES}) # ---- Install rules ---- diff --git a/exchange/cmake/dev-mode.cmake b/exchange/cmake/dev-mode.cmake index 79bd2265..e376dca9 100644 --- a/exchange/cmake/dev-mode.cmake +++ b/exchange/cmake/dev-mode.cmake @@ -7,10 +7,10 @@ endif() add_custom_target( run-exe - COMMAND NUTC24_exe + COMMAND EXCHANGE_exe VERBATIM ) -add_dependencies(run-exe NUTC24_exe) +add_dependencies(run-exe EXCHANGE_exe) option(BUILD_MCSS_DOCS "Build documentation using Doxygen and m.css" OFF) if(BUILD_MCSS_DOCS) diff --git a/exchange/cmake/install-rules.cmake b/exchange/cmake/install-rules.cmake index 62b80cfd..97cd46ff 100644 --- a/exchange/cmake/install-rules.cmake +++ b/exchange/cmake/install-rules.cmake @@ -1,6 +1,6 @@ install( - TARGETS NUTC24_exe - RUNTIME COMPONENT NUTC24_Runtime + TARGETS EXCHANGE_exe + RUNTIME COMPONENT EXCHANGE_runtime ) if(PROJECT_IS_TOP_LEVEL) diff --git a/exchange/conanfile.py b/exchange/conanfile.py index 61bb6dbe..6390d990 100644 --- a/exchange/conanfile.py +++ b/exchange/conanfile.py @@ -9,13 +9,17 @@ def layout(self): self.folders.generators = "conan" def requirements(self): + # Exchange self.requires("fmt/[>=10.1.0]") - self.requires("quill/2.9.2") + self.requires("quill/3.3.1") self.requires("rabbitmq-c/0.13.0") self.requires("libcurl/8.2.1") self.requires("argparse/2.9") self.requires("glaze/1.3.5") self.requires("libzip/1.10.1") + # Wrapper + self.requires("pybind11/2.10.4") + def build_requirements(self): self.test_requires("gtest/1.13.0") diff --git a/exchange/src/exchange/logging.cpp b/exchange/src/exchange/logging.cpp index 4b3ba319..1c5d5fc8 100644 --- a/exchange/src/exchange/logging.cpp +++ b/exchange/src/exchange/logging.cpp @@ -80,13 +80,14 @@ init(quill::LogLevel log_level) // // Initialize rotating file handler // - auto file_handler = quill::rotating_file_handler( - LOG_FILE, - "w", // append - FilenameAppend::None, // just keep the filename - LOG_FILE_SIZE, // 512 KB - LOG_BACKUP_COUNT // 5 backups - ); + quill::RotatingFileHandlerConfig handler_cfg; + + handler_cfg.set_rotation_max_file_size(LOG_FILE_SIZE); + handler_cfg.set_max_backup_files(LOG_BACKUP_COUNT); + handler_cfg.set_open_mode('w'); + + const std::string log_file = LOG_FILE; + auto file_handler = quill::rotating_file_handler(log_file, handler_cfg); file_handler->set_pattern( LOGLINE_FORMAT, diff --git a/wrapper/src/common.hpp b/exchange/src/wrapper/common.hpp similarity index 96% rename from wrapper/src/common.hpp rename to exchange/src/wrapper/common.hpp index ca32da82..ec98216e 100644 --- a/wrapper/src/common.hpp +++ b/exchange/src/wrapper/common.hpp @@ -2,8 +2,8 @@ // Common headers -#include "config.h" -#include "logging.hpp" +#include "wrapper/config.h" +#include "wrapper/logging.hpp" #include #include diff --git a/wrapper/src/config.h.in b/exchange/src/wrapper/config.h similarity index 100% rename from wrapper/src/config.h.in rename to exchange/src/wrapper/config.h diff --git a/wrapper/src/dev_mode/dev_mode.cpp b/exchange/src/wrapper/dev_mode/dev_mode.cpp similarity index 100% rename from wrapper/src/dev_mode/dev_mode.cpp rename to exchange/src/wrapper/dev_mode/dev_mode.cpp diff --git a/wrapper/src/dev_mode/dev_mode.hpp b/exchange/src/wrapper/dev_mode/dev_mode.hpp similarity index 100% rename from wrapper/src/dev_mode/dev_mode.hpp rename to exchange/src/wrapper/dev_mode/dev_mode.hpp diff --git a/wrapper/src/firebase/firebase.cpp b/exchange/src/wrapper/firebase/firebase.cpp similarity index 100% rename from wrapper/src/firebase/firebase.cpp rename to exchange/src/wrapper/firebase/firebase.cpp diff --git a/wrapper/src/firebase/firebase.hpp b/exchange/src/wrapper/firebase/firebase.hpp similarity index 90% rename from wrapper/src/firebase/firebase.hpp rename to exchange/src/wrapper/firebase/firebase.hpp index 66aee651..8bce8ab8 100644 --- a/wrapper/src/firebase/firebase.hpp +++ b/exchange/src/wrapper/firebase/firebase.hpp @@ -1,7 +1,7 @@ #pragma once -#include "config.h" -#include "logging.hpp" +#include "wrapper/config.h" +#include "wrapper/logging.hpp" #include #include diff --git a/wrapper/src/logging.cpp b/exchange/src/wrapper/logging.cpp similarity index 97% rename from wrapper/src/logging.cpp rename to exchange/src/wrapper/logging.cpp index a107695e..d74197b1 100644 --- a/wrapper/src/logging.cpp +++ b/exchange/src/wrapper/logging.cpp @@ -1,7 +1,7 @@ -#include "logging.hpp" +#include "wrapper/logging.hpp" -#include "common.hpp" -#include "config.h" +#include "wrapper/common.hpp" +#include "wrapper/config.h" #include #include diff --git a/wrapper/src/logging.hpp b/exchange/src/wrapper/logging.hpp similarity index 99% rename from wrapper/src/logging.hpp rename to exchange/src/wrapper/logging.hpp index b0af8bc7..74b76dbd 100644 --- a/wrapper/src/logging.hpp +++ b/exchange/src/wrapper/logging.hpp @@ -1,6 +1,6 @@ #pragma once -#include "config.h" +#include "wrapper/config.h" #include diff --git a/wrapper/src/main.cpp b/exchange/src/wrapper/main.cpp similarity index 84% rename from wrapper/src/main.cpp rename to exchange/src/wrapper/main.cpp index e66c3e4d..9eceaf41 100644 --- a/wrapper/src/main.cpp +++ b/exchange/src/wrapper/main.cpp @@ -1,12 +1,8 @@ -#include "common.hpp" -#include "dev_mode/dev_mode.hpp" -#include "firebase/firebase.hpp" -#include "pywrapper/pywrapper.hpp" -#include "rabbitmq/rabbitmq.hpp" - -#ifndef NO_GIT_VERSION_TRACKING -# include "git.h" -#endif +#include "wrapper/common.hpp" +#include "wrapper/dev_mode/dev_mode.hpp" +#include "wrapper/firebase/firebase.hpp" +#include "wrapper/pywrapper/pywrapper.hpp" +#include "wrapper/rabbitmq/rabbitmq.hpp" #include #include @@ -100,24 +96,6 @@ process_arguments(int argc, const char** argv) }; } -static void -log_build_info() -{ - log_i(main, "NUTC Client: Interface to the NUFT Trading Competition"); - -#ifndef NO_GIT_VERSION_TRACKING - - // Git info - log_i(main, "Built from {} on {}", git_Describe(), git_Branch()); - log_d(main, "Commit: \"{}\" at {}", git_CommitSubject(), git_CommitDate()); - log_d(main, "Author: {} <{}>", git_AuthorName(), git_AuthorEmail()); - - if (git_AnyUncommittedChanges()) - log_w(main, "Built from dirty commit!"); - -#endif -} - int main(int argc, const char** argv) { @@ -128,7 +106,6 @@ main(int argc, const char** argv) // Start logging and print build info nutc::logging::init(verbosity, uid); - log_build_info(); log_i(main, "Starting NUTC Client for UID {}", uid); // Initialize the RMQ connection to the exchange diff --git a/wrapper/src/pywrapper/pywrapper.cpp b/exchange/src/wrapper/pywrapper/pywrapper.cpp similarity index 100% rename from wrapper/src/pywrapper/pywrapper.cpp rename to exchange/src/wrapper/pywrapper/pywrapper.cpp diff --git a/wrapper/src/pywrapper/pywrapper.hpp b/exchange/src/wrapper/pywrapper/pywrapper.hpp similarity index 95% rename from wrapper/src/pywrapper/pywrapper.hpp rename to exchange/src/wrapper/pywrapper/pywrapper.hpp index f2e58fc8..d8ed6069 100644 --- a/wrapper/src/pywrapper/pywrapper.hpp +++ b/exchange/src/wrapper/pywrapper/pywrapper.hpp @@ -1,7 +1,7 @@ #pragma once -#include "logging.hpp" -#include "util/messages.hpp" +#include "wrapper/logging.hpp" +#include "wrapper/util/messages.hpp" #include #include diff --git a/wrapper/src/pywrapper/rate_limiter.cpp b/exchange/src/wrapper/pywrapper/rate_limiter.cpp similarity index 100% rename from wrapper/src/pywrapper/rate_limiter.cpp rename to exchange/src/wrapper/pywrapper/rate_limiter.cpp diff --git a/wrapper/src/pywrapper/rate_limiter.hpp b/exchange/src/wrapper/pywrapper/rate_limiter.hpp similarity index 100% rename from wrapper/src/pywrapper/rate_limiter.hpp rename to exchange/src/wrapper/pywrapper/rate_limiter.hpp diff --git a/wrapper/src/rabbitmq/rabbitmq.cpp b/exchange/src/wrapper/rabbitmq/rabbitmq.cpp similarity index 99% rename from wrapper/src/rabbitmq/rabbitmq.cpp rename to exchange/src/wrapper/rabbitmq/rabbitmq.cpp index 9541dcf0..d4fee0f3 100644 --- a/wrapper/src/rabbitmq/rabbitmq.cpp +++ b/exchange/src/wrapper/rabbitmq/rabbitmq.cpp @@ -1,6 +1,6 @@ #include "rabbitmq.hpp" -#include "logging.hpp" +#include "wrapper/logging.hpp" #include diff --git a/wrapper/src/rabbitmq/rabbitmq.hpp b/exchange/src/wrapper/rabbitmq/rabbitmq.hpp similarity index 97% rename from wrapper/src/rabbitmq/rabbitmq.hpp rename to exchange/src/wrapper/rabbitmq/rabbitmq.hpp index 5c328ee8..2a3cb1f5 100644 --- a/wrapper/src/rabbitmq/rabbitmq.hpp +++ b/exchange/src/wrapper/rabbitmq/rabbitmq.hpp @@ -1,8 +1,8 @@ #pragma once -#include "pywrapper/pywrapper.hpp" -#include "pywrapper/rate_limiter.hpp" -#include "util/messages.hpp" +#include "wrapper/pywrapper/pywrapper.hpp" +#include "wrapper/pywrapper/rate_limiter.hpp" +#include "wrapper/util/messages.hpp" #include diff --git a/wrapper/src/util/doxygen_main.hpp b/exchange/src/wrapper/util/doxygen_main.hpp similarity index 100% rename from wrapper/src/util/doxygen_main.hpp rename to exchange/src/wrapper/util/doxygen_main.hpp diff --git a/wrapper/src/util/messages.hpp b/exchange/src/wrapper/util/messages.hpp similarity index 100% rename from wrapper/src/util/messages.hpp rename to exchange/src/wrapper/util/messages.hpp diff --git a/exchange/test/CMakeLists.txt b/exchange/test/CMakeLists.txt index 63f0f6db..2fb0dc4b 100644 --- a/exchange/test/CMakeLists.txt +++ b/exchange/test/CMakeLists.txt @@ -34,7 +34,7 @@ target_include_directories( target_link_libraries( NUTC_tests PRIVATE - NUTC24_lib + EXCHANGE_lib GTest::gtest_main ) diff --git a/wrapper/.clang-format b/wrapper/.clang-format deleted file mode 100644 index 9d31b83f..00000000 --- a/wrapper/.clang-format +++ /dev/null @@ -1,189 +0,0 @@ ---- -Language: Cpp -AccessModifierOffset: -4 -AlignAfterOpenBracket: BlockIndent -AlignArrayOfStructures: Left -AlignConsecutiveAssignments: None -AlignConsecutiveBitFields: None -AlignConsecutiveDeclarations: None -AlignConsecutiveMacros: AcrossEmptyLines -AlignEscapedNewlines: Right -AlignOperands: Align -AlignTrailingComments: true -AllowAllArgumentsOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: true -AllowShortBlocksOnASingleLine: Empty -AllowShortCaseLabelsOnASingleLine: false -AllowShortEnumsOnASingleLine: true -AllowShortFunctionsOnASingleLine: Inline -AllowShortIfStatementsOnASingleLine: Never -AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterReturnType: AllDefinitions -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: Yes -AttributeMacros: - - __capability -BasedOnStyle: "LLVM" -BinPackArguments: false -BinPackParameters: false -BitFieldColonSpacing: Both -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never - AfterEnum: false - AfterFunction: true - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - AfterExternBlock: false - BeforeCatch: false - BeforeElse: true - BeforeLambdaBody: false - BeforeWhile: false - IndentBraces: false - SplitEmptyFunction: false - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakAfterJavaFieldAnnotations: true -BreakBeforeBinaryOperators: NonAssignment -BreakBeforeBraces: Custom -BreakBeforeConceptDeclarations: true -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: AfterColon -BreakInheritanceList: AfterColon -BreakStringLiterals: true -ColumnLimit: 88 -CommentPragmas: "^( IWYU pragma:| NOLINT)" -CompactNamespaces: false -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: true -DeriveLineEnding: false -DerivePointerAlignment: false -DisableFormat: false -EmptyLineAfterAccessModifier: Never -EmptyLineBeforeAccessModifier: LogicalBlock -ExperimentalAutoDetectBinPacking: false -FixNamespaceComments: true -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IfMacros: - - KJ_IF_MAYBE -IncludeBlocks: Regroup -IncludeCategories: - # Headers in "" with extension. - - Regex: '"([A-Za-z0-9.\Q/-_\E])+"' - Priority: 1 - CaseSensitive: false - # Headers in <> from libraries. - - Regex: "^(<(gsl|catch2))" - Priority: 2 - CaseSensitive: false - # C headers - - Regex: '' - Priority: 4 - CaseSensitive: false - # Headers in <> without extension. - - Regex: '<([A-Za-z0-9\Q/-_\E])+>' - Priority: 5 - CaseSensitive: false - # Headers in <> with extension. - - Regex: '<([A-Za-z0-9.\Q/-_\E])+>' - Priority: 3 - CaseSensitive: false -IncludeIsMainRegex: "(Test)?$" -IncludeIsMainSourceRegex: "" -IndentAccessModifiers: false -IndentCaseLabels: true -IndentCaseBlocks: true -IndentExternBlock: AfterExternBlock -IndentGotoLabels: false -IndentPPDirectives: AfterHash -IndentRequires: false -IndentWidth: 4 -IndentWrappedFunctionNames: false -KeepEmptyLinesAtTheStartOfBlocks: false -LambdaBodyIndentation: Signature -MacroBlockBegin: "" -MacroBlockEnd: "" -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: None -PackConstructorInitializers: NextLine -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakOpenParenthesis: 0 -PenaltyBreakString: 1000 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 1000000 -PenaltyIndentedWhitespace: 0 -PenaltyReturnTypeOnItsOwnLine: 60 -PointerAlignment: Left -PPIndentWidth: 2 -QualifierAlignment: Leave -ReferenceAlignment: Pointer -ReflowComments: true -RemoveBracesLLVM: false -SeparateDefinitionBlocks: Always -ShortNamespaceLines: 1 -SortIncludes: CaseInsensitive -SortUsingDeclarations: true -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceAroundPointerQualifiers: Default -SpaceBeforeAssignmentOperators: true -SpaceBeforeCaseColon: false -SpaceBeforeCpp11BracedList: false -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeParens: ControlStatementsExceptControlMacros -# Ignored as SpaceBeforeParens != Custom -SpaceBeforeParensOptions: - AfterControlStatements: true - AfterForeachMacros: true - AfterFunctionDefinitionName: false - AfterFunctionDeclarationName: false - AfterIfMacros: true - AfterOverloadedOperator: false - BeforeNonEmptyParentheses: false -SpaceBeforeRangeBasedForLoopColon: true -SpaceBeforeSquareBrackets: false -SpaceInEmptyBlock: false -SpaceInEmptyParentheses: false -SpacesInAngles: Never -SpacesBeforeTrailingComments: 1 -SpacesInConditionalStatement: false -SpacesInContainerLiterals: false -SpacesInCStyleCastParentheses: false -SpacesInLineCommentPrefix: - Minimum: 1 - Maximum: -1 -SpacesInParentheses: false -SpacesInSquareBrackets: false -Standard: Latest -StatementAttributeLikeMacros: - - Q_EMIT -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION - - wxBEGIN_EVENT_TABLE - - wxEND_EVENT_TABLE - - EVT_MENU -TabWidth: 4 -UseCRLF: false -UseTab: Never -WhitespaceSensitiveMacros: - - STRINGIZE - - PP_STRINGIZE - - BOOST_PP_STRINGIZE - - NS_SWIFT_NAME - - CF_SWIFT_NAME ---- - diff --git a/wrapper/.clang-tidy b/wrapper/.clang-tidy deleted file mode 100644 index d9de2cc8..00000000 --- a/wrapper/.clang-tidy +++ /dev/null @@ -1,134 +0,0 @@ ---- -Checks: "\ - boost-*,\ - bugprone-*,\ - cert-*,\ - clang-analyzer-*,\ - clang-diagnostic-*,\ - concurrency-*,\ - cppcoreguidelines-*,\ - google-*,\ - hicpp-*,\ - llvm-*,\ - misc-*,\ - modernize-*,\ - performance-*,\ - portability-*,\ - readability-*,\ - fuchsia-multiple-inheritance,\ - fuchsia-trailing-return,\ - fuchsia-virtual-inheritance,\ - google-runtime-int,\ - -hicpp-braces-around-statements,\ - -google-readability-braces-around-statements,\ - -llvm-header-guard,\ - -hicpp-no-array-decay,\ - -modernize-concat-nested-namespaces,\ - -cppcoreguidelines-pro-bounds-array-to-pointer-decay,\ - -modernize-use-trailing-return-type,\ - -cppcoreguidelines-owning-memory,\ - -hicpp-named-parameter,\ - -readability-named-parameter,\ - -readability-uppercase-literal-suffix,\ - -readability-implicit-bool-conversion,\ - -hicpp-uppercase-literal-suffix,\ - -misc-use-anonymous-namespace,\ - -bugprone-easily-swappable-parameters,\ - -*-reinterpret-cast,\ - -cppcoreguidelines-avoid-const-or-ref-data-members" -WarningsAsErrors: false -AnalyzeTemporaryDtors: false -FormatStyle: file -HeaderFilterRegex: "(^config.h|.*\\.hpp)$" -CheckOptions: - llvm-else-after-return.WarnOnConditionVariables: "false" - modernize-loop-convert.MinConfidence: reasonable - modernize-replace-auto-ptr.IncludeStyle: llvm - modernize-pass-by-value.IncludeStyle: llvm - google-readability-namespace-comments.ShortNamespaceLines: "10" - google-readability-namespace-comments.SpacesBeforeComments: "2" - cppcoreguidelines-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic: "true" - readability-braces-around-statements.ShortStatementLines: 3 - cert-err33-c.CheckedFunctions: "::aligned_alloc;::asctime_s;::at_quick_exit;::atexit;::bsearch;::bsearch_s;::btowc;::c16rtomb;::c32rtomb;::calloc;::clock;::cnd_broadcast;::cnd_init;::cnd_signal;::cnd_timedwait;::cnd_wait;::ctime_s;::fclose;::fflush;::fgetc;::fgetpos;::fgets;::fgetwc;::fopen;::fopen_s;::fprintf;::fprintf_s;::fputc;::fputs;::fputwc;::fputws;::fread;::freopen;::freopen_s;::fscanf;::fscanf_s;::fseek;::fsetpos;::ftell;::fwprintf;::fwprintf_s;::fwrite;::fwscanf;::fwscanf_s;::getc;::getchar;::getenv;::getenv_s;::gets_s;::getwc;::getwchar;::gmtime;::gmtime_s;::localtime;::localtime_s;::malloc;::mbrtoc16;::mbrtoc32;::mbsrtowcs;::mbsrtowcs_s;::mbstowcs;::mbstowcs_s;::memchr;::mktime;::mtx_init;::mtx_lock;::mtx_timedlock;::mtx_trylock;::mtx_unlock;::printf_s;::putc;::putwc;::raise;::realloc;::remove;::rename;::scanf;::scanf_s;::setlocale;::setvbuf;::signal;::snprintf;::snprintf_s;::sprintf;::sprintf_s;::sscanf;::sscanf_s;::strchr;::strerror_s;::strftime;::strpbrk;::strrchr;::strstr;::strtod;::strtof;::strtoimax;::strtok;::strtok_s;::strtol;::strtold;::strtoll;::strtoul;::strtoull;::strtoumax;::strxfrm;::swprintf;::swprintf_s;::swscanf;::swscanf_s;::thrd_create;::thrd_detach;::thrd_join;::thrd_sleep;::time;::timespec_get;::tmpfile;::tmpfile_s;::tmpnam;::tmpnam_s;::tss_create;::tss_get;::tss_set;::ungetc;::ungetwc;::vfprintf;::vfprintf_s;::vfscanf;::vfscanf_s;::vfwprintf;::vfwprintf_s;::vfwscanf;::vfwscanf_s;::vprintf_s;::vscanf;::vscanf_s;::vsnprintf;::vsnprintf_s;::vsprintf;::vsprintf_s;::vsscanf;::vsscanf_s;::vswprintf;::vswprintf_s;::vswscanf;::vswscanf_s;::vwprintf_s;::vwscanf;::vwscanf_s;::wcrtomb;::wcschr;::wcsftime;::wcspbrk;::wcsrchr;::wcsrtombs;::wcsrtombs_s;::wcsstr;::wcstod;::wcstof;::wcstoimax;::wcstok;::wcstok_s;::wcstol;::wcstold;::wcstoll;::wcstombs;::wcstombs_s;::wcstoul;::wcstoull;::wcstoumax;::wcsxfrm;::wctob;::wctrans;::wctype;::wmemchr;::wprintf_s;::wscanf;::wscanf_s;" - modernize-loop-convert.MaxCopySize: "16" - cert-dcl16-c.NewSuffixes: "L;LL;LU;LLU" - cert-oop54-cpp.WarnOnlyIfThisHasSuspiciousField: "false" - cert-str34-c.DiagnoseSignedUnsignedCharComparisons: "false" - modernize-use-nullptr.NullMacros: "NULL" - llvm-qualified-auto.AddConstToQualified: "false" - modernize-loop-convert.NamingStyle: CamelCase - llvm-else-after-return.WarnOnUnfixable: "false" - google-readability-function-size.StatementThreshold: "800" - bugprone-argument-comment.StrictMode: "true" - # Prefer using enum classes with 2 values for parameters instead of bools - bugprone-argument-comment.CommentBoolLiterals: "true" - bugprone-misplaced-widening-cast.CheckImplicitCasts: "true" - bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression: "true" - bugprone-suspicious-string-compare.WarnOnLogicalNotComparison: "true" - readability-simplify-boolean-expr.ChainedConditionalReturn: "true" - readability-simplify-boolean-expr.ChainedConditionalAssignment: "true" - readability-uniqueptr-delete-release.PreferResetCall: "true" - readability-function-cognitive-complexity.IgnoreMacros: "true" - cppcoreguidelines-init-variables.MathHeader: "" - cppcoreguidelines-narrowing-conversions.PedanticMode: "true" - readability-else-after-return.WarnOnUnfixable: "true" - readability-else-after-return.WarnOnConditionVariables: "true" - readability-inconsistent-declaration-parameter-name.Strict: "true" - readability-qualified-auto.AddConstToQualified: "true" - readability-redundant-access-specifiers.CheckFirstDeclaration: "true" - readability-identifier-naming.AbstractClassCase: "CamelCase" - readability-identifier-naming.ClassCase: "CamelCase" - readability-identifier-naming.ClassConstantCase: "lower_case" - readability-identifier-naming.ClassMemberCase: "lower_case" - readability-identifier-naming.ClassMethodCase: "lower_case" - readability-identifier-naming.ConstantCase: "UPPER_CASE" - readability-identifier-naming.ConstantMemberCase: "UPPER_CASE" - readability-identifier-naming.ConstantParameterCase: "lower_case" - readability-identifier-naming.ConstantPointerParameterCase: "lower_case" - readability-identifier-naming.ConstexprFunctionCase: "lower_case" - readability-identifier-naming.ConstexprMethodCase: "lower_case" - readability-identifier-naming.ConstexprVariableCase: "UPPER_CASE" - readability-identifier-naming.EnumCase: "CamelCase" - readability-identifier-naming.EnumConstantCase: "UPPER_CASE" - readability-identifier-naming.FunctionCase: "lower_case" - readability-identifier-naming.GlobalConstantCase: "UPPER_CASE" - readability-identifier-naming.GlobalConstantPointerCase: "UPPER_CASE" - readability-identifier-naming.GlobalFunctionCase: "lower_case" - readability-identifier-naming.GlobalPointerCase: "lower_case" - readability-identifier-naming.GlobalVariableCase: "lower_case" - readability-identifier-naming.InlineNamespaceCase: "lower_case" - readability-identifier-naming.LocalConstantCase: "lower_case" - readability-identifier-naming.LocalConstantPointerCase: "lower_case" - readability-identifier-naming.LocalPointerCase: "lower_case" - readability-identifier-naming.LocalVariableCase: "lower_case" - readability-identifier-naming.MacroDefinitionCase: "UPPER_CASE" - readability-identifier-naming.MemberCase: "lower_case" - readability-identifier-naming.MethodCase: "lower_case" - readability-identifier-naming.NamespaceCase: "lower_case" - readability-identifier-naming.ParameterCase: "lower_case" - readability-identifier-naming.ParameterPackCase: "lower_case" - readability-identifier-naming.PointerParameterCase: "lower_case" - readability-identifier-naming.PrivateMemberCase: "lower_case" - readability-identifier-naming.PrivateMemberSuffix: "_" - readability-identifier-naming.PrivateMethodCase: "lower_case" - readability-identifier-naming.PrivateMethodSuffix: "_" - readability-identifier-naming.ProtectedMemberCase: "lower_case" - readability-identifier-naming.ProtectedMemberSuffix: "_" - readability-identifier-naming.ProtectedMethodCase: "lower_case" - readability-identifier-naming.ProtectedMethodSuffix: "_" - readability-identifier-naming.PublicMemberCase: "lower_case" - readability-identifier-naming.PublicMethodCase: "lower_case" - readability-identifier-naming.ScopedEnumConstantCase: "lower_case" - readability-identifier-naming.StaticConstantCase: "lower_case" - readability-identifier-naming.StaticVariableCase: "lower_case" - readability-identifier-naming.StructCase: "lower_case" - readability-identifier-naming.TemplateParameterCase: "CamelCase" - readability-identifier-naming.TemplateTemplateParameterCase: "CamelCase" - readability-identifier-naming.TypeAliasCase: "lower_case" - readability-identifier-naming.TypedefCase: "lower_case" - readability-identifier-naming.TypeTemplateParameterCase: "CamelCase" - readability-identifier-naming.UnionCase: "lower_case" - readability-identifier-naming.ValueTemplateParameterCase: "CamelCase" - readability-identifier-naming.VariableCase: "lower_case" - readability-identifier-naming.VirtualMethodCase: "lower_case" ---- diff --git a/wrapper/.clangd b/wrapper/.clangd deleted file mode 100644 index fd829e02..00000000 --- a/wrapper/.clangd +++ /dev/null @@ -1,2 +0,0 @@ -CompileFlags: - CompilationDatabase: "build/dev" diff --git a/wrapper/.codespellignore b/wrapper/.codespellignore deleted file mode 100644 index 0e50ea7c..00000000 --- a/wrapper/.codespellignore +++ /dev/null @@ -1 +0,0 @@ -ws diff --git a/wrapper/.codespellrc b/wrapper/.codespellrc deleted file mode 100644 index 69ff0039..00000000 --- a/wrapper/.codespellrc +++ /dev/null @@ -1,7 +0,0 @@ -[codespell] -builtin = clear,rare,en-GB_to_en-US,names,informal,code -check-filenames = -check-hidden = -skip = */.git,*/build,*/prefix,*/conan,*/logs,*/3rd-party -quiet-level = 2 -ignore-words = .codespellignore diff --git a/wrapper/.gitignore b/wrapper/.gitignore deleted file mode 100644 index 95809f71..00000000 --- a/wrapper/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -.idea/ -.vs/ -.vscode/ -build/ -cmake-build-*/ -conan/ -prefix/ -**/.DS_Store -CMakeLists.txt.user -CMakeUserPresets.json -logs/ -compile_commands.json -html -latex -Doxyfile.bak -algos/ diff --git a/wrapper/BUILDING-DEPRECATED.md b/wrapper/BUILDING-DEPRECATED.md deleted file mode 100644 index c8b36a56..00000000 --- a/wrapper/BUILDING-DEPRECATED.md +++ /dev/null @@ -1,67 +0,0 @@ - -# Building NUTC-Client Guide -## Dependencies -1. Conan -- `pip install conan` -- `dnf install cmake` -- `dnf install go-task` -- `dnf install perl` -- `conan profile detect` -- Copy `.conan2/profiles/default` to `.conan2/profiles/cpp20` -- Change gnu17 to gnu20 -2. Install dependencies -- `mkdir build && cd build` -- `conan install .. -s build_type=Debug -b missing -pr cpp20 -pr:b cpp20` -3. Change `CMakeUserPresets.json` the following: -``` -{ - "version": 2, - "cmakeMinimumRequired": { - "major": 3, - "minor": 14, - "patch": 0 - }, - "configurePresets": [ - { - "name": "dev", - "binaryDir": "${sourceDir}/build/dev", - "inherits": ["dev-mode", "conan", "ci-darwin"], - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Debug" - } - } - ], - "buildPresets": [ - { - "name": "dev", - "configurePreset": "dev", - "configuration": "Debug" - } - ], - "testPresets": [ - { - "name": "dev", - "configurePreset": "dev", - "configuration": "Debug", - "output": { - "outputOnFailure": true - } - } - ] -} -``` -4. `cd .. && go-task init` - - -## Building -`go-task build` - -## Doxygen -This repository uses Doxygen for documentation purposes. To generate and display: - -1. `doxygen Doxyfile` -2. `open html/index.html` - - -## Running -NUTC-Client is not designed to be a standalone executable. It should be executed with NUTC24 (the exchange) via `task run`. diff --git a/wrapper/CMakeLists.txt b/wrapper/CMakeLists.txt deleted file mode 100644 index ab523d89..00000000 --- a/wrapper/CMakeLists.txt +++ /dev/null @@ -1,121 +0,0 @@ -cmake_minimum_required(VERSION 3.14) - -include(FetchContent) -include(cmake/prelude.cmake) - -project( - NUTC-client - VERSION 0.1.0 - DESCRIPTION "Client for the Northwestern University Trading Competition." - HOMEPAGE_URL "https://example.com/" - LANGUAGES CXX -) - -include(cmake/project-is-top-level.cmake) -include(cmake/variables.cmake) - -configure_file(src/config.h.in config.h) - -# ---- Load Dependencies ---- - -# Conan -find_package(fmt REQUIRED) # String formatting -find_package(quill REQUIRED) # Logging - -find_package(argparse REQUIRED) # Argument parsing -find_package(rabbitmq-c REQUIRED) -find_package(CURL REQUIRED) -find_package(glaze REQUIRED) -find_package(Python 3.11 COMPONENTS Interpreter Development EXACT REQUIRED) -find_package(PythonLibs 3.11 EXACT REQUIRED) -find_package(pybind11 REQUIRED) - -# Git version tracking -if(USE_GIT_VERSION_TRACKING) - FetchContent_Declare(cmake_git_version_tracking - GIT_REPOSITORY https://github.com/andrew-hardin/cmake-git-version-tracking.git - GIT_TAG 9b5fc5088b4089ff2adc20d607976b9923e3d737 - ) - FetchContent_MakeAvailable(cmake_git_version_tracking) -endif() - -# ---- Declare library ---- - -add_library( - NUTC-client_lib OBJECT - src/rabbitmq/rabbitmq.cpp - src/firebase/firebase.cpp - src/pywrapper/pywrapper.cpp - src/dev_mode/dev_mode.cpp - src/pywrapper/rate_limiter.cpp - # Utils - src/logging.cpp -) - -target_include_directories( - NUTC-client_lib ${warning_guard} - PUBLIC - "$" - "$" -) - -target_compile_features(NUTC-client_lib PUBLIC cxx_std_20) - -target_link_libraries(NUTC-client_lib PRIVATE fmt::fmt) -target_link_libraries(NUTC-client_lib PRIVATE quill::quill) -target_link_libraries(NUTC-client_lib PRIVATE rabbitmq::rabbitmq-static) -target_link_libraries(NUTC-client_lib PRIVATE CURL::libcurl) -target_link_libraries(NUTC-client_lib PRIVATE glaze::glaze) -target_link_libraries(NUTC-client_lib PRIVATE pybind11::pybind11) -target_link_libraries(NUTC-client_lib PRIVATE Python::Python) -target_link_libraries(NUTC-client_lib PRIVATE ${PYTHON_LIBRARIES}) - - - -# ---- Declare executable ---- - -add_executable(NUTC-client_exe src/main.cpp) -add_executable(NUTC-client::exe ALIAS NUTC-client_exe) - -set_property(TARGET NUTC-client_exe PROPERTY OUTPUT_NAME NUTC-client) - -target_compile_features(NUTC-client_exe PRIVATE cxx_std_20) - -target_link_libraries(NUTC-client_exe PRIVATE NUTC-client_lib) -target_link_libraries(NUTC-client_exe PRIVATE fmt::fmt) -target_link_libraries(NUTC-client_exe PRIVATE quill::quill) - -target_link_libraries(NUTC-client_exe PRIVATE argparse::argparse) -target_link_libraries(NUTC-client_exe PRIVATE rabbitmq::rabbitmq-static) -target_link_libraries(NUTC-client_exe PRIVATE CURL::libcurl) -target_link_libraries(NUTC-client_exe PRIVATE glaze::glaze) -target_link_libraries(NUTC-client_exe PRIVATE pybind11::pybind11) -target_link_libraries(NUTC-client_exe PRIVATE Python::Python) -target_link_libraries(NUTC-client_exe PRIVATE ${PYTHON_LIBRARIES}) - -if(USE_GIT_VERSION_TRACKING) - target_link_libraries(NUTC-client_exe PRIVATE cmake_git_version_tracking) -else() - target_compile_definitions(NUTC-client_lib PRIVATE -DNO_GIT_VERSION_TRACKING) - target_compile_definitions(NUTC-client_exe PRIVATE -DNO_GIT_VERSION_TRACKING) -endif() - - -# ---- Install rules ---- - -if(NOT CMAKE_SKIP_INSTALL_RULES) - include(cmake/install-rules.cmake) -endif() - -# ---- Developer mode ---- - -if(NOT NUTC-client_DEVELOPER_MODE) - return() -elseif(NOT PROJECT_IS_TOP_LEVEL) - message( - AUTHOR_WARNING - "Developer mode is intended for developers of NUTC-client" - ) -endif() - -include(cmake/dev-mode.cmake) diff --git a/wrapper/CMakePresets.json b/wrapper/CMakePresets.json deleted file mode 100644 index 7d8bacf8..00000000 --- a/wrapper/CMakePresets.json +++ /dev/null @@ -1,193 +0,0 @@ -{ - "version": 2, - "cmakeMinimumRequired": { - "major": 3, - "minor": 14, - "patch": 0 - }, - "configurePresets": [ - { - "name": "cmake-pedantic", - "hidden": true, - "warnings": { - "dev": true, - "deprecated": true, - "uninitialized": true, - "unusedCli": true, - "systemVars": false - }, - "errors": { - "dev": false, - "deprecated": true - } - }, - { - "name": "dev-mode", - "hidden": true, - "inherits": "cmake-pedantic", - "cacheVariables": { - "NUTC-client_DEVELOPER_MODE": "ON" - } - }, - { - "name": "conan", - "hidden": true, - "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/conan/conan_toolchain.cmake", - "CMAKE_POLICY_DEFAULT_CMP0091": "NEW" - } - }, - { - "name": "cppcheck", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_CPPCHECK": "cppcheck;--inline-suppr;--platform=native" - } - }, - { - "name": "clang-tidy", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_CLANG_TIDY": "clang-tidy;--header-filter=^${sourceDir}/" - } - }, - { - "name": "ci-std", - "description": "This preset makes sure the project actually builds with at least the specified standard", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_EXTENSIONS": "OFF", - "CMAKE_CXX_STANDARD": "20", - "CMAKE_CXX_STANDARD_REQUIRED": "ON" - } - }, - { - "name": "flags-linux", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_FLAGS": "-D_FORTIFY_SOURCE=3 -fstack-protector-strong -fstack-clash-protection -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wcast-qual -Wformat=2 -Wundef -Werror=float-equal -Wshadow -Wcast-align -Wunused -Wnull-dereference -Wdouble-promotion -Wimplicit-fallthrough -Wextra-semi -Woverloaded-virtual -Wnon-virtual-dtor -Wold-style-cast", - "CMAKE_EXE_LINKER_FLAGS": "-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now", - "CMAKE_SHARED_LINKER_FLAGS": "-Wl,--allow-shlib-undefined,--as-needed,-z,noexecstack,-z,relro,-z,now" - } - }, - { - "name": "flags-darwin", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_FLAGS": "-fstack-protector-strong -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wcast-qual -Wformat=2 -Wundef -Werror=float-equal -Wshadow -Wcast-align -Wunused -Wnull-dereference -Wdouble-promotion -Wimplicit-fallthrough -Wextra-semi -Woverloaded-virtual -Wnon-virtual-dtor -Wold-style-cast" - } - }, - { - "name": "flags-windows", - "description": "Note that all the flags after /W4 are required for MSVC to conform to the language standard", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_FLAGS": "/sdl /analyze /analyze:external- /guard:cf /utf-8 /diagnostics:caret /w14165 /w44242 /w44254 /w44263 /w34265 /w34287 /w44296 /w44365 /w44388 /w44464 /w14545 /w14546 /w14547 /w14549 /w14555 /w34619 /w34640 /w24826 /w14905 /w14906 /w14928 /w45038 /W4 /permissive- /volatile:iso /Zc:inline /Zc:preprocessor /Zc:lambda /Zc:__cplusplus /Zc:externConstexpr /Zc:throwingNew /EHsc", - "CMAKE_EXE_LINKER_FLAGS": "/machine:x64 /guard:cf" - } - }, - { - "name": "flags-windows-mingw", - "hidden": true, - "cacheVariables": { - "CMAKE_CXX_FLAGS": "-D_FORTIFY_SOURCE=3 -fstack-protector-strong -fcf-protection=full -Wall -Wextra -Wpedantic -Wconversion -Wsign-conversion -Wcast-qual -Wformat=2 -Wundef -Werror=float-equal -Wshadow -Wcast-align -Wunused -Wnull-dereference -Wdouble-promotion -Wimplicit-fallthrough -Wextra-semi -Woverloaded-virtual -Wnon-virtual-dtor -Wold-style-cast", - "CMAKE_EXE_LINKER_FLAGS": "-Wl,--allow-shlib-undefined,--as-needed", - "CMAKE_SHARED_LINKER_FLAGS": "-Wl,--allow-shlib-undefined,--as-needed" - } - }, - { - "name": "ci-linux", - "generator": "Unix Makefiles", - "hidden": true, - "inherits": ["flags-linux", "ci-std"], - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "ci-darwin", - "generator": "Unix Makefiles", - "hidden": true, - "inherits": ["flags-darwin", "ci-std"], - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Release" - } - }, - { - "name": "ci-win64", - "inherits": ["flags-windows", "ci-std"], - "generator": "Visual Studio 17 2022", - "architecture": "x64", - "hidden": true - }, - { - "name": "ci-win64-mingw", - "inherits": ["flags-windows-mingw", "ci-std"], - "generator": "Ninja", - "hidden": true - }, - { - "name": "coverage-linux", - "binaryDir": "${sourceDir}/build/coverage", - "inherits": "ci-linux", - "hidden": true, - "cacheVariables": { - "ENABLE_COVERAGE": "ON", - "CMAKE_BUILD_TYPE": "Coverage", - "CMAKE_CXX_FLAGS_COVERAGE": "-Og -g --coverage -fkeep-inline-functions -fkeep-static-functions", - "CMAKE_EXE_LINKER_FLAGS_COVERAGE": "--coverage", - "CMAKE_SHARED_LINKER_FLAGS_COVERAGE": "--coverage", - "CMAKE_MAP_IMPORTED_CONFIG_COVERAGE": "Coverage;RelWithDebInfo;Release;Debug;" - } - }, - { - "name": "ci-coverage", - "inherits": ["coverage-linux", "dev-mode", "conan"], - "cacheVariables": { - "COVERAGE_HTML_COMMAND": "" - } - }, - { - "name": "ci-sanitize", - "binaryDir": "${sourceDir}/build/sanitize", - "inherits": ["ci-linux", "dev-mode", "conan"], - "cacheVariables": { - "CMAKE_BUILD_TYPE": "Sanitize", - "CMAKE_CXX_FLAGS_SANITIZE": "-O2 -g -fsanitize=address,undefined -fno-omit-frame-pointer -fno-common", - "CMAKE_MAP_IMPORTED_CONFIG_SANITIZE": "Sanitize;RelWithDebInfo;Release;Debug;" - } - }, - { - "name": "ci-build", - "binaryDir": "${sourceDir}/build", - "hidden": true - }, - { - "name": "ci-macos", - "inherits": ["ci-build", "ci-darwin", "dev-mode", "conan"] - }, - { - "name": "ci-ubuntu", - "inherits": [ - "ci-build", - "ci-linux", - "clang-tidy", - "conan", - "cppcheck", - "dev-mode" - ] - }, - { - "name": "ci-windows", - "inherits": ["ci-build", "ci-win64", "dev-mode", "conan"] - }, - { - "name": "ci-docker", - "inherits": ["ci-build", "ci-linux", "conan"], - "cacheVariables": { - "USE_GIT_VERSION_TRACKING": "OFF" - } - } - - ] -} diff --git a/wrapper/CODE_OF_CONDUCT.md b/wrapper/CODE_OF_CONDUCT.md deleted file mode 100644 index d1202311..00000000 --- a/wrapper/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,5 +0,0 @@ -# Code of Conduct - -* You will be judged by your contributions first, and your sense of humor - second. -* Nobody owes you anything. diff --git a/wrapper/CONTRIBUTING.md b/wrapper/CONTRIBUTING.md deleted file mode 100644 index 10cccf38..00000000 --- a/wrapper/CONTRIBUTING.md +++ /dev/null @@ -1,19 +0,0 @@ -# Contributing - - - -## Code of Conduct - -Please see the [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md) document. - -## Getting started - -Helpful notes for developers can be found in the [`HACKING.md`](HACKING.md) -document. - -In addition to he above, if you use the presets file as instructed, then you -should NOT check it into source control, just as the CMake documentation -suggests. diff --git a/wrapper/Doxyfile b/wrapper/Doxyfile deleted file mode 100644 index 777bf1a9..00000000 --- a/wrapper/Doxyfile +++ /dev/null @@ -1,2822 +0,0 @@ -# Doxyfile 1.9.8 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). -# -# Note: -# -# Use doxygen to compare the used configuration file with the template -# configuration file: -# doxygen -x [configFile] -# Use doxygen to compare the used configuration file with the template -# configuration file without replacing the environment variables or CMake type -# replacement variables: -# doxygen -x_noenv [configFile] - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = "NUTC Client" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = "NUTC Client is a Python/C++ wrapper for user-submitted algorithms. It exposes an API for algos to interact with the exchange(NUTC24) via RabbitMQ." - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create up to 4096 -# sub-directories (in 2 levels) under the output directory of each output format -# and will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to -# control the number of sub-directories. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# Controls the number of sub-directories that will be created when -# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every -# level increment doubles the number of directories, resulting in 4096 -# directories at level 8 which is the default and also the maximum value. The -# sub-directories are organized in 2 levels, the first level always has a fixed -# number of 16 directories. -# Minimum value: 0, maximum value: 8, default value: 8. -# This tag requires that the tag CREATE_SUBDIRS is set to YES. - -CREATE_SUBDIRS_LEVEL = 8 - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, -# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English -# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, -# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with -# English messages), Korean, Korean-en (Korean with English messages), Latvian, -# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, -# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, -# Swedish, Turkish, Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# By default Python docstrings are displayed as preformatted text and doxygen's -# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. -# The default value is: YES. - -PYTHON_DOCSTRING = YES - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:^^" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". Note that you cannot put \n's in the value part of an alias -# to insert newlines (in the resulting output). You can put ^^ in the value part -# of an alias to insert a newline as if a physical newline was in the original -# file. When you need a literal { or } or , in the value part of an alias you -# have to escape them by means of a backslash (\), this can lead to conflicts -# with the commands \{ and \} for these it is advised to use the version @{ and -# @} or use a double escape (\\{ and \\}) - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, -# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files -# as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add -# * to the FILE_PATTERNS. -# -# Note see also the list of default file extension mappings. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 5 - -# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to -# generate identifiers for the Markdown headings. Note: Every identifier is -# unique. -# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a -# sequence number starting at 0 and GITHUB use the lower case version of title -# with any whitespace replaced by '-' and punctuation characters removed. -# The default value is: DOXYGEN. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -MARKDOWN_ID_STYLE = DOXYGEN - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -# The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of -# cores available in the system. You can set it explicitly to a value larger -# than 0 to get more control over the balance between CPU load and processing -# speed. At this moment only the input processing can be done using multiple -# threads. Since this is still an experimental feature the default is set to 1, -# which effectively disables parallel processing. Please report any issues you -# encounter. Generating dot graphs in parallel is controlled by the -# DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. - -NUM_PROC_THREADS = 1 - -# If the TIMESTAMP tag is set different from NO then each generated page will -# contain the date or date and time when the page was generated. Setting this to -# NO can help when comparing the output of multiple runs. -# Possible values are: YES, NO, DATETIME and DATE. -# The default value is: NO. - -TIMESTAMP = NO - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If this flag is set to YES, the name of an unnamed parameter in a declaration -# will be determined by the corresponding definition. By default unnamed -# parameters remain unnamed in the output. -# The default value is: YES. - -RESOLVE_UNNAMED_PARAMS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# will also hide undocumented C++ concepts if enabled. This option has no effect -# if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# declarations. If set to NO, these declarations will be included in the -# documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be -# able to match the capabilities of the underlying filesystem. In case the -# filesystem is case sensitive (i.e. it supports files in the same directory -# whose names only differ in casing), the option must be set to YES to properly -# deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be set to NO to properly deal with -# output files written for symbols that only differ in casing, such as for two -# classes, one named CLASS and the other named Class, and to also support -# references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option -# to NO, whereas on Linux or other Unix flavors it should typically be set to -# YES. -# Possible values are: SYSTEM, NO and YES. -# The default value is: SYSTEM. - -CASE_SENSE_NAMES = SYSTEM - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class -# will show which file needs to be included to use the class. -# The default value is: YES. - -SHOW_HEADERFILE = YES - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. See also section "Changing the -# layout of pages" for information. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as documenting some parameters in -# a documented function twice, or documenting parameters that don't exist or -# using markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# If WARN_IF_INCOMPLETE_DOC is set to YES, doxygen will warn about incomplete -# function parameter documentation. If set to NO, doxygen will accept that some -# parameters have no documentation without warning. -# The default value is: YES. - -WARN_IF_INCOMPLETE_DOC = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong parameter -# documentation, but not about the absence of documentation. If EXTRACT_ALL is -# set to YES then this flag will automatically be disabled. See also -# WARN_IF_INCOMPLETE_DOC -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, doxygen will warn about -# undocumented enumeration values. If set to NO, doxygen will accept -# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: NO. - -WARN_IF_UNDOC_ENUM_VAL = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then doxygen behaves -# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined doxygen will not -# write the warning messages in between other messages but write them at the end -# of a run, in case a WARN_LOGFILE is defined the warning messages will be -# besides being in the defined file also be shown at the end of a run, unless -# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case -# the behavior will remain as with the setting FAIL_ON_WARNINGS. -# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# See also: WARN_LINE_FORMAT -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# In the $text part of the WARN_FORMAT command it is possible that a reference -# to a more specific place is given. To make it easier to jump to this place -# (outside of doxygen) the user can define a custom "cut" / "paste" string. -# Example: -# WARN_LINE_FORMAT = "'vi $file +$line'" -# See also: WARN_FORMAT -# The default value is: at line $line of file $file. - -WARN_LINE_FORMAT = "at line $line of file $file" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). In case the file specified cannot be opened for writing the -# warning and error messages are written to standard error. When as file - is -# specified the warning and error messages are written to standard output -# (stdout). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = src - -# 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 -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: -# https://www.gnu.org/software/libiconv/) for the list of possible encodings. -# See also: INPUT_FILE_ENCODING -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses The INPUT_FILE_ENCODING tag can be used to specify -# character encoding on a per file pattern basis. Doxygen will compare the file -# name with each pattern and apply the encoding instead of the default -# INPUT_ENCODING) if there is a match. The character encodings are a list of the -# form: pattern=encoding (like *.php=ISO-8859-1). See cfg_input_encoding -# "INPUT_ENCODING" for further information on supported encodings. - -INPUT_FILE_ENCODING = - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# Note the list of default checked file patterns might differ from the list of -# default file extension mappings. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, -# *.cpp, *.cppm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, -# *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.ixx, *.l, *.cs, *.d, *.php, -# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be -# provided as doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cxxm \ - *.cpp \ - *.cppm \ - *.c++ \ - *.c++m \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.idl \ - *.ddl \ - *.odl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.ixx \ - *.l \ - *.cs \ - *.d \ - *.php \ - *.php4 \ - *.php5 \ - *.phtml \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.pyw \ - *.f90 \ - *.f95 \ - *.f03 \ - *.f08 \ - *.f18 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl \ - *.ucf \ - *.qsf \ - *.ice - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# ANamespace::AClass, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that doxygen will use the data processed and written to standard output -# for further processing, therefore nothing else, like debug statements or used -# commands (so in case of a Windows batch file always use @echo OFF), should be -# written to standard output. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -# The Fortran standard specifies that for fixed formatted Fortran code all -# characters from position 72 are to be considered as comment. A common -# extension is to allow longer lines before the automatic comment starts. The -# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can -# be processed before the automatic comment starts. -# Minimum value: 7, maximum value: 10000, default value: 72. - -FORTRAN_COMMENT_AFTER = 72 - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) -# that should be ignored while generating the index headers. The IGNORE_PREFIX -# tag works for classes, function and member names. The entity will be placed in -# the alphabetical list under the first letter of the entity name that remains -# after removing the prefix. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). -# Note: Since the styling of scrollbars can currently not be overruled in -# Webkit/Chromium, the styling will be left out of the default doxygen.css if -# one or more extra stylesheets have been specified. So if scrollbar -# customization is desired it has to be added explicitly. For an example see the -# documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output -# should be rendered with a dark or light theme. -# Possible values are: LIGHT always generate light mode output, DARK always -# generate dark mode output, AUTO_LIGHT automatically set the mode according to -# the user preference, use light mode if no preference is set (the default), -# AUTO_DARK automatically set the mode according to the user preference, use -# dark mode if no preference is set and TOGGLE allow to user to switch between -# light and dark mode via a button. -# The default value is: AUTO_LIGHT. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE = AUTO_LIGHT - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a color-wheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use gray-scales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via JavaScript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have JavaScript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be -# dynamically folded and expanded in the generated HTML source code. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_CODE_FOLDING = YES - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: -# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML -# output directory. Running make will produce the docset in that directory and -# running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag determines the URL of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDURL = - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# on Windows. In the beginning of 2021 Microsoft took the original page, with -# a.o. the download links, offline the HTML help workshop was already many years -# in maintenance mode). You can download the HTML help workshop from the web -# archives at Installation executable (see: -# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo -# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the main .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# The SITEMAP_URL tag is used to specify the full URL of the place where the -# generated documentation will be placed on the server by the user during the -# deployment of the documentation. The generated sitemap is called sitemap.xml -# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL -# is specified no sitemap is generated. For information about the sitemap -# protocol see https://www.sitemaps.org -# This tag requires that the tag GENERATE_HTML is set to YES. - -SITEMAP_URL = - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to -# run qhelpgenerator on the generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine tune the look of the index (see "Fine-tuning the output"). As an -# example, the default style sheet generated by doxygen has an example that -# shows how to put an image at the root of the tree instead of the PROJECT_NAME. -# Since the tree basically has the same information as the tab index, you could -# consider setting DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# When both GENERATE_TREEVIEW and DISABLE_INDEX are set to YES, then the -# FULL_SIDEBAR option determines if the side bar is limited to only the treeview -# area (value NO) or if it should extend to the full height of the window (value -# YES). Setting this to YES gives a layout similar to -# https://docs.readthedocs.io with more room for contents, but less room for the -# project logo, title, and description. If either GENERATE_TREEVIEW or -# DISABLE_INDEX is set to NO, this option has no effect. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FULL_SIDEBAR = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# If the OBFUSCATE_EMAILS tag is set to YES, doxygen will obfuscate email -# addresses. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -OBFUSCATE_EMAILS = YES - -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg -# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -# the HTML output. These images will generally look nicer at scaled resolutions. -# Possible values are: png (the default) and svg (looks nicer but requires the -# pdf2svg or inkscape tool). -# The default value is: png. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FORMULA_FORMAT = png - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -# to create new LaTeX commands to be used in formulas as building blocks. See -# the section "Including formulas" for details. - -FORMULA_MACROFILE = - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side JavaScript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. -# Note that the different versions of MathJax have different requirements with -# regards to the different settings, so it is possible that also other MathJax -# settings have to be changed when switching between the different MathJax -# versions. -# Possible values are: MathJax_2 and MathJax_3. -# The default value is: MathJax_2. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_VERSION = MathJax_2 - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. For more details about the output format see MathJax -# version 2 (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) and MathJax version 3 -# (see: -# http://docs.mathjax.org/en/latest/web/components/output.html). -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility. This is the name for Mathjax version 2, for MathJax version 3 -# this will be translated into chtml), NativeMML (i.e. MathML. Only supported -# for NathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This -# is the name for Mathjax version 3, for MathJax version 2 this will be -# translated into HTML-CSS) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. The default value is: -# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 -# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# for MathJax version 2 (see -# https://docs.mathjax.org/en/v2.7-latest/tex.html#tex-and-latex-extensions): -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# For example for MathJax version 3 (see -# http://docs.mathjax.org/en/latest/input/tex/extensions/index.html): -# MATHJAX_EXTENSIONS = ams -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /