Skip to content

Commit

Permalink
operator = (const BaseExc& be) throw () = delete;
Browse files Browse the repository at this point in the history
Signed-off-by: Cary Phillips <cary@ilm.com>
  • Loading branch information
cary-ilm committed Oct 7, 2019
1 parent 09a14a9 commit a82c4c2
Show file tree
Hide file tree
Showing 3 changed files with 222 additions and 1 deletion.
1 change: 0 additions & 1 deletion IlmBase/Iex/IexBaseExc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,6 @@ BaseExc::~BaseExc () throw ()
// empty
}


const char *
BaseExc::what () const throw ()
{
Expand Down
2 changes: 2 additions & 0 deletions IlmBase/Iex/IexBaseExc.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ class BaseExc: public std::exception
IEX_EXPORT BaseExc (const BaseExc &be) throw();
IEX_EXPORT virtual ~BaseExc () throw ();

IEX_EXPORT BaseExc & operator = (const BaseExc& be) throw () = delete;

//---------------------------------------------------
// what() method -- e.what() returns _message.c_str()
//---------------------------------------------------
Expand Down
220 changes: 220 additions & 0 deletions IlmBase/IexTest/testBaseExc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,44 @@ test5()
}
}

std::string
getStackTrace()
{
return "???";
}


template <class T>
void
test6()
{
std::cout << "6" << std::endl;

IEX_INTERNAL_NAMESPACE::setStackTracer (getStackTrace);
assert (IEX_INTERNAL_NAMESPACE::stackTracer() == getStackTrace);

T e1 ("arg");

e1 += "X";
std::stringstream s;
s << "Y";
e1 += s;

T e2 (e1);

assert (e1.message() == "argXY");
assert (e1.stackTrace() == getStackTrace());

assert (e2.message() == e1.message());
assert (e2.stackTrace() == e1.stackTrace());

e2.assign ("Z");
assert (e2.message() == "Z");
e2.assign (s);
assert (e2.message() == "Y");
}


} // namespace


Expand All @@ -211,6 +249,188 @@ testBaseExc()
test3();
test4();
test5();

test6<IEX_INTERNAL_NAMESPACE::ArgExc>();
test6<IEX_INTERNAL_NAMESPACE::LogicExc>();
test6<IEX_INTERNAL_NAMESPACE::InputExc>();
test6<IEX_INTERNAL_NAMESPACE::IoExc>();
test6<IEX_INTERNAL_NAMESPACE::MathExc>();
test6<IEX_INTERNAL_NAMESPACE::ErrnoExc>();
test6<IEX_INTERNAL_NAMESPACE::NoImplExc>();
test6<IEX_INTERNAL_NAMESPACE::NullExc>();
test6<IEX_INTERNAL_NAMESPACE::TypeExc>();

#if XXX
test6<IEX_INTERNAL_NAMESPACE::ArgExc>();
test6<IEX_INTERNAL_NAMESPACE::LogicExc>();
test6<IEX_INTERNAL_NAMESPACE::InputExc>();
test6<IEX_INTERNAL_NAMESPACE::IoExc>();
test6<IEX_INTERNAL_NAMESPACE::MathExc>();
test6<IEX_INTERNAL_NAMESPACE::ErrnoExc>();
test6<IEX_INTERNAL_NAMESPACE::NoImplExc>();
test6<IEX_INTERNAL_NAMESPACE::NullExc>();
test6<IEX_INTERNAL_NAMESPACE::TypeExc>();
test6<IEX_INTERNAL_NAMESPACE::EpermExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoentExc>();
test6<IEX_INTERNAL_NAMESPACE::EsrchExc>();
test6<IEX_INTERNAL_NAMESPACE::EintrExc>();
test6<IEX_INTERNAL_NAMESPACE::EioExc>();
test6<IEX_INTERNAL_NAMESPACE::EnxioExc>();
test6<IEX_INTERNAL_NAMESPACE::E2bigExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoexecExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadfExc>();
test6<IEX_INTERNAL_NAMESPACE::EchildExc>();
test6<IEX_INTERNAL_NAMESPACE::EagainExc>();
test6<IEX_INTERNAL_NAMESPACE::EnomemExc>();
test6<IEX_INTERNAL_NAMESPACE::EaccesExc>();
test6<IEX_INTERNAL_NAMESPACE::EfaultExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotblkExc>();
test6<IEX_INTERNAL_NAMESPACE::EbusyExc>();
test6<IEX_INTERNAL_NAMESPACE::EexistExc>();
test6<IEX_INTERNAL_NAMESPACE::ExdevExc>();
test6<IEX_INTERNAL_NAMESPACE::EnodevExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotdirExc>();
test6<IEX_INTERNAL_NAMESPACE::EisdirExc>();
test6<IEX_INTERNAL_NAMESPACE::EinvalExc>();
test6<IEX_INTERNAL_NAMESPACE::EnfileExc>();
test6<IEX_INTERNAL_NAMESPACE::EmfileExc>();
test6<IEX_INTERNAL_NAMESPACE::EnottyExc>();
test6<IEX_INTERNAL_NAMESPACE::EtxtbsyExc>();
test6<IEX_INTERNAL_NAMESPACE::EfbigExc>();
test6<IEX_INTERNAL_NAMESPACE::EnospcExc>();
test6<IEX_INTERNAL_NAMESPACE::EspipeExc>();
test6<IEX_INTERNAL_NAMESPACE::ErofsExc>();
test6<IEX_INTERNAL_NAMESPACE::EmlinkExc>();
test6<IEX_INTERNAL_NAMESPACE::EpipeExc>();
test6<IEX_INTERNAL_NAMESPACE::EdomExc>();
test6<IEX_INTERNAL_NAMESPACE::ErangeExc>();
test6<IEX_INTERNAL_NAMESPACE::EnomsgExc>();
test6<IEX_INTERNAL_NAMESPACE::EidrmExc>();
test6<IEX_INTERNAL_NAMESPACE::EchrngExc>();
test6<IEX_INTERNAL_NAMESPACE::El2nsyncExc>();
test6<IEX_INTERNAL_NAMESPACE::El3hltExc>();
test6<IEX_INTERNAL_NAMESPACE::El3rstExc>();
test6<IEX_INTERNAL_NAMESPACE::ElnrngExc>();
test6<IEX_INTERNAL_NAMESPACE::EunatchExc>();
test6<IEX_INTERNAL_NAMESPACE::EnocsiExc>();
test6<IEX_INTERNAL_NAMESPACE::El2hltExc>();
test6<IEX_INTERNAL_NAMESPACE::EdeadlkExc>();
test6<IEX_INTERNAL_NAMESPACE::EnolckExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadeExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadrExc>();
test6<IEX_INTERNAL_NAMESPACE::ExfullExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoanoExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadrqcExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadsltExc>();
test6<IEX_INTERNAL_NAMESPACE::EdeadlockExc>();
test6<IEX_INTERNAL_NAMESPACE::EbfontExc>();
test6<IEX_INTERNAL_NAMESPACE::EnostrExc>();
test6<IEX_INTERNAL_NAMESPACE::EnodataExc>();
test6<IEX_INTERNAL_NAMESPACE::EtimeExc>();
test6<IEX_INTERNAL_NAMESPACE::EnosrExc>();
test6<IEX_INTERNAL_NAMESPACE::EnonetExc>();
test6<IEX_INTERNAL_NAMESPACE::EnopkgExc>();
test6<IEX_INTERNAL_NAMESPACE::EremoteExc>();
test6<IEX_INTERNAL_NAMESPACE::EnolinkExc>();
test6<IEX_INTERNAL_NAMESPACE::EadvExc>();
test6<IEX_INTERNAL_NAMESPACE::EsrmntExc>();
test6<IEX_INTERNAL_NAMESPACE::EcommExc>();
test6<IEX_INTERNAL_NAMESPACE::EprotoExc>();
test6<IEX_INTERNAL_NAMESPACE::EmultihopExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadmsgExc>();
test6<IEX_INTERNAL_NAMESPACE::EnametoolongExc>();
test6<IEX_INTERNAL_NAMESPACE::EoverflowExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotuniqExc>();
test6<IEX_INTERNAL_NAMESPACE::EbadfdExc>();
test6<IEX_INTERNAL_NAMESPACE::EremchgExc>();
test6<IEX_INTERNAL_NAMESPACE::ElibaccExc>();
test6<IEX_INTERNAL_NAMESPACE::ElibbadExc>();
test6<IEX_INTERNAL_NAMESPACE::ElibscnExc>();
test6<IEX_INTERNAL_NAMESPACE::ElibmaxExc>();
test6<IEX_INTERNAL_NAMESPACE::ElibexecExc>();
test6<IEX_INTERNAL_NAMESPACE::EilseqExc>();
test6<IEX_INTERNAL_NAMESPACE::EnosysExc>();
test6<IEX_INTERNAL_NAMESPACE::EloopExc>();
test6<IEX_INTERNAL_NAMESPACE::ErestartExc>();
test6<IEX_INTERNAL_NAMESPACE::EstrpipeExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotemptyExc>();
test6<IEX_INTERNAL_NAMESPACE::EusersExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotsockExc>();
test6<IEX_INTERNAL_NAMESPACE::EdestaddrreqExc>();
test6<IEX_INTERNAL_NAMESPACE::EmsgsizeExc>();
test6<IEX_INTERNAL_NAMESPACE::EprototypeExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoprotooptExc>();
test6<IEX_INTERNAL_NAMESPACE::EprotonosupportExc>();
test6<IEX_INTERNAL_NAMESPACE::EsocktnosupportExc>();
test6<IEX_INTERNAL_NAMESPACE::EopnotsuppExc>();
test6<IEX_INTERNAL_NAMESPACE::EpfnosupportExc>();
test6<IEX_INTERNAL_NAMESPACE::EafnosupportExc>();
test6<IEX_INTERNAL_NAMESPACE::EaddrinuseExc>();
test6<IEX_INTERNAL_NAMESPACE::EaddrnotavailExc>();
test6<IEX_INTERNAL_NAMESPACE::EnetdownExc>();
test6<IEX_INTERNAL_NAMESPACE::EnetunreachExc>();
test6<IEX_INTERNAL_NAMESPACE::EnetresetExc>();
test6<IEX_INTERNAL_NAMESPACE::EconnabortedExc>();
test6<IEX_INTERNAL_NAMESPACE::EconnresetExc>();
test6<IEX_INTERNAL_NAMESPACE::EnobufsExc>();
test6<IEX_INTERNAL_NAMESPACE::EisconnExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotconnExc>();
test6<IEX_INTERNAL_NAMESPACE::EshutdownExc>();
test6<IEX_INTERNAL_NAMESPACE::EtoomanyrefsExc>();
test6<IEX_INTERNAL_NAMESPACE::EtimedoutExc>();
test6<IEX_INTERNAL_NAMESPACE::EconnrefusedExc>();
test6<IEX_INTERNAL_NAMESPACE::EhostdownExc>();
test6<IEX_INTERNAL_NAMESPACE::EhostunreachExc>();
test6<IEX_INTERNAL_NAMESPACE::EalreadyExc>();
test6<IEX_INTERNAL_NAMESPACE::EinprogressExc>();
test6<IEX_INTERNAL_NAMESPACE::EstaleExc>();
test6<IEX_INTERNAL_NAMESPACE::EioresidExc>();
test6<IEX_INTERNAL_NAMESPACE::EucleanExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotnamExc>();
test6<IEX_INTERNAL_NAMESPACE::EnavailExc>();
test6<IEX_INTERNAL_NAMESPACE::EisnamExc>();
test6<IEX_INTERNAL_NAMESPACE::EremoteioExc>();
test6<IEX_INTERNAL_NAMESPACE::EinitExc>();
test6<IEX_INTERNAL_NAMESPACE::EremdevExc>();
test6<IEX_INTERNAL_NAMESPACE::EcanceledExc>();
test6<IEX_INTERNAL_NAMESPACE::EnolimfileExc>();
test6<IEX_INTERNAL_NAMESPACE::EproclimExc>();
test6<IEX_INTERNAL_NAMESPACE::EdisjointExc>();
test6<IEX_INTERNAL_NAMESPACE::EnologinExc>();
test6<IEX_INTERNAL_NAMESPACE::EloginlimExc>();
test6<IEX_INTERNAL_NAMESPACE::EgrouploopExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoattachExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotsupExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoattrExc>();
test6<IEX_INTERNAL_NAMESPACE::EdircorruptedExc>();
test6<IEX_INTERNAL_NAMESPACE::EdquotExc>();
test6<IEX_INTERNAL_NAMESPACE::EnfsremoteExc>();
test6<IEX_INTERNAL_NAMESPACE::EcontrollerExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotcontrollerExc>();
test6<IEX_INTERNAL_NAMESPACE::EenqueuedExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotenqueuedExc>();
test6<IEX_INTERNAL_NAMESPACE::EjoinedExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotjoinedExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoprocExc>();
test6<IEX_INTERNAL_NAMESPACE::EmustrunExc>();
test6<IEX_INTERNAL_NAMESPACE::EnotstoppedExc>();
test6<IEX_INTERNAL_NAMESPACE::EclockcpuExc>();
test6<IEX_INTERNAL_NAMESPACE::EinvalstateExc>();
test6<IEX_INTERNAL_NAMESPACE::EnoexistExc>();
test6<IEX_INTERNAL_NAMESPACE::EendofminorExc>();
test6<IEX_INTERNAL_NAMESPACE::EbufsizeExc>();
test6<IEX_INTERNAL_NAMESPACE::EemptyExc>();
test6<IEX_INTERNAL_NAMESPACE::EnointrgroupExc>();
test6<IEX_INTERNAL_NAMESPACE::EinvalmodeExc>();
test6<IEX_INTERNAL_NAMESPACE::EcantextentExc>();
test6<IEX_INTERNAL_NAMESPACE::EinvaltimeExc>();
test6<IEX_INTERNAL_NAMESPACE::EdestroyedExc>();
test6<IEX_INTERNAL_NAMESPACE::OverflowExc>();
test6<IEX_INTERNAL_NAMESPACE::UnderflowExc>();
test6<IEX_INTERNAL_NAMESPACE::DivzeroExc>();
test6<IEX_INTERNAL_NAMESPACE::InexactExc>();
test6<IEX_INTERNAL_NAMESPACE::InvalidFpOpExc>();
#endif

std::cout << "ok\n" << std::endl;
}

0 comments on commit a82c4c2

Please sign in to comment.