aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/utilities/debug.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/vm/utilities/debug.hpp')
-rw-r--r--src/share/vm/utilities/debug.hpp33
1 files changed, 29 insertions, 4 deletions
diff --git a/src/share/vm/utilities/debug.hpp b/src/share/vm/utilities/debug.hpp
index 63c69e63f..0ba644249 100644
--- a/src/share/vm/utilities/debug.hpp
+++ b/src/share/vm/utilities/debug.hpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -33,16 +33,23 @@
// Simple class to format the ctor arguments into a fixed-sized buffer.
template <size_t bufsz = 256>
class FormatBuffer {
-public:
+ public:
inline FormatBuffer(const char * format, ...);
inline void append(const char* format, ...);
+ inline void print(const char* format, ...);
+ inline void printv(const char* format, va_list ap);
operator const char *() const { return _buf; }
-private:
+ char* buffer() { return _buf; }
+ int size() { return bufsz; }
+
+ private:
FormatBuffer(const FormatBuffer &); // prevent copies
-private:
+ protected:
char _buf[bufsz];
+
+ inline FormatBuffer();
};
template <size_t bufsz>
@@ -54,6 +61,24 @@ FormatBuffer<bufsz>::FormatBuffer(const char * format, ...) {
}
template <size_t bufsz>
+FormatBuffer<bufsz>::FormatBuffer() {
+ _buf[0] = '\0';
+}
+
+template <size_t bufsz>
+void FormatBuffer<bufsz>::print(const char * format, ...) {
+ va_list argp;
+ va_start(argp, format);
+ jio_vsnprintf(_buf, bufsz, format, argp);
+ va_end(argp);
+}
+
+template <size_t bufsz>
+void FormatBuffer<bufsz>::printv(const char * format, va_list argp) {
+ jio_vsnprintf(_buf, bufsz, format, argp);
+}
+
+template <size_t bufsz>
void FormatBuffer<bufsz>::append(const char* format, ...) {
// Given that the constructor does a vsnprintf we can assume that
// _buf is already initialized.