Spaces:
Sleeping
Sleeping
/* Class autosprintf - formatted output to an ostream. | |
Copyright (C) 2002, 2012-2016 Free Software Foundation, Inc. | |
This program is free software: you can redistribute it and/or modify | |
it under the terms of the GNU Lesser General Public License as published by | |
the Free Software Foundation; either version 2.1 of the License, or | |
(at your option) any later version. | |
This program is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU Lesser General Public License for more details. | |
You should have received a copy of the GNU Lesser General Public License | |
along with this program. If not, see <https://www.gnu.org/licenses/>. */ | |
/* This feature is available in gcc versions 2.5 and later. */ | |
/* The __-protected variants of 'format' and 'printf' attributes | |
are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ | |
namespace gnu | |
{ | |
/* A temporary object, usually allocated on the stack, representing | |
the result of an asprintf() call. */ | |
class autosprintf | |
{ | |
public: | |
/* Constructor: takes a format string and the printf arguments. */ | |
autosprintf (const char *format, ...) | |
_AUTOSPRINTF_ATTRIBUTE_FORMAT(); | |
/* Copy constructor. */ | |
autosprintf (const autosprintf& src); | |
/* Assignment operator. */ | |
autosprintf& operator = (autosprintf temporary); | |
/* Destructor: frees the temporarily allocated string. */ | |
~autosprintf (); | |
/* Conversion to string. */ | |
operator char * () const; | |
operator std::string () const; | |
/* Output to an ostream. */ | |
friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp) | |
{ | |
stream << (tmp.str ? tmp.str : "(error in autosprintf)"); | |
return stream; | |
} | |
private: | |
char *str; | |
}; | |
} | |