Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/autosprintf.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 69:33d812a61356 |
---|---|
1 /* Class autosprintf - formatted output to an ostream. | |
2 Copyright (C) 2002, 2012-2016 Free Software Foundation, Inc. | |
3 | |
4 This program is free software: you can redistribute it and/or modify | |
5 it under the terms of the GNU Lesser General Public License as published by | |
6 the Free Software Foundation; either version 2.1 of the License, or | |
7 (at your option) 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 | |
12 GNU Lesser General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU Lesser General Public License | |
15 along with this program. If not, see <https://www.gnu.org/licenses/>. */ | |
16 | |
17 #ifndef _AUTOSPRINTF_H | |
18 #define _AUTOSPRINTF_H | |
19 | |
20 /* This feature is available in gcc versions 2.5 and later. */ | |
21 #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ | |
22 # define _AUTOSPRINTF_ATTRIBUTE_FORMAT() /* empty */ | |
23 #else | |
24 /* The __-protected variants of 'format' and 'printf' attributes | |
25 are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ | |
26 # if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) | |
27 # define _AUTOSPRINTF_ATTRIBUTE_FORMAT() \ | |
28 __attribute__ ((__format__ (__printf__, 2, 3))) | |
29 # else | |
30 # define _AUTOSPRINTF_ATTRIBUTE_FORMAT() \ | |
31 __attribute__ ((format (printf, 2, 3))) | |
32 # endif | |
33 #endif | |
34 | |
35 #include <string> | |
36 #include <iostream> | |
37 | |
38 namespace 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 _AUTOSPRINTF_ATTRIBUTE_FORMAT(); | |
48 /* Copy constructor. */ | |
49 autosprintf (const autosprintf& src); | |
50 /* Assignment operator. */ | |
51 autosprintf& operator = (autosprintf temporary); | |
52 /* Destructor: frees the temporarily allocated string. */ | |
53 ~autosprintf (); | |
54 /* Conversion to string. */ | |
55 operator char * () const; | |
56 operator std::string () const; | |
57 /* Output to an ostream. */ | |
58 friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp) | |
59 { | |
60 stream << (tmp.str ? tmp.str : "(error in autosprintf)"); | |
61 return stream; | |
62 } | |
63 private: | |
64 char *str; | |
65 }; | |
66 } | |
67 | |
68 #endif /* _AUTOSPRINTF_H */ |