/src/FreeImage/Source/OpenEXR/Iex/IexThrowErrnoExc.cpp
https://bitbucket.org/cabalistic/ogredeps/ · C++ · 859 lines · 652 code · 168 blank · 39 comment · 7 complexity · e3fa4c87ad7cab942fcc32baf886c473 MD5 · raw file
- ///////////////////////////////////////////////////////////////////////////
- //
- // Copyright (c) 2002, Industrial Light & Magic, a division of Lucas
- // Digital Ltd. LLC
- //
- // All rights reserved.
- //
- // Redistribution and use in source and binary forms, with or without
- // modification, are permitted provided that the following conditions are
- // met:
- // * Redistributions of source code must retain the above copyright
- // notice, this list of conditions and the following disclaimer.
- // * Redistributions in binary form must reproduce the above
- // copyright notice, this list of conditions and the following disclaimer
- // in the documentation and/or other materials provided with the
- // distribution.
- // * Neither the name of Industrial Light & Magic nor the names of
- // its contributors may be used to endorse or promote products derived
- // from this software without specific prior written permission.
- //
- // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- //
- ///////////////////////////////////////////////////////////////////////////
- //----------------------------------------------------------------
- //
- // Exceptions that correspond to "errno" error codes,
- // and a function to make throwing those exceptions easy.
- //
- //----------------------------------------------------------------
- #include "IexThrowErrnoExc.h"
- #include "IexErrnoExc.h"
- #include <string.h>
- #include <errno.h>
- namespace Iex {
- void throwErrnoExc (const std::string &text, int errnum)
- {
- const char *entext = strerror (errnum);
- std::string tmp (text);
- std::string::size_type pos;
- while (std::string::npos != (pos = tmp.find ("%T")))
- tmp.replace (pos, 2, entext, strlen (entext));
- switch (errnum)
- {
- #if defined (EPERM)
- case EPERM:
- throw EpermExc (tmp);
- #endif
- #if defined (ENOENT)
- case ENOENT:
- throw EnoentExc (tmp);
- #endif
- #if defined (ESRCH)
- case ESRCH:
- throw EsrchExc (tmp);
- #endif
- #if defined (EINTR)
- case EINTR:
- throw EintrExc (tmp);
- #endif
- #if defined (EIO)
- case EIO:
- throw EioExc (tmp);
- #endif
- #if defined (ENXIO)
- case ENXIO:
- throw EnxioExc (tmp);
- #endif
- #if defined (E2BIG)
- case E2BIG:
- throw E2bigExc (tmp);
- #endif
- #if defined (ENOEXEC)
- case ENOEXEC:
- throw EnoexecExc (tmp);
- #endif
- #if defined (EBADF)
- case EBADF:
- throw EbadfExc (tmp);
- #endif
- #if defined (ECHILD)
- case ECHILD:
- throw EchildExc (tmp);
- #endif
- #if defined (EAGAIN)
- case EAGAIN:
- throw EagainExc (tmp);
- #endif
- #if defined (ENOMEM)
- case ENOMEM:
- throw EnomemExc (tmp);
- #endif
- #if defined (EACCES)
- case EACCES:
- throw EaccesExc (tmp);
- #endif
- #if defined (EFAULT)
- case EFAULT:
- throw EfaultExc (tmp);
- #endif
- #if defined (ENOTBLK)
- case ENOTBLK:
- throw EnotblkExc (tmp);
- #endif
- #if defined (EBUSY)
- case EBUSY:
- throw EbusyExc (tmp);
- #endif
- #if defined (EEXIST)
- case EEXIST:
- throw EexistExc (tmp);
- #endif
- #if defined (EXDEV)
- case EXDEV:
- throw ExdevExc (tmp);
- #endif
- #if defined (ENODEV)
- case ENODEV:
- throw EnodevExc (tmp);
- #endif
- #if defined (ENOTDIR)
- case ENOTDIR:
- throw EnotdirExc (tmp);
- #endif
- #if defined (EISDIR)
- case EISDIR:
- throw EisdirExc (tmp);
- #endif
- #if defined (EINVAL)
- case EINVAL:
- throw EinvalExc (tmp);
- #endif
- #if defined (ENFILE)
- case ENFILE:
- throw EnfileExc (tmp);
- #endif
- #if defined (EMFILE)
- case EMFILE:
- throw EmfileExc (tmp);
- #endif
- #if defined (ENOTTY)
- case ENOTTY:
- throw EnottyExc (tmp);
- #endif
- #if defined (ETXTBSY)
- case ETXTBSY:
- throw EtxtbsyExc (tmp);
- #endif
- #if defined (EFBIG)
- case EFBIG:
- throw EfbigExc (tmp);
- #endif
- #if defined (ENOSPC)
- case ENOSPC:
- throw EnospcExc (tmp);
- #endif
- #if defined (ESPIPE)
- case ESPIPE:
- throw EspipeExc (tmp);
- #endif
- #if defined (EROFS)
- case EROFS:
- throw ErofsExc (tmp);
- #endif
- #if defined (EMLINK)
- case EMLINK:
- throw EmlinkExc (tmp);
- #endif
- #if defined (EPIPE)
- case EPIPE:
- throw EpipeExc (tmp);
- #endif
- #if defined (EDOM)
- case EDOM:
- throw EdomExc (tmp);
- #endif
- #if defined (ERANGE)
- case ERANGE:
- throw ErangeExc (tmp);
- #endif
- #if defined (ENOMSG)
- case ENOMSG:
- throw EnomsgExc (tmp);
- #endif
- #if defined (EIDRM)
- case EIDRM:
- throw EidrmExc (tmp);
- #endif
- #if defined (ECHRNG)
- case ECHRNG:
- throw EchrngExc (tmp);
- #endif
- #if defined (EL2NSYNC)
- case EL2NSYNC:
- throw El2nsyncExc (tmp);
- #endif
- #if defined (EL3HLT)
- case EL3HLT:
- throw El3hltExc (tmp);
- #endif
- #if defined (EL3RST)
- case EL3RST:
- throw El3rstExc (tmp);
- #endif
- #if defined (ELNRNG)
- case ELNRNG:
- throw ElnrngExc (tmp);
- #endif
- #if defined (EUNATCH)
- case EUNATCH:
- throw EunatchExc (tmp);
- #endif
- #if defined (ENOSCI)
- case ENOCSI:
- throw EnocsiExc (tmp);
- #endif
- #if defined (EL2HLT)
- case EL2HLT:
- throw El2hltExc (tmp);
- #endif
- #if defined (EDEADLK)
- case EDEADLK:
- throw EdeadlkExc (tmp);
- #endif
- #if defined (ENOLCK)
- case ENOLCK:
- throw EnolckExc (tmp);
- #endif
- #if defined (EBADE)
- case EBADE:
- throw EbadeExc (tmp);
- #endif
- #if defined (EBADR)
- case EBADR:
- throw EbadrExc (tmp);
- #endif
- #if defined (EXFULL)
- case EXFULL:
- throw ExfullExc (tmp);
- #endif
- #if defined (ENOANO)
- case ENOANO:
- throw EnoanoExc (tmp);
- #endif
- #if defined (EBADRQC)
- case EBADRQC:
- throw EbadrqcExc (tmp);
- #endif
- #if defined (EBADSLT)
- case EBADSLT:
- throw EbadsltExc (tmp);
- #endif
- #if defined (EDEADLOCK) && defined (EDEADLK)
- #if EDEADLOCK != EDEADLK
- case EDEADLOCK:
- throw EdeadlockExc (tmp);
- #endif
- #elif defined (EDEADLOCK)
- case EDEADLOCK:
- throw EdeadlockExc (tmp);
- #endif
- #if defined (EBFONT)
- case EBFONT:
- throw EbfontExc (tmp);
- #endif
- #if defined (ENOSTR)
- case ENOSTR:
- throw EnostrExc (tmp);
- #endif
- #if defined (ENODATA)
- case ENODATA:
- throw EnodataExc (tmp);
- #endif
- #if defined (ETIME)
- case ETIME:
- throw EtimeExc (tmp);
- #endif
- #if defined (ENOSR)
- case ENOSR:
- throw EnosrExc (tmp);
- #endif
- #if defined (ENONET)
- case ENONET:
- throw EnonetExc (tmp);
- #endif
- #if defined (ENOPKG)
- case ENOPKG:
- throw EnopkgExc (tmp);
- #endif
- #if defined (EREMOTE)
- case EREMOTE:
- throw EremoteExc (tmp);
- #endif
- #if defined (ENOLINK)
- case ENOLINK:
- throw EnolinkExc (tmp);
- #endif
- #if defined (EADV)
- case EADV:
- throw EadvExc (tmp);
- #endif
- #if defined (ESRMNT)
- case ESRMNT:
- throw EsrmntExc (tmp);
- #endif
- #if defined (ECOMM)
- case ECOMM:
- throw EcommExc (tmp);
- #endif
- #if defined (EPROTO)
- case EPROTO:
- throw EprotoExc (tmp);
- #endif
- #if defined (EMULTIHOP)
- case EMULTIHOP:
- throw EmultihopExc (tmp);
- #endif
- #if defined (EBADMSG)
- case EBADMSG:
- throw EbadmsgExc (tmp);
- #endif
- #if defined (ENAMETOOLONG)
- case ENAMETOOLONG:
- throw EnametoolongExc (tmp);
- #endif
- #if defined (EOVERFLOW)
- case EOVERFLOW:
- throw EoverflowExc (tmp);
- #endif
- #if defined (ENOTUNIQ)
- case ENOTUNIQ:
- throw EnotuniqExc (tmp);
- #endif
- #if defined (EBADFD)
- case EBADFD:
- throw EbadfdExc (tmp);
- #endif
- #if defined (EREMCHG)
- case EREMCHG:
- throw EremchgExc (tmp);
- #endif
- #if defined (ELIBACC)
- case ELIBACC:
- throw ElibaccExc (tmp);
- #endif
- #if defined (ELIBBAD)
- case ELIBBAD:
- throw ElibbadExc (tmp);
- #endif
- #if defined (ELIBSCN)
- case ELIBSCN:
- throw ElibscnExc (tmp);
- #endif
- #if defined (ELIBMAX)
- case ELIBMAX:
- throw ElibmaxExc (tmp);
- #endif
- #if defined (ELIBEXEC)
- case ELIBEXEC:
- throw ElibexecExc (tmp);
- #endif
- #if defined (EILSEQ)
- case EILSEQ:
- throw EilseqExc (tmp);
- #endif
- #if defined (ENOSYS)
- case ENOSYS:
- throw EnosysExc (tmp);
- #endif
- #if defined (ELOOP)
- case ELOOP:
- throw EloopExc (tmp);
- #endif
- #if defined (ERESTART)
- case ERESTART:
- throw ErestartExc (tmp);
- #endif
- #if defined (ESTRPIPE)
- case ESTRPIPE:
- throw EstrpipeExc (tmp);
- #endif
- #if defined (ENOTEMPTY)
- case ENOTEMPTY:
- throw EnotemptyExc (tmp);
- #endif
- #if defined (EUSERS)
- case EUSERS:
- throw EusersExc (tmp);
- #endif
- #if defined (ENOTSOCK)
- case ENOTSOCK:
- throw EnotsockExc (tmp);
- #endif
- #if defined (EDESTADDRREQ)
- case EDESTADDRREQ:
- throw EdestaddrreqExc (tmp);
- #endif
- #if defined (EMSGSIZE)
- case EMSGSIZE:
- throw EmsgsizeExc (tmp);
- #endif
- #if defined (EPROTOTYPE)
- case EPROTOTYPE:
- throw EprototypeExc (tmp);
- #endif
- #if defined (ENOPROTOOPT)
- case ENOPROTOOPT:
- throw EnoprotooptExc (tmp);
- #endif
- #if defined (EPROTONOSUPPORT)
- case EPROTONOSUPPORT:
- throw EprotonosupportExc (tmp);
- #endif
- #if defined (ESOCKTNOSUPPORT)
- case ESOCKTNOSUPPORT:
- throw EsocktnosupportExc (tmp);
- #endif
- #if defined (EOPNOTSUPP)
- case EOPNOTSUPP:
- throw EopnotsuppExc (tmp);
- #endif
- #if defined (EPFNOSUPPORT)
- case EPFNOSUPPORT:
- throw EpfnosupportExc (tmp);
- #endif
- #if defined (EAFNOSUPPORT)
- case EAFNOSUPPORT:
- throw EafnosupportExc (tmp);
- #endif
- #if defined (EADDRINUSE)
- case EADDRINUSE:
- throw EaddrinuseExc (tmp);
- #endif
- #if defined (EADDRNOTAVAIL)
- case EADDRNOTAVAIL:
- throw EaddrnotavailExc (tmp);
- #endif
- #if defined (ENETDOWN)
- case ENETDOWN:
- throw EnetdownExc (tmp);
- #endif
- #if defined (ENETUNREACH)
- case ENETUNREACH:
- throw EnetunreachExc (tmp);
- #endif
- #if defined (ENETRESET)
- case ENETRESET:
- throw EnetresetExc (tmp);
- #endif
- #if defined (ECONNABORTED)
- case ECONNABORTED:
- throw EconnabortedExc (tmp);
- #endif
- #if defined (ECONNRESET)
- case ECONNRESET:
- throw EconnresetExc (tmp);
- #endif
- #if defined (ENOBUFS)
- case ENOBUFS:
- throw EnobufsExc (tmp);
- #endif
- #if defined (EISCONN)
- case EISCONN:
- throw EisconnExc (tmp);
- #endif
- #if defined (ENOTCONN)
- case ENOTCONN:
- throw EnotconnExc (tmp);
- #endif
- #if defined (ESHUTDOWN)
- case ESHUTDOWN:
- throw EshutdownExc (tmp);
- #endif
- #if defined (ETOOMANYREFS)
- case ETOOMANYREFS:
- throw EtoomanyrefsExc (tmp);
- #endif
- #if defined (ETIMEDOUT)
- case ETIMEDOUT:
- throw EtimedoutExc (tmp);
- #endif
- #if defined (ECONNREFUSED)
- case ECONNREFUSED:
- throw EconnrefusedExc (tmp);
- #endif
- #if defined (EHOSTDOWN)
- case EHOSTDOWN:
- throw EhostdownExc (tmp);
- #endif
- #if defined (EHOSTUNREACH)
- case EHOSTUNREACH:
- throw EhostunreachExc (tmp);
- #endif
- #if defined (EALREADY)
- case EALREADY:
- throw EalreadyExc (tmp);
- #endif
- #if defined (EINPROGRESS)
- case EINPROGRESS:
- throw EinprogressExc (tmp);
- #endif
- #if defined (ESTALE)
- case ESTALE:
- throw EstaleExc (tmp);
- #endif
- #if defined (EIORESID)
- case EIORESID:
- throw EioresidExc (tmp);
- #endif
- #if defined (EUCLEAN)
- case EUCLEAN:
- throw EucleanExc (tmp);
- #endif
- #if defined (ENOTNAM)
- case ENOTNAM:
- throw EnotnamExc (tmp);
- #endif
- #if defined (ENAVAIL)
- case ENAVAIL:
- throw EnavailExc (tmp);
- #endif
- #if defined (EISNAM)
- case EISNAM:
- throw EisnamExc (tmp);
- #endif
- #if defined (EREMOTEIO)
- case EREMOTEIO:
- throw EremoteioExc (tmp);
- #endif
- #if defined (EINIT)
- case EINIT:
- throw EinitExc (tmp);
- #endif
- #if defined (EREMDEV)
- case EREMDEV:
- throw EremdevExc (tmp);
- #endif
- #if defined (ECANCELED)
- case ECANCELED:
- throw EcanceledExc (tmp);
- #endif
- #if defined (ENOLIMFILE)
- case ENOLIMFILE:
- throw EnolimfileExc (tmp);
- #endif
- #if defined (EPROCLIM)
- case EPROCLIM:
- throw EproclimExc (tmp);
- #endif
- #if defined (EDISJOINT)
- case EDISJOINT:
- throw EdisjointExc (tmp);
- #endif
- #if defined (ENOLOGIN)
- case ENOLOGIN:
- throw EnologinExc (tmp);
- #endif
- #if defined (ELOGINLIM)
- case ELOGINLIM:
- throw EloginlimExc (tmp);
- #endif
- #if defined (EGROUPLOOP)
- case EGROUPLOOP:
- throw EgrouploopExc (tmp);
- #endif
- #if defined (ENOATTACH)
- case ENOATTACH:
- throw EnoattachExc (tmp);
- #endif
- #if defined (ENOTSUP) && defined (EOPNOTSUPP)
- #if ENOTSUP != EOPNOTSUPP
- case ENOTSUP:
- throw EnotsupExc (tmp);
- #endif
- #elif defined (ENOTSUP)
- case ENOTSUP:
- throw EnotsupExc (tmp);
- #endif
- #if defined (ENOATTR)
- case ENOATTR:
- throw EnoattrExc (tmp);
- #endif
- #if defined (EDIRCORRUPTED)
- case EDIRCORRUPTED:
- throw EdircorruptedExc (tmp);
- #endif
- #if defined (EDQUOT)
- case EDQUOT:
- throw EdquotExc (tmp);
- #endif
- #if defined (ENFSREMOTE)
- case ENFSREMOTE:
- throw EnfsremoteExc (tmp);
- #endif
- #if defined (ECONTROLLER)
- case ECONTROLLER:
- throw EcontrollerExc (tmp);
- #endif
- #if defined (ENOTCONTROLLER)
- case ENOTCONTROLLER:
- throw EnotcontrollerExc (tmp);
- #endif
- #if defined (EENQUEUED)
- case EENQUEUED:
- throw EenqueuedExc (tmp);
- #endif
- #if defined (ENOTENQUEUED)
- case ENOTENQUEUED:
- throw EnotenqueuedExc (tmp);
- #endif
- #if defined (EJOINED)
- case EJOINED:
- throw EjoinedExc (tmp);
- #endif
- #if defined (ENOTJOINED)
- case ENOTJOINED:
- throw EnotjoinedExc (tmp);
- #endif
- #if defined (ENOPROC)
- case ENOPROC:
- throw EnoprocExc (tmp);
- #endif
- #if defined (EMUSTRUN)
- case EMUSTRUN:
- throw EmustrunExc (tmp);
- #endif
- #if defined (ENOTSTOPPED)
- case ENOTSTOPPED:
- throw EnotstoppedExc (tmp);
- #endif
- #if defined (ECLOCKCPU)
- case ECLOCKCPU:
- throw EclockcpuExc (tmp);
- #endif
- #if defined (EINVALSTATE)
- case EINVALSTATE:
- throw EinvalstateExc (tmp);
- #endif
- #if defined (ENOEXIST)
- case ENOEXIST:
- throw EnoexistExc (tmp);
- #endif
- #if defined (EENDOFMINOR)
- case EENDOFMINOR:
- throw EendofminorExc (tmp);
- #endif
- #if defined (EBUFSIZE)
- case EBUFSIZE:
- throw EbufsizeExc (tmp);
- #endif
- #if defined (EEMPTY)
- case EEMPTY:
- throw EemptyExc (tmp);
- #endif
- #if defined (ENOINTRGROUP)
- case ENOINTRGROUP:
- throw EnointrgroupExc (tmp);
- #endif
- #if defined (EINVALMODE)
- case EINVALMODE:
- throw EinvalmodeExc (tmp);
- #endif
- #if defined (ECANTEXTENT)
- case ECANTEXTENT:
- throw EcantextentExc (tmp);
- #endif
- #if defined (EINVALTIME)
- case EINVALTIME:
- throw EinvaltimeExc (tmp);
- #endif
- #if defined (EDESTROYED)
- case EDESTROYED:
- throw EdestroyedExc (tmp);
- #endif
- }
- throw ErrnoExc (tmp);
- }
- void throwErrnoExc (const std::string &text)
- {
- throwErrnoExc (text, errno);
- }
- } // namespace Iex