[Spice-devel] [PATCH spice-streaming-agent 2/6] Separate ERROR macro in a different utility header

Frediano Ziglio fziglio at redhat.com
Mon Feb 19 16:47:50 UTC 2018


> 
> On Mon, 2018-02-19 at 15:52 +0000, Frediano Ziglio wrote:
> > Allows to reuse it.
> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> >  src/Makefile.am        |  1 +
> >  src/mjpeg-fallback.cpp |  7 +------
> >  src/utils.hpp          | 18 ++++++++++++++++++
> >  3 files changed, 20 insertions(+), 6 deletions(-)
> >  create mode 100644 src/utils.hpp
> > 
> > diff --git a/src/Makefile.am b/src/Makefile.am
> > index 3717b5c..ba3b1bf 100644
> > --- a/src/Makefile.am
> > +++ b/src/Makefile.am
> > @@ -55,4 +55,5 @@ spice_streaming_agent_SOURCES = \
> >  	mjpeg-fallback.hpp \
> >  	jpeg.cpp \
> >  	jpeg.hpp \
> > +	utils.hpp \
> >  	$(NULL)
> > diff --git a/src/mjpeg-fallback.cpp b/src/mjpeg-fallback.cpp
> > index cf704c6..0f31834 100644
> > --- a/src/mjpeg-fallback.cpp
> > +++ b/src/mjpeg-fallback.cpp
> > @@ -6,6 +6,7 @@
> >  
> >  #include <config.h>
> >  #include "mjpeg-fallback.hpp"
> > +#include "utils.hpp"
> >  
> >  #include <cstring>
> >  #include <exception>
> > @@ -19,12 +20,6 @@
> >  
> >  using namespace spice::streaming_agent;
> >  
> > -#define ERROR(args) do { \
> > -    std::ostringstream _s; \
> > -    _s << args; \
> > -    throw std::runtime_error(_s.str()); \
> > -} while(0)
> > -
> >  static inline uint64_t get_time()
> >  {
> >      timespec now;
> > diff --git a/src/utils.hpp b/src/utils.hpp
> > new file mode 100644
> > index 0000000..1e43eff
> > --- /dev/null
> > +++ b/src/utils.hpp
> > @@ -0,0 +1,18 @@
> > +/* Miscellaneous utilities
> > + *
> > + * \copyright
> > + * Copyright 2018 Red Hat Inc. All rights reserved.
> > + */
> > +#ifndef SPICE_STREAMING_AGENT_UTILS_HPP
> > +#define SPICE_STREAMING_AGENT_UTILS_HPP
> > +
> > +#include <stdexcept>
> > +#include <sstream>
> > +
> > +#define ERROR(args) do { \
> > +    std::ostringstream _s; \
> > +    _s << args; \
> > +    throw std::runtime_error(_s.str()); \
> > +} while(0)
> > +
> > +#endif // SPICE_STREAMING_AGENT_UTILS_HPP
> 
> Can we please not do this :) It isn't such a chore to throw the
> exceptions directly. This adds a level of indirection (code-wise) and
> macros are (personal opinion alert) best avoided in C++ unless you
> absolutely have to...
> 
> Lukas
> 

Yes, I'm taking to much shortcuts. I was considering a format library like
https://github.com/fmtlib/fmt. Did you even used a format library?

Frediano


More information about the Spice-devel mailing list