This allows using STL algorithms via std::back_inserter and such.
return lowAppend(S, Ssize);
}
-SBuf &
-SBuf::append(const char c)
+void
+SBuf::push_back(const char c)
{
- return lowAppend(&c, 1);
+ lowAppend(&c, 1);
}
SBuf&
typedef MemBlob::size_type size_type;
typedef SBufIterator const_iterator;
typedef SBufReverseIterator const_reverse_iterator;
+ using value_type = char;
static const size_type npos = 0xffffffff; // max(uint32_t)
/// Maximum size of a SBuf. By design it MUST be < MAX(size_type)/2. Currently 256Mb.
*/
SBuf& append(const SBuf & S);
+ /// \copydoc push_back(char)
+ SBuf& append(const char c) { push_back(c); return *this; }
+
/// Append a single character. The character may be NUL (\0).
- SBuf& append(const char c);
+ void push_back(char);
/** Append operation for C-style strings.
*
void SBuf::clear() STUB
SBuf& SBuf::append(const SBuf &) STUB_RETVAL(*this)
SBuf& SBuf::append(const char *, size_type) STUB_RETVAL(*this)
-SBuf& SBuf::append(const char) STUB_RETVAL(*this)
+void SBuf::push_back(char) STUB
SBuf& SBuf::Printf(const char *, ...) STUB_RETVAL(*this)
SBuf& SBuf::appendf(const char *, ...) STUB_RETVAL(*this)
SBuf& SBuf::vappendf(const char *, va_list) STUB_RETVAL(*this)
#include "tests/SBufFindTest.h"
#include "unitTestMain.h"
+#include <algorithm>
#include <iostream>
#include <stdexcept>
#include <unordered_map>
CPPUNIT_TEST(testStdStringOps);
CPPUNIT_TEST(testIterators);
CPPUNIT_TEST(testSBufHash);
+ CPPUNIT_TEST(testStdAlgorithm);
// CPPUNIT_TEST( testDumpStats ); //fake test, to print alloc stats
CPPUNIT_TEST_SUITE_END();
void testStdStringOps();
void testIterators();
void testSBufHash();
+ void testStdAlgorithm();
};
CPPUNIT_TEST_SUITE_REGISTRATION( TestSBuf );
}
}
+void
+TestSBuf::testStdAlgorithm()
+{
+ {
+ SBuf src(fox), dst;
+ std::copy(src.begin(), src.end(), std::back_inserter(dst));
+ CPPUNIT_ASSERT_EQUAL(src, dst);
+ }
+
+ {
+ SBuf src(fox), dst;
+ std::copy_if(src.begin(), src.end(), std::back_inserter(dst),
+ [](char c) { return c != 'o'; });
+ CPPUNIT_ASSERT_EQUAL(SBuf("The quick brwn fx jumped ver the lazy dg"), dst);
+ }
+}
+
int
main(int argc, char *argv[])
{