00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _OASYS_STRING_APPENDER_H_
00020 #define _OASYS_STRING_APPENDER_H_
00021
00022 #include "../debug/Log.h"
00023
00024 namespace oasys {
00025
00032 class StringAppender {
00033 public:
00038 StringAppender(char* buf, size_t size);
00039
00047 size_t append(const char* str, size_t len = 0);
00048
00055 size_t append(const std::string& str)
00056 {
00057 return append(str.data(), str.length());
00058 }
00059
00066 size_t append(char c);
00067
00074 size_t appendf(const char* fmt, ...) PRINTFLIKE(2, 3);
00075
00083 size_t vappendf(const char* fmt, va_list ap);
00084
00088 size_t length() { return len_; }
00089
00094 size_t desired_length() { return desired_; }
00095
00096 private:
00097 char* cur_;
00098 size_t remaining_;
00099 size_t len_;
00100 size_t desired_;
00101 };
00102
00103 }
00104
00105 #endif // OASYS_STRING_APPENDER