source: trunk/contrib/gtk-2.22.1/include/autosprintf.h @ 1537

Last change on this file since 1537 was 613, checked in by sam, 11 years ago

Add Win32 contrib files for easier deployment:

File size: 2.2 KB
Line 
1/* Class autosprintf - formatted output to an ostream.
2   Copyright (C) 2002 Free Software Foundation, Inc.
3
4   This program is free software; you can redistribute it and/or modify it
5   under the terms of the GNU Library General Public License as published
6   by the Free Software Foundation; either version 2, or (at your option)
7   any later version.
8
9   This program is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Library General Public License for more details.
13
14   You should have received a copy of the GNU Library General Public
15   License along with this program; if not, write to the Free Software
16   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
17   USA.  */
18
19#ifndef _AUTOSPRINTF_H
20#define _AUTOSPRINTF_H
21
22#ifndef __attribute__
23/* This feature is available in gcc versions 2.5 and later.  */
24# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
25#  define __attribute__(Spec) /* empty */
26# endif
27/* The __-protected variants of `format' and `printf' attributes
28   are accepted by gcc versions 2.6.4 (effectively 2.7) and later.  */
29# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
30#  define __format__ format
31#  define __printf__ printf
32# endif
33#endif
34
35#include <string>
36#include <iostream>
37
38namespace gnu
39{
40  /* A temporary object, usually allocated on the stack, representing
41     the result of an asprintf() call.  */
42  class autosprintf
43  {
44  public:
45    /* Constructor: takes a format string and the printf arguments.  */
46    autosprintf (const char *format, ...)
47                __attribute__ ((__format__ (__printf__, 2, 3)));
48    /* Copy constructor.  */
49    autosprintf (const autosprintf& src);
50    /* Destructor: frees the temporarily allocated string.  */
51    ~autosprintf ();
52    /* Conversion to string.  */
53    operator char * () const;
54    operator std::string () const;
55    /* Output to an ostream.  */
56    friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp)
57    {
58      stream << (tmp.str ? tmp.str : "(error in autosprintf)");
59      return stream;
60    }
61  private:
62    char *str;
63  };
64}
65
66#endif /* _AUTOSPRINTF_H */
Note: See TracBrowser for help on using the repository browser.