Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes16kdownloads
autosprintf.h68 linesDownload Raw Back to include
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 modify5   it under the terms of the GNU Lesser General Public License as published by6   the Free Software Foundation; either version 2.1 of the License, or7   (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 of11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12   GNU Lesser General Public License for more details.13 14   You should have received a copy of the GNU Lesser General Public License15   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */16 17#ifndef _AUTOSPRINTF_H18#define _AUTOSPRINTF_H19 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#else24/* The __-protected variants of 'format' and 'printf' attributes25   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# else30#  define _AUTOSPRINTF_ATTRIBUTE_FORMAT() \31  __attribute__ ((format (printf, 2, 3)))32# endif33#endif34 35#include <string>36#include <iostream>37 38namespace gnu39{40  /* A temporary object, usually allocated on the stack, representing41     the result of an asprintf() call.  */42  class autosprintf43  {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    autosprintf& operator = (autosprintf copy);51    /* Destructor: frees the temporarily allocated string.  */52    ~autosprintf ();53    /* Conversion to string.  */54    operator char * () const;55    operator std::string () const;56    /* Output to an ostream.  */57    friend inline std::ostream& operator<< (std::ostream& stream, const autosprintf& tmp)58    {59      stream << (tmp.str ? tmp.str : "(error in autosprintf)");60      return stream;61    }62  private:63    char *str;64  };65}66 67#endif /* _AUTOSPRINTF_H */68 
codekingpro/portable-devtools · Team Ai