You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-dev@logging.apache.org by ca...@apache.org on 2007/11/19 20:53:01 UTC
svn commit: r596412 - in /logging/log4cxx/trunk/src:
main/cpp/messagebuffer.cpp main/include/log4cxx/helpers/messagebuffer.h
test/cpp/helpers/messagebuffertest.cpp
Author: carnold
Date: Mon Nov 19 11:52:59 2007
New Revision: 596412
URL: http://svn.apache.org/viewvc?rev=596412&view=rev
Log:
LOGCXX-209: A message of type wchar_t* not written properly
Modified:
logging/log4cxx/trunk/src/main/cpp/messagebuffer.cpp
logging/log4cxx/trunk/src/main/include/log4cxx/helpers/messagebuffer.h
logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp
Modified: logging/log4cxx/trunk/src/main/cpp/messagebuffer.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/cpp/messagebuffer.cpp?rev=596412&r1=596411&r2=596412&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/cpp/messagebuffer.cpp (original)
+++ logging/log4cxx/trunk/src/main/cpp/messagebuffer.cpp Mon Nov 19 11:52:59 2007
@@ -47,6 +47,9 @@
}
return *this;
}
+CharMessageBuffer& CharMessageBuffer::operator<<(char* msg) {
+ return operator<<((const char*) msg);
+}
CharMessageBuffer& CharMessageBuffer::operator<<(const char msg) {
if (stream == 0) {
@@ -128,6 +131,10 @@
return *this;
}
+WideMessageBuffer& WideMessageBuffer::operator<<(wchar_t* msg) {
+ return operator<<((const wchar_t*) msg);
+}
+
WideMessageBuffer& WideMessageBuffer::operator<<(const wchar_t msg) {
if (stream == 0) {
buf.append(1, msg);
@@ -207,6 +214,9 @@
CharMessageBuffer& MessageBuffer::operator<<(const char* msg) {
return cbuf.operator<<(msg);
}
+CharMessageBuffer& MessageBuffer::operator<<(char* msg) {
+ return cbuf.operator<<((const char*) msg);
+}
CharMessageBuffer& MessageBuffer::operator<<(const char msg) {
return cbuf.operator<<(msg);
@@ -228,7 +238,12 @@
WideMessageBuffer& MessageBuffer::operator<<(const wchar_t* msg) {
wbuf = new WideMessageBuffer();
return (*wbuf) << msg;
-}
+}
+WideMessageBuffer& MessageBuffer::operator<<(wchar_t* msg) {
+ wbuf = new WideMessageBuffer();
+ return (*wbuf) << (const wchar_t*) msg;
+}
+
WideMessageBuffer& MessageBuffer::operator<<(const wchar_t msg) {
wbuf = new WideMessageBuffer();
return (*wbuf) << msg;
Modified: logging/log4cxx/trunk/src/main/include/log4cxx/helpers/messagebuffer.h
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/main/include/log4cxx/helpers/messagebuffer.h?rev=596412&r1=596411&r2=596412&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/main/include/log4cxx/helpers/messagebuffer.h (original)
+++ logging/log4cxx/trunk/src/main/include/log4cxx/helpers/messagebuffer.h Mon Nov 19 11:52:59 2007
@@ -58,6 +58,12 @@
* @return this buffer.
*/
CharMessageBuffer& operator<<(const char* msg);
+ /**
+ * Appends string to buffer.
+ * @param msg string to append.
+ * @return this buffer.
+ */
+ CharMessageBuffer& operator<<(char* msg);
/**
* Appends character to buffer.
@@ -214,6 +220,12 @@
* @return this buffer.
*/
WideMessageBuffer& operator<<(const wchar_t* msg);
+ /**
+ * Appends string to buffer.
+ * @param msg string to append.
+ * @return this buffer.
+ */
+ WideMessageBuffer& operator<<(wchar_t* msg);
/**
* Appends character to buffer.
@@ -376,6 +388,13 @@
* @return encapsulated CharMessageBuffer.
*/
CharMessageBuffer& operator<<(const char* msg);
+ /**
+ * Appends a string into the buffer and
+ * fixes the buffer to use char characters.
+ * @param msg message to append.
+ * @return encapsulated CharMessageBuffer.
+ */
+ CharMessageBuffer& operator<<(char* msg);
/**
* Appends a string into the buffer and
@@ -415,6 +434,13 @@
* @return encapsulated CharMessageBuffer.
*/
WideMessageBuffer& operator<<(const wchar_t* msg);
+ /**
+ * Appends a string into the buffer and
+ * fixes the buffer to use char characters.
+ * @param msg message to append.
+ * @return encapsulated CharMessageBuffer.
+ */
+ WideMessageBuffer& operator<<(wchar_t* msg);
/**
* Appends a string into the buffer and
* fixes the buffer to use char characters.
Modified: logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp
URL: http://svn.apache.org/viewvc/logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp?rev=596412&r1=596411&r2=596412&view=diff
==============================================================================
--- logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp (original)
+++ logging/log4cxx/trunk/src/test/cpp/helpers/messagebuffertest.cpp Mon Nov 19 11:52:59 2007
@@ -19,7 +19,8 @@
#include <cppunit/extensions/HelperMacros.h>
#include <log4cxx/helpers/messagebuffer.h>
#include <log4cxx/helpers/messagebuffer.h>
-#include <iomanip>
+#include <iomanip>
+#include "../insertwide.h"
using namespace log4cxx;
using namespace log4cxx::helpers;
@@ -31,11 +32,17 @@
{
CPPUNIT_TEST_SUITE(MessageBufferTest);
CPPUNIT_TEST(testInsertChar);
- CPPUNIT_TEST(testInsertCStr);
+ CPPUNIT_TEST(testInsertConstStr);
+ CPPUNIT_TEST(testInsertStr);
CPPUNIT_TEST(testInsertString);
CPPUNIT_TEST(testInsertNull);
CPPUNIT_TEST(testInsertInt);
CPPUNIT_TEST(testInsertManipulator);
+#if LOG4CXX_HAS_WCHAR_T
+ CPPUNIT_TEST(testInsertConstWStr);
+ CPPUNIT_TEST(testInsertWString);
+ CPPUNIT_TEST(testInsertWStr);
+#endif
CPPUNIT_TEST_SUITE_END();
@@ -48,7 +55,7 @@
CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
}
- void testInsertCStr() {
+ void testInsertConstStr() {
MessageBuffer buf;
std::string greeting("Hello, World");
CharMessageBuffer& retval = buf << "Hello" << ", World";
@@ -56,6 +63,20 @@
CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
}
+ void testInsertStr() {
+ MessageBuffer buf;
+ std::string greeting("Hello, World");
+ char* part1 = (char*) malloc(20);
+ strcpy(part1, "Hello");
+ char* part2 = (char*) malloc(20);
+ strcpy(part2, ", World");
+ CharMessageBuffer& retval = buf << part1 << part2;
+ free(part1);
+ free(part2);
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
void testInsertString() {
MessageBuffer buf;
std::string greeting("Hello, World");
@@ -87,7 +108,39 @@
CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
CPPUNIT_ASSERT_EQUAL(true, buf.hasStream());
}
-
+
+#if LOG4CXX_HAS_WCHAR_T
+ void testInsertConstWStr() {
+ MessageBuffer buf;
+ std::wstring greeting(L"Hello, World");
+ WideMessageBuffer& retval = buf << L"Hello" << L", World";
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+ void testInsertWString() {
+ MessageBuffer buf;
+ std::wstring greeting(L"Hello, World");
+ WideMessageBuffer& retval = buf << std::wstring(L"Hello") << std::wstring(L", World");
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+ void testInsertWStr() {
+ MessageBuffer buf;
+ std::wstring greeting(L"Hello, World");
+ wchar_t* part1 = (wchar_t*) malloc(20);
+ wcscpy(part1, L"Hello");
+ wchar_t* part2 = (wchar_t*) malloc(20);
+ wcscpy(part2, L", World");
+ WideMessageBuffer& retval = buf << part1 << part2;
+ free(part1);
+ free(part2);
+ CPPUNIT_ASSERT_EQUAL(greeting, buf.str(retval));
+ CPPUNIT_ASSERT_EQUAL(false, buf.hasStream());
+ }
+
+#endif
};