|
|
|
// =================================================================================================
|
|
|
|
// Copyright 2002-2007 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.
|
|
|
|
// =================================================================================================
|
|
|
|
|
|
|
|
#include "XMP_Environment.h" // ! This must be the first include!
|
|
|
|
#include "XMPCore_Impl.hpp"
|
|
|
|
|
|
|
|
#include "XMPIterator.hpp"
|
|
|
|
#include "client-glue/WXMPIterator.hpp"
|
|
|
|
|
|
|
|
#if XMP_WinBuild
|
|
|
|
# ifdef _MSC_VER
|
|
|
|
#pragma warning ( disable : 4101 ) // unreferenced local variable
|
|
|
|
#pragma warning ( disable : 4189 ) // local variable is initialized but not referenced
|
|
|
|
#pragma warning ( disable : 4800 ) // forcing value to bool 'true' or 'false' (performance warning)
|
|
|
|
#if XMP_DebugBuild
|
|
|
|
#pragma warning ( disable : 4297 ) // function assumed not to throw an exception but does
|
|
|
|
# endif
|
|
|
|
# endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// =================================================================================================
|
|
|
|
// CTor/DTor Wrappers
|
|
|
|
// ==================
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_PropCTor_1 ( XMPMetaRef xmpRef,
|
|
|
|
XMP_StringPtr schemaNS,
|
|
|
|
XMP_StringPtr propName,
|
|
|
|
XMP_OptionBits options,
|
|
|
|
WXMP_Result * wResult )
|
|
|
|
{
|
|
|
|
XMP_ENTER_WRAPPER ( "WXMPIterator_PropCTor_1" )
|
|
|
|
|
|
|
|
if ( schemaNS == 0 ) schemaNS = "";
|
|
|
|
if ( propName == 0 ) propName = "";
|
|
|
|
|
|
|
|
const XMPMeta & xmpObj = WtoXMPMeta_Ref ( xmpRef );
|
|
|
|
XMPIterator * iter = new XMPIterator ( xmpObj, schemaNS, propName, options );
|
|
|
|
++iter->clientRefs;
|
|
|
|
XMP_Assert ( iter->clientRefs == 1 );
|
|
|
|
wResult->ptrResult = XMPIteratorRef ( iter );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_TableCTor_1 ( XMP_StringPtr schemaNS,
|
|
|
|
XMP_StringPtr propName,
|
|
|
|
XMP_OptionBits options,
|
|
|
|
WXMP_Result * wResult )
|
|
|
|
{
|
|
|
|
XMP_ENTER_WRAPPER ( "WXMPIterator_TableCTor_1" )
|
|
|
|
|
|
|
|
if ( schemaNS == 0 ) schemaNS = "";
|
|
|
|
if ( propName == 0 ) propName = "";
|
|
|
|
|
|
|
|
XMPIterator * iter = new XMPIterator ( schemaNS, propName, options );
|
|
|
|
++iter->clientRefs;
|
|
|
|
XMP_Assert ( iter->clientRefs == 1 );
|
|
|
|
wResult->ptrResult = XMPIteratorRef ( iter );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_IncrementRefCount_1 ( XMPIteratorRef iterRef )
|
|
|
|
{
|
|
|
|
WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro.
|
|
|
|
XMP_ENTER_WRAPPER ( "WXMPIterator_IncrementRefCount_1" )
|
|
|
|
|
|
|
|
XMPIterator * thiz = (XMPIterator*)iterRef;
|
|
|
|
|
|
|
|
++thiz->clientRefs;
|
|
|
|
XMP_Assert ( thiz->clientRefs > 1 );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER_NO_THROW
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_DecrementRefCount_1 ( XMPIteratorRef iterRef )
|
|
|
|
{
|
|
|
|
WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro.
|
|
|
|
XMP_ENTER_WRAPPER ( "WXMPIterator_DecrementRefCount_1" )
|
|
|
|
|
|
|
|
XMPIterator * thiz = (XMPIterator*)iterRef;
|
|
|
|
|
|
|
|
XMP_Assert ( thiz->clientRefs > 0 );
|
|
|
|
--thiz->clientRefs;
|
|
|
|
if ( thiz->clientRefs <= 0 ) delete ( thiz );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER_NO_THROW
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_Unlock_1 ( XMP_OptionBits options )
|
|
|
|
{
|
|
|
|
WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro.
|
|
|
|
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPIterator_Unlock_1" )
|
|
|
|
|
|
|
|
XMPIterator::Unlock ( options );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER_NO_THROW
|
|
|
|
}
|
|
|
|
|
|
|
|
// =================================================================================================
|
|
|
|
// Class Method Wrappers
|
|
|
|
// =====================
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_Next_1 ( XMPIteratorRef iterRef,
|
|
|
|
XMP_StringPtr * schemaNS,
|
|
|
|
XMP_StringLen * nsSize,
|
|
|
|
XMP_StringPtr * propPath,
|
|
|
|
XMP_StringLen * pathSize,
|
|
|
|
XMP_StringPtr * propValue,
|
|
|
|
XMP_StringLen * valueSize,
|
|
|
|
XMP_OptionBits * propOptions,
|
|
|
|
WXMP_Result * wResult )
|
|
|
|
{
|
|
|
|
XMP_ENTER_WRAPPER ( "WXMPIterator_Next_1" )
|
|
|
|
|
|
|
|
if ( schemaNS == 0 ) schemaNS = &voidStringPtr;
|
|
|
|
if ( nsSize == 0 ) nsSize = &voidStringLen;
|
|
|
|
if ( propPath == 0 ) propPath = &voidStringPtr;
|
|
|
|
if ( pathSize == 0 ) pathSize = &voidStringLen;
|
|
|
|
if ( propValue == 0 ) propValue = &voidStringPtr;
|
|
|
|
if ( valueSize == 0 ) valueSize = &voidStringLen;
|
|
|
|
if ( propOptions == 0 ) propOptions = &voidOptionBits;
|
|
|
|
|
|
|
|
XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef );
|
|
|
|
XMP_Bool found = iter->Next ( schemaNS, nsSize, propPath, pathSize, propValue, valueSize, propOptions );
|
|
|
|
wResult->int32Result = found;
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER_KEEP_LOCK ( found )
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPIterator_Skip_1 ( XMPIteratorRef iterRef,
|
|
|
|
XMP_OptionBits options,
|
|
|
|
WXMP_Result * wResult )
|
|
|
|
{
|
|
|
|
XMP_ENTER_WRAPPER ( "WXMPIterator_Skip_1" )
|
|
|
|
|
|
|
|
XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef );
|
|
|
|
iter->Skip ( options );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER
|
|
|
|
}
|
|
|
|
|
|
|
|
// -------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void
|
|
|
|
WXMPUtils_UnlockIter_1 ( XMPIteratorRef iterRef,
|
|
|
|
XMP_OptionBits options )
|
|
|
|
{
|
|
|
|
WXMP_Result * wResult = &void_wResult; // ! Needed to "fool" the EnterWrapper macro.
|
|
|
|
XMP_ENTER_WRAPPER_NO_LOCK ( "WXMPUtils_UnlockIter_1" )
|
|
|
|
|
|
|
|
XMPIterator * iter = WtoXMPIterator_Ptr ( iterRef );
|
|
|
|
iter->UnlockIter ( options );
|
|
|
|
|
|
|
|
XMP_EXIT_WRAPPER_NO_THROW
|
|
|
|
}
|
|
|
|
|
|
|
|
// =================================================================================================
|
|
|
|
|
|
|
|
#if __cplusplus
|
|
|
|
} /* extern "C" */
|
|
|
|
#endif
|