Mercurial > hg > truffle
diff src/share/vm/utilities/debug.hpp @ 4875:379b22e03c32
Merge
author | jcoomes |
---|---|
date | Fri, 03 Feb 2012 12:08:55 -0800 |
parents | aa3d708d67c4 |
children | 6c5b7a6becc8 |
line wrap: on
line diff
--- a/src/share/vm/utilities/debug.hpp Fri Feb 03 14:04:59 2012 -0500 +++ b/src/share/vm/utilities/debug.hpp Fri Feb 03 12:08:55 2012 -0800 @@ -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 @@ } 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.