summaryrefslogtreecommitdiff
path: root/public/include/XMPCommon/source/IError.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'public/include/XMPCommon/source/IError.cpp')
-rw-r--r--public/include/XMPCommon/source/IError.cpp207
1 files changed, 207 insertions, 0 deletions
diff --git a/public/include/XMPCommon/source/IError.cpp b/public/include/XMPCommon/source/IError.cpp
new file mode 100644
index 0000000..8f763d3
--- /dev/null
+++ b/public/include/XMPCommon/source/IError.cpp
@@ -0,0 +1,207 @@
+// =================================================================================================
+// ADOBE SYSTEMS INCORPORATED
+// Copyright 2015 Adobe Systems Incorporated
+// All Rights Reserved
+//
+// NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
+// of the Adobe license agreement accompanying it.
+// =================================================================================================
+
+#define FRIEND_CLASS_DECLARATION() friend class IErrorProxy;
+
+#include "XMPCommon/Interfaces/IError.h"
+
+#if !BUILDING_XMPCOMMON_LIB && !SOURCE_COMPILING_XMP_ALL
+
+#include "XMPCommon/Utilities/TWrapperFunctions.h"
+#include "XMPCommon/Interfaces/IUTF8String.h"
+#include "XMPCommon/Interfaces/IObjectFactory.h"
+
+#include <assert.h>
+
+namespace AdobeXMPCommon {
+ class IErrorProxy
+ : public virtual IError
+ {
+ private:
+ pIError mRawPtr;
+
+ public:
+ IErrorProxy( pIError ptr )
+ : mRawPtr( ptr )
+ {
+ mRawPtr->Acquire();
+ }
+
+ ~IErrorProxy() __NOTHROW__ { mRawPtr->Release(); }
+
+ pIError APICALL GetActualIError() __NOTHROW__ { return mRawPtr; }
+
+ void APICALL Acquire() const __NOTHROW__ { assert( false ); }
+
+ void APICALL Release() const __NOTHROW__ { assert( false ); }
+
+ pvoid APICALL GetInterfacePointer( uint64 interfaceID, uint32 interfaceVersion ) {
+ return CallSafeFunction<
+ IVersionable, pvoid, pvoid, uint64, uint32
+ >( mRawPtr, &IVersionable::getInterfacePointer, interfaceID, interfaceVersion );
+ }
+
+ pvoid APICALL getInterfacePointer( uint64 interfaceID, uint32 interfaceVersion, pcIError_base & error ) __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getInterfacePointer( interfaceID, interfaceVersion, error );
+ }
+
+ eErrorCode APICALL GetCode() const {
+ return CallConstSafeFunction< IError, eErrorCode, uint32 >(
+ mRawPtr, &IError::getCode );
+ }
+
+ uint32 APICALL getCode( pcIError_base & error ) const __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getCode( error );
+ }
+
+ eErrorDomain APICALL GetDomain() const {
+ return CallConstSafeFunction< IError, eErrorDomain, uint32 >(
+ mRawPtr, &IError::getDomain );
+ }
+
+ uint32 APICALL getDomain( pcIError_base & error ) const __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getDomain( error );
+ }
+
+ eErrorSeverity APICALL GetSeverity() const {
+ return CallConstSafeFunction< IError, eErrorSeverity, uint32 >(
+ mRawPtr, &IError::getSeverity );
+ }
+
+ uint32 APICALL getSeverity( pcIError_base & error ) const __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getSeverity( error );
+ }
+
+ spcIUTF8String APICALL GetMessage() const {
+ return CallConstSafeFunctionReturningPointer< IError, pcIUTF8String_base, const IUTF8String >(
+ mRawPtr, &IError::getMessage );
+ }
+
+ pcIUTF8String_base APICALL getMessage( pcIError_base & error ) const __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getMessage( error );
+ }
+
+ spcIUTF8String APICALL GetLocation() const {
+ return CallConstSafeFunctionReturningPointer< IError, pcIUTF8String_base, const IUTF8String >(
+ mRawPtr, &IError::getLocation );
+ }
+
+ pcIUTF8String_base APICALL getLocation( pcIError_base & error ) const __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getLocation( error );
+ }
+
+ spcIUTF8String APICALL GetParameter( sizet index ) const {
+ return CallConstSafeFunctionReturningPointer< IError, pcIUTF8String_base, const IUTF8String, sizet >(
+ mRawPtr, &IError::getParameter, index );
+ }
+
+ pcIUTF8String_base APICALL getParameter( sizet index, pcIError_base & error ) const __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getParameter( index, error );
+ }
+
+ sizet APICALL GetParametersCount() const __NOTHROW__ {
+ return mRawPtr->GetParametersCount();
+ }
+
+ spIError APICALL GetNextError() {
+ pcIError_base error( NULL );
+ pIError_base ptr = mRawPtr->getNextError( error );
+ if ( error ) throw MakeShared( error );
+ return MakeShared( ptr );
+ }
+
+ pIError_base APICALL getNextError( pcIError_base & error ) __NOTHROW__ {
+ assert( false );
+ return mRawPtr->getNextError( error );
+ }
+
+ spIError APICALL SetNextError( const spIError & nextError ) {
+ pcIError_base error( NULL );
+ pIError_base ptr = mRawPtr->setNextError( nextError ? nextError->GetActualIError() : NULL, error );
+ if ( error ) throw MakeShared( error );
+ return MakeShared( ptr );
+ }
+
+ pIError_base APICALL setNextError( pIError_base nextError, pcIError_base & error ) __NOTHROW__ {
+ assert( false );
+ return mRawPtr->setNextError( nextError, error );
+ }
+
+ void APICALL SetMessage( const char * message, sizet len ) __NOTHROW__ {
+ mRawPtr->SetMessage( message, len );
+ }
+
+ void APICALL SetLocation( const char * fileName, sizet lineNumber ) __NOTHROW__ {
+ mRawPtr->SetLocation( fileName, lineNumber );
+ }
+
+ void APICALL AppendParameter( const char * parameter, sizet len ) __NOTHROW__ {
+ mRawPtr->AppendParameter( parameter, len );
+ }
+
+ void APICALL AppendParameter( void * addressParameter ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( addressParameter );
+ }
+
+ void APICALL AppendParameter( const uint32 & integerValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( integerValue );
+ }
+
+ void APICALL AppendParameter( const uint64 & integerValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( integerValue );
+ }
+
+ void APICALL AppendParameter( const int32 & integerValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( integerValue );
+ }
+
+ void APICALL AppendParameter( const int64 & integerValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( integerValue );
+ }
+
+ void APICALL AppendParameter( const float & floatValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( floatValue );
+ }
+
+ void APICALL AppendParameter( const double & doubleValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( doubleValue );
+ }
+
+ void APICALL AppendParameter( bool booleanValue ) __NOTHROW__ {
+ return mRawPtr->AppendParameter( booleanValue );
+ }
+
+ AdobeXMPCommon_Int::pISharedObject_I APICALL GetISharedObject_I() __NOTHROW__ {
+ return mRawPtr->GetISharedObject_I();
+ }
+
+ };
+
+ spIError IError_v1::CreateError( pIObjectFactory objFactory, eErrorDomain errDomain, eErrorCode errCode, eErrorSeverity errSeverity ) {
+ pIError_base temp = CallSafeFunction< IObjectFactory_base, pIError_base, pIError_base, uint32, uint32, uint32 >(
+ objFactory, &IObjectFactory_base::CreateError, static_cast< uint32 >( errDomain ),
+ static_cast< uint32 >( errCode ), static_cast< uint32 >( errSeverity ) );
+ return MakeShared( temp );
+ }
+
+ spIError IError_v1::MakeShared( pIError_base ptr ) {
+ if ( !ptr ) return spIError();
+ pIError p = IError::GetInterfaceVersion() > 1 ? ptr->GetInterfacePointer<IError>() : ptr;
+ return shared_ptr< IError >( new IErrorProxy( p ) );
+ }
+}
+
+#endif // !BUILDING_XMPCOMMON_LIB && !SOURCE_COMPILING_XMP_ALL