]> git.tdb.fi Git - libs/core.git/commitdiff
Make Console references static instead of extern
authorMikko Rasa <tdb@tdb.fi>
Tue, 3 Jan 2023 15:42:11 +0000 (17:42 +0200)
committerMikko Rasa <tdb@tdb.fi>
Tue, 3 Jan 2023 15:42:11 +0000 (17:42 +0200)
This avoids unresolved external errors on MSVC.  It's not ideal because
every translation unit will have its own copy of the references and
initialize them separately, but the overhead for calling the instance
accessor function is not too large.

source/io/console.cpp
source/io/console.h

index abb872d12e41c915a3876250abe340ddec13bf52..0ac05c6b8c9fd08c0d813ed45d4435c15384b84e 100644 (file)
@@ -68,9 +68,5 @@ Console &Console::instance(Stream s)
        throw invalid_argument("Console::instance");
 }
 
-Console &cin = Console::instance(Console::CIN);
-Console &cout = Console::instance(Console::COUT);
-Console &cerr = Console::instance(Console::CERR);
-
 } // namespace IO
 } // namespace Msp
index 1755659f9f5b3c0d7e93d3670decf4157d034fdb..fe777cc04db02e90b88df52730c5f41ec3af513d 100644 (file)
@@ -65,9 +65,10 @@ public:
        static Console &instance(Stream);
 };
 
-MSPCORE_API extern Console &cin;
-MSPCORE_API extern Console &cout;
-MSPCORE_API extern Console &cerr;
+// TODO make these inline instead of static when upgrading to C++17.
+static Console &cin = Console::instance(Console::CIN);
+static Console &cout = Console::instance(Console::COUT);
+static Console &cerr = Console::instance(Console::CERR);
 
 } // namespace IO
 } // namespace Msp