summaryrefslogtreecommitdiff
path: root/cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2001-10-14 22:07:51 +0000
committerMarc Laukien <marc@zeroc.com>2001-10-14 22:07:51 +0000
commite3391e10721a7bbe8c867d1c798fcf6d24a67308 (patch)
treedbab6b044338c6e7a920eb72e8c9d3b4cbd07f56 /cpp
parentfixes (diff)
downloadice-e3391e10721a7bbe8c867d1c798fcf6d24a67308.tar.bz2
ice-e3391e10721a7bbe8c867d1c798fcf6d24a67308.tar.xz
ice-e3391e10721a7bbe8c867d1c798fcf6d24a67308.zip
win and other fixes
Diffstat (limited to 'cpp')
-rw-r--r--cpp/include/Ice/Outgoing.h9
-rw-r--r--cpp/include/Ice/Proxy.h9
-rw-r--r--cpp/include/IceUtil/Handle.h2
-rw-r--r--cpp/include/Slice/CPlusPlusUtil.h26
-rw-r--r--cpp/src/Ice/Collector.cpp32
-rw-r--r--cpp/src/Ice/Collector.h13
-rw-r--r--cpp/src/Ice/Emitter.cpp14
-rw-r--r--cpp/src/Ice/Emitter.h9
-rw-r--r--cpp/src/Ice/EventHandler.h9
-rw-r--r--cpp/src/Ice/Incoming.cpp14
-rw-r--r--cpp/src/Ice/Outgoing.cpp6
-rw-r--r--cpp/src/Ice/ThreadPool.cpp6
-rw-r--r--cpp/src/slice2cpp/Gen.cpp36
-rw-r--r--cpp/src/slice2freeze/slice2freeze.dsp8
-rw-r--r--cpp/test/Ice/exceptions/AllTests.cpp5
-rw-r--r--cpp/test/Ice/operations/operationsCOL.dsp8
16 files changed, 98 insertions, 108 deletions
diff --git a/cpp/include/Ice/Outgoing.h b/cpp/include/Ice/Outgoing.h
index 16791a10441..43a005ff43d 100644
--- a/cpp/include/Ice/Outgoing.h
+++ b/cpp/include/Ice/Outgoing.h
@@ -15,17 +15,10 @@
#include <Ice/ReferenceF.h>
#include <Ice/BasicStream.h>
-namespace IceUtil
-{
-
-class Exception;
-
-}
-
namespace Ice
{
-typedef IceUtil::Exception LocalException;
+class LocalException;
}
diff --git a/cpp/include/Ice/Proxy.h b/cpp/include/Ice/Proxy.h
index 075098bb082..f2efbdc7647 100644
--- a/cpp/include/Ice/Proxy.h
+++ b/cpp/include/Ice/Proxy.h
@@ -19,17 +19,10 @@
#include <Ice/ObjectAdapterF.h>
#include <Ice/ReferenceF.h>
-namespace IceUtil
-{
-
-class Exception;
-
-}
-
namespace Ice
{
-typedef IceUtil::Exception LocalException;
+class LocalException;
class LocationForward;
};
diff --git a/cpp/include/IceUtil/Handle.h b/cpp/include/IceUtil/Handle.h
index 6330d7f3d71..4b974b8099c 100644
--- a/cpp/include/IceUtil/Handle.h
+++ b/cpp/include/IceUtil/Handle.h
@@ -45,7 +45,7 @@ public:
return "operation call on null handle";
}
- virtual NullHandleException* _clone() const
+ virtual Exception* _clone() const
{
return new NullHandleException(*this);
}
diff --git a/cpp/include/Slice/CPlusPlusUtil.h b/cpp/include/Slice/CPlusPlusUtil.h
index e81f32f0122..a313b34b76c 100644
--- a/cpp/include/Slice/CPlusPlusUtil.h
+++ b/cpp/include/Slice/CPlusPlusUtil.h
@@ -19,24 +19,24 @@ namespace Slice
struct ToIfdef
{
- char operator()(char);
+ SLICE_API char operator()(char);
};
-std::string changeInclude(const std::string&, const std::vector<std::string>&);
-void printHeader(Output&);
-void printVersionCheck(Output&);
-void printDllExportStuff(Output&, const std::string&);
+SLICE_API std::string changeInclude(const std::string&, const std::vector<std::string>&);
+SLICE_API void printHeader(Output&);
+SLICE_API void printVersionCheck(Output&);
+SLICE_API void printDllExportStuff(Output&, const std::string&);
-std::string typeToString(const TypePtr&);
-std::string returnTypeToString(const TypePtr&);
-std::string inputTypeToString(const TypePtr&);
-std::string outputTypeToString(const TypePtr&);
+SLICE_API std::string typeToString(const TypePtr&);
+SLICE_API std::string returnTypeToString(const TypePtr&);
+SLICE_API std::string inputTypeToString(const TypePtr&);
+SLICE_API std::string outputTypeToString(const TypePtr&);
-void writeMarshalUnmarshalCode(Output&, const TypePtr&, const std::string&, bool, const std::string& = "",
+SLICE_API void writeMarshalUnmarshalCode(Output&, const TypePtr&, const std::string&, bool, const std::string& = "",
bool = true);
-void writeMarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&);
-void writeUnmarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&);
-void writeAllocateCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&);
+SLICE_API void writeMarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&);
+SLICE_API void writeUnmarshalCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&);
+SLICE_API void writeAllocateCode(Output&, const std::list<std::pair<TypePtr, std::string> >&, const TypePtr&);
}
diff --git a/cpp/src/Ice/Collector.cpp b/cpp/src/Ice/Collector.cpp
index 9313d044540..38420dde166 100644
--- a/cpp/src/Ice/Collector.cpp
+++ b/cpp/src/Ice/Collector.cpp
@@ -187,12 +187,12 @@ IceInternal::Collector::message(BasicStream& stream)
}
}
}
- catch(const ConnectionLostException&)
+ catch (const ConnectionLostException&)
{
setState(StateClosed); // Connection drop from client is ok
return;
}
- catch(const Exception& ex)
+ catch (const LocalException& ex)
{
warning(ex);
setState(StateClosed);
@@ -213,11 +213,15 @@ IceInternal::Collector::message(BasicStream& stream)
stream.swap(*in.is());
}
}
- catch(const Exception& ex)
+ catch (const Exception& ex)
{
JTCSyncT<JTCRecursiveMutex> sync(*this);
warning(ex);
}
+ catch (...)
+ {
+ assert(false); // Should not happen
+ }
}
while (batch && stream.i < stream.b.end());
}
@@ -253,12 +257,12 @@ IceInternal::Collector::message(BasicStream& stream)
closeConnection();
}
}
- catch(const ConnectionLostException&)
+ catch (const ConnectionLostException&)
{
setState(StateClosed); // Connection drop from client is ok
return;
}
- catch(const Exception& ex)
+ catch (const LocalException& ex)
{
warning(ex);
setState(StateClosed);
@@ -315,7 +319,7 @@ IceInternal::Collector::tryDestroy()
{
setState(StateClosing);
}
- catch(...)
+ catch (...)
{
unlock();
throw;
@@ -399,12 +403,12 @@ IceInternal::Collector::setState(State state)
{
closeConnection();
}
- catch(const ConnectionLostException&)
+ catch (const ConnectionLostException&)
{
state = StateClosed;
setState(state); // Connection drop from client is ok
}
- catch(const Exception& ex)
+ catch (const LocalException& ex)
{
warning(ex);
state = StateClosed;
@@ -458,7 +462,7 @@ IceInternal::Collector::closeConnection()
}
void
-IceInternal::Collector::warning(const LocalException& ex) const
+IceInternal::Collector::warning(const Exception& ex) const
{
if (_warnAboutExceptions)
{
@@ -555,11 +559,11 @@ IceInternal::CollectorFactory::message(BasicStream&)
collector->activate();
_collectors.push_back(collector);
}
- catch(const TimeoutException&)
+ catch (const TimeoutException&)
{
// Ignore timeouts
}
- catch(const Exception& ex)
+ catch (const LocalException& ex)
{
warning(ex);
destroy();
@@ -628,7 +632,7 @@ IceInternal::CollectorFactory::CollectorFactory(const InstancePtr& instance,
_threadPool = _instance->threadPool();
}
}
- catch(...)
+ catch (...)
{
setState(StateClosed);
throw;
@@ -725,7 +729,7 @@ IceInternal::CollectorFactory::clearBacklog()
CollectorPtr collector = new Collector(_instance, _adapter, transceiver, _endpoint);
collector->destroy();
}
- catch(const Exception&)
+ catch (const Exception&)
{
break;
}
@@ -733,7 +737,7 @@ IceInternal::CollectorFactory::clearBacklog()
}
void
-IceInternal::CollectorFactory::warning(const LocalException& ex) const
+IceInternal::CollectorFactory::warning(const Exception& ex) const
{
if (_warnAboutExceptions)
{
diff --git a/cpp/src/Ice/Collector.h b/cpp/src/Ice/Collector.h
index 891afdccae8..38b8cede96e 100644
--- a/cpp/src/Ice/Collector.h
+++ b/cpp/src/Ice/Collector.h
@@ -23,17 +23,10 @@
#include <Ice/EventHandler.h>
#include <list>
-namespace IceUtil
-{
-
-class Exception;
-
-}
-
namespace Ice
{
-typedef IceUtil::Exception LocalException;
+class LocalException;
class ObjectAdapterI;
}
@@ -81,7 +74,7 @@ private:
void setState(State);
void closeConnection();
- void warning(const ::Ice::LocalException&) const;
+ void warning(const ::Ice::Exception&) const;
::Ice::ObjectAdapterPtr _adapter;
TransceiverPtr _transceiver;
@@ -132,7 +125,7 @@ private:
void setState(State);
void clearBacklog();
- void warning(const ::Ice::LocalException&) const;
+ void warning(const ::Ice::Exception&) const;
::Ice::ObjectAdapterPtr _adapter;
AcceptorPtr _acceptor;
diff --git a/cpp/src/Ice/Emitter.cpp b/cpp/src/Ice/Emitter.cpp
index a157323bc4a..34babb67a98 100644
--- a/cpp/src/Ice/Emitter.cpp
+++ b/cpp/src/Ice/Emitter.cpp
@@ -96,7 +96,7 @@ IceInternal::Emitter::sendRequest(Outgoing* out, bool oneway)
traceRequest("sending request", *os, _logger, _traceLevels);
_transceiver->write(*os, _endpoint->timeout());
}
- catch(const Exception& ex)
+ catch(const LocalException& ex)
{
setState(StateClosed, ex);
ex._throw();
@@ -203,7 +203,7 @@ IceInternal::Emitter::flushBatchRequest()
_batchStream.swap(dummy);
assert(_batchStream.b.empty());
}
- catch(const Exception& ex)
+ catch(const LocalException& ex)
{
setState(StateClosed, ex);
ex._throw();
@@ -307,7 +307,7 @@ IceInternal::Emitter::message(BasicStream& stream)
}
}
}
- catch(const Exception& ex)
+ catch(const LocalException& ex)
{
setState(StateClosed, ex);
return;
@@ -405,7 +405,7 @@ IceInternal::Emitter::setState(State state, const LocalException& ex)
if (!_exception.get())
{
- _exception = auto_ptr<LocalException>(ex._clone());
+ _exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone()));
}
for (std::map< ::Ice::Int, Outgoing*>::iterator p = _requests.begin(); p != _requests.end(); ++p)
@@ -487,15 +487,15 @@ IceInternal::EmitterFactory::create(const vector<EndpointPtr>& endpoints)
}
catch (const SocketException& ex)
{
- exception = auto_ptr<LocalException>(ex._clone());
+ exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone()));
}
catch (const DNSException& ex)
{
- exception = auto_ptr<LocalException>(ex._clone());
+ exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone()));
}
catch (const TimeoutException& ex)
{
- exception = auto_ptr<LocalException>(ex._clone());
+ exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone()));
}
++q;
diff --git a/cpp/src/Ice/Emitter.h b/cpp/src/Ice/Emitter.h
index d12c5330fc5..9330e7010bb 100644
--- a/cpp/src/Ice/Emitter.h
+++ b/cpp/src/Ice/Emitter.h
@@ -21,17 +21,10 @@
#include <Ice/LoggerF.h>
#include <Ice/EventHandler.h>
-namespace IceUtil
-{
-
-class Exception;
-
-}
-
namespace Ice
{
-typedef IceUtil::Exception LocalException;
+class LocalException;
}
diff --git a/cpp/src/Ice/EventHandler.h b/cpp/src/Ice/EventHandler.h
index 3b788daaee7..14190238004 100644
--- a/cpp/src/Ice/EventHandler.h
+++ b/cpp/src/Ice/EventHandler.h
@@ -17,17 +17,10 @@
#include <Ice/ThreadPoolF.h>
#include <Ice/BasicStream.h>
-namespace IceUtil
-{
-
-class Exception;
-
-}
-
namespace Ice
{
-typedef IceUtil::Exception LocalException;
+class LocalException;
}
diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp
index c08382c2ed8..30e04169f23 100644
--- a/cpp/src/Ice/Incoming.cpp
+++ b/cpp/src/Ice/Incoming.cpp
@@ -86,7 +86,7 @@ IceInternal::Incoming::invoke(BasicStream& is)
locator->finished(_adapter, identity, servant, operation, cookie);
}
}
- catch(const LocationForward& p)
+ catch (const LocationForward& ex)
{
if (locator && servant)
{
@@ -94,10 +94,10 @@ IceInternal::Incoming::invoke(BasicStream& is)
}
_os.b.resize(statusPos);
_os.write(static_cast<Byte>(DispatchLocationForward));
- _os.write(p._prx);
+ _os.write(ex._prx);
return;
}
- catch(const LocalException&)
+ catch (const LocalException& ex)
{
if (locator && servant)
{
@@ -105,9 +105,9 @@ IceInternal::Incoming::invoke(BasicStream& is)
}
_os.b.resize(statusPos);
_os.write(static_cast<Byte>(DispatchUnknownLocalException));
- throw;
+ ex._throw();
}
- catch(const UserException&)
+ catch (const UserException& ex)
{
if (locator && servant)
{
@@ -115,9 +115,9 @@ IceInternal::Incoming::invoke(BasicStream& is)
}
_os.b.resize(statusPos);
_os.write(static_cast<Byte>(DispatchUnknownUserException));
- throw;
+ ex._throw();
}
- catch(...)
+ catch (...)
{
if (locator && servant)
{
diff --git a/cpp/src/Ice/Outgoing.cpp b/cpp/src/Ice/Outgoing.cpp
index 2974197d876..f48b4b0c4d8 100644
--- a/cpp/src/Ice/Outgoing.cpp
+++ b/cpp/src/Ice/Outgoing.cpp
@@ -20,12 +20,12 @@ using namespace IceInternal;
IceInternal::NonRepeatable::NonRepeatable(const NonRepeatable& ex)
{
- _ex = auto_ptr<LocalException>(ex.get()->_clone());
+ _ex = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex.get()->_clone()));
}
IceInternal::NonRepeatable::NonRepeatable(const ::Ice::LocalException& ex)
{
- _ex = auto_ptr<LocalException>(ex._clone());
+ _ex = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone()));
}
const ::Ice::LocalException*
@@ -265,7 +265,7 @@ IceInternal::Outgoing::finished(const LocalException& ex)
if (_state == StateInProgress)
{
_state = StateLocalException;
- _exception = auto_ptr<LocalException>(ex._clone());
+ _exception = auto_ptr<LocalException>(dynamic_cast<LocalException*>(ex._clone()));
notify();
}
}
diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp
index dbc24fa904c..533a7e8e61b 100644
--- a/cpp/src/Ice/ThreadPool.cpp
+++ b/cpp/src/Ice/ThreadPool.cpp
@@ -462,7 +462,7 @@ IceInternal::ThreadPool::run()
goto repeatSelect;
}
}
- catch (const LocalException& ex)
+ catch (const LocalException&)
{
// Ignore exeptions.
}
@@ -564,7 +564,7 @@ IceInternal::ThreadPool::EventHandlerThread::run()
{
_pool->run();
}
- catch (const LocalException& ex)
+ catch (const Exception& ex)
{
ostringstream s;
s << "exception in thread pool:\n" << ex;
@@ -573,7 +573,7 @@ IceInternal::ThreadPool::EventHandlerThread::run()
catch (const JTCException& ex)
{
ostringstream s;
- s << "exception in thread pool:\n" << ex;
+ s << "JThreads/C++ exception in thread pool:\n" << ex;
_pool->_instance->logger()->error(s.str());
}
catch (...)
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index e61c0f838d9..8e3ab81235b 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -200,7 +200,7 @@ Slice::Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p)
string scoped = p->scoped();
ExceptionPtr base = p->base();
- H << sp << nl << "struct " << name << " : ";
+ H << sp << nl << "class " << name << " : ";
H.useCurrentPosAsIndent();
if (!base)
{
@@ -220,6 +220,10 @@ Slice::Gen::TypesVisitor::visitExceptionStart(const ExceptionPtr& p)
H.restoreIndent();
H << sb;
+ H.dec();
+ H << nl << "public: ";
+ H.inc();
+
if (p->isLocal())
{
H << nl << _dllExport << name << "(const char*, int);";
@@ -1139,8 +1143,6 @@ Slice::Gen::DelegateMVisitor::visitOperation(const OperationPtr& p)
C << sb;
if (!throws.empty())
{
- // TODO: pretty hacky, should be statically initialized, once
- // per operation.
ExceptionList::const_iterator r;
C << nl << "static const char* __throws[] =";
C << sb;
@@ -1341,6 +1343,8 @@ Slice::Gen::DelegateDVisitor::visitOperation(const OperationPtr& p)
C << sb;
C << nl << "throw ::Ice::OperationNotExistException(__FILE__, __LINE__);";
C << eb;
+ C << nl << "try";
+ C << sb;
C << nl;
if (ret)
{
@@ -1348,6 +1352,30 @@ Slice::Gen::DelegateDVisitor::visitOperation(const OperationPtr& p)
}
C << "__servant->" << name << args << ';';
C << eb;
+ ExceptionList throws = p->throws();
+ throws.sort();
+ throws.unique();
+ ExceptionList::const_iterator r;
+ for (r = throws.begin(); r != throws.end(); ++r)
+ {
+ C << nl << "catch (const " << (*r)->scoped() << "&)";
+ C << sb;
+ C << nl << "throw;";
+ C << eb;
+ }
+ C << nl << "catch (const ::Ice::LocalException&)";
+ C << sb;
+ C << nl << "throw ::Ice::UnknownLocalException(__FILE__, __LINE__);";
+ C << eb;
+ C << nl << "catch (const ::Ice::UserException&)";
+ C << sb;
+ C << nl << "throw ::Ice::UnknownUserException(__FILE__, __LINE__);";
+ C << eb;
+ C << nl << "catch (...)";
+ C << sb;
+ C << nl << "throw ::Ice::UnknownException(__FILE__, __LINE__);";
+ C << eb;
+ C << eb;
}
Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const string& dllExport) :
@@ -1864,7 +1892,7 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p)
ExceptionList::const_iterator r;
for (r = throws.begin(); r != throws.end(); ++r)
{
- C << nl << "catch(const " << (*r)->scoped() << "& __ex)";
+ C << nl << "catch (const " << (*r)->scoped() << "& __ex)";
C << sb;
C << nl << "__os->write(__ex);";
C << nl << "return ::IceInternal::DispatchUserException;";
diff --git a/cpp/src/slice2freeze/slice2freeze.dsp b/cpp/src/slice2freeze/slice2freeze.dsp
index 121436a9f2e..4f19630e7dc 100644
--- a/cpp/src/slice2freeze/slice2freeze.dsp
+++ b/cpp/src/slice2freeze/slice2freeze.dsp
@@ -89,20 +89,12 @@ LINK32=link.exe
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
-SOURCE=.\GenUtil.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\Main.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
-# Begin Source File
-
-SOURCE=.\GenUtil.h
-# End Source File
# End Group
# Begin Group "Resource Files"
diff --git a/cpp/test/Ice/exceptions/AllTests.cpp b/cpp/test/Ice/exceptions/AllTests.cpp
index e19b456ecab..041b3bbe147 100644
--- a/cpp/test/Ice/exceptions/AllTests.cpp
+++ b/cpp/test/Ice/exceptions/AllTests.cpp
@@ -284,6 +284,11 @@ allTests(const Ice::CommunicatorPtr& communicator)
catch (const Ice::UnknownUserException&)
{
}
+ catch (const Ice::Exception& ex)
+ {
+ cout << ex << endl;
+ test(false);
+ }
catch (...)
{
test(false);
diff --git a/cpp/test/Ice/operations/operationsCOL.dsp b/cpp/test/Ice/operations/operationsCOL.dsp
index 26652098a96..70aa1a5f2d8 100644
--- a/cpp/test/Ice/operations/operationsCOL.dsp
+++ b/cpp/test/Ice/operations/operationsCOL.dsp
@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /MD /Ze /W3 /GR /GX /O2 /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
# SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
@@ -67,7 +67,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
-# ADD CPP /nologo /MDd /Ze /W3 /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /Zi /Od /I "." /I "../../../include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /GZ /c
# SUBTRACT CPP /Fr
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
@@ -97,10 +97,6 @@ SOURCE=.\Collocated.cpp
# End Source File
# Begin Source File
-SOURCE=.\Exceptions.cpp
-# End Source File
-# Begin Source File
-
SOURCE=.\Test.cpp
# End Source File
# Begin Source File