Parcourir la source

[2371] move the definition of END_OF_STREAM from test to the main impl .cc.

based on review discussions.  it makes sense as we cannot assume its address
is never needed in non test applications.
JINMEI Tatuya il y a 12 ans
Parent
commit
430b6e2f07

+ 4 - 0
src/lib/dns/master_lexer_inputsource.cc

@@ -29,6 +29,10 @@ createStreamName(std::istream& input_stream) {
 
 } // end of unnamed namespace
 
+// Explicit definition of class static constant.  The value is given in the
+// declaration so it's not needed here.
+const int InputSource::END_OF_STREAM;
+
 InputSource::InputSource(std::istream& input_stream) :
     at_eof_(false),
     line_(1),

+ 5 - 0
src/lib/dns/master_lexer_inputsource.h

@@ -38,6 +38,11 @@ namespace master_lexer_internal {
 class InputSource {
 public:
     /// \brief Returned by getChar() when end of stream is reached.
+    ///
+    /// \note C++ allows a static const class member of an integral type to
+    /// be used without explicit definition as long as its address isn't
+    /// required.  But, since this is a public member variable and we cannot
+    /// assume how it's used, we give a definition in the implementation.
     static const int END_OF_STREAM = -1;
 
     /// \brief Exception thrown when ungetChar() is made to go before

+ 0 - 4
src/lib/dns/tests/master_lexer_inputsource_unittest.cc

@@ -27,10 +27,6 @@ using namespace std;
 using namespace isc::dns;
 using namespace isc::dns::master_lexer_internal;
 
-// Some compilers cannot find symbols of class constants when used in the
-// EXPECT_xxx macros, so we need explicit declaration.
-const int InputSource::END_OF_STREAM;
-
 namespace {
 
 class InputSourceTest : public ::testing::Test {