summaryrefslogtreecommitdiff
path: root/XMPCommon/Interfaces/BaseInterfaces/IConfigurable_I.h
diff options
context:
space:
mode:
Diffstat (limited to 'XMPCommon/Interfaces/BaseInterfaces/IConfigurable_I.h')
-rw-r--r--XMPCommon/Interfaces/BaseInterfaces/IConfigurable_I.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/XMPCommon/Interfaces/BaseInterfaces/IConfigurable_I.h b/XMPCommon/Interfaces/BaseInterfaces/IConfigurable_I.h
new file mode 100644
index 0000000..ef52ec8
--- /dev/null
+++ b/XMPCommon/Interfaces/BaseInterfaces/IConfigurable_I.h
@@ -0,0 +1,129 @@
+#ifndef IConfigurable_I_h__
+#define IConfigurable_I_h__ 1
+
+// =================================================================================================
+// ADOBE SYSTEMS INCORPORATED
+// Copyright 2014 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 "XMPCommon/XMPCommonFwdDeclarations_I.h"
+#include "XMPCommon/Interfaces/BaseInterfaces/IConfigurable.h"
+#include "XMPCommon/XMPCommonErrorCodes.h"
+#include <map>
+
+namespace XMP_COMPONENT_INT_NAMESPACE {
+
+ class IConfigurable_I
+ : public virtual IConfigurable
+ {
+ public:
+
+ typedef struct std::pair< eDataType, CombinedDataValue > TypeValuePair;
+ typedef std::pair< uint64, TypeValuePair > KeyValuePair;
+ typedef std::pair< uint64, eDataType > KeyValueTypePair;
+
+ //!
+ //! Function to validate a key.
+ //! \param[in] key an unsigned 64 bit number indicating the key of the parameter.
+ //! If an object only supports fixed number of keys, it can override this function and
+ //! return error for an unsupported key, otherwise return #kCECNone.
+ //!
+ virtual eConfigurableErrorCode APICALL ValidateKey( const uint64 & key ) const { return kCECNone; }
+
+
+ //!
+ //! Function to modify the key.
+ //! \param[in] key an unsigned 64 bit number indicating the key of the parameter.
+ //! If an object supports eight character case in-sensitive keys, it can override this function
+ //! and convert them to lower case.
+ //! \return the new key.
+ //!
+ virtual uint64 APICALL ModifyKey( const uint64 & key ) const { return key; }
+
+ //!
+ //! Function to validate the value and its type for a particular key.
+ //! \param[in] key an unsigned 64 bit number indicating the key of the parameter.
+ //! \param[in] type an eDataType enum value indicating the type of data associated with the key.
+ //! \param[in] value indicates the value of the data.
+ //! If an object supports a key with only a fixed type or it wants to constrain the values a key
+ //! can hold, it can override this function for such operations. Returns an error code in case
+ //! of an error condition, otherwise return kCECNone.
+ //!
+ virtual eConfigurableErrorCode APICALL ValidateValue( const uint64 & key, eDataType type, const CombinedDataValue & value ) const = 0;
+
+ //!
+ //! Allows keys to be treated as case insensitive.
+ //! \param[in] flag a boolean value if set to true makes key as case insensitive
+ //!
+ virtual void APICALL TreatKeyAsCaseInsensitive( bool flag = true ) = 0;
+
+ //!
+ //! Allows type of value to be changed later on.
+ //! \param[in] flag a boolean value if set to true allows even the type of data associated with the key to be changed later on.
+ //!
+ virtual void APICALL AllowDifferentValueTypesForExistingEntries( bool flag = true ) = 0;
+
+ //!
+ //! Restrict to have only specific keys.
+ //! \param[in] keysTable an array of uint64 values containing all the keys.
+ //! \param[in] sizeofTable number of entries in the array.
+ //!
+ virtual void APICALL SetAllowedKeys( uint64 * keysTable, sizet sizeOfTable ) = 0;
+
+ //!
+ //! Restrict data type of particular keys.
+ //! \param[in] keyValueTypePairTable an array of KeyValueTypePair containing all the allowed dataTypes for the keys.
+ //! \param[in] sizeOfTable number of entries in the array.
+ //!
+ virtual void APICALL SetAllowedValueTypesForKeys( KeyValueTypePair * keyValueTypePairTable, sizet sizeOfTable ) = 0;
+
+ //!
+ //! Function to get access to the mutex object.
+ //!
+ virtual spISharedMutex APICALL GetMutex() const = 0;
+
+ virtual void APICALL SetParameter( const uint64 & key, bool value );
+ virtual void APICALL SetParameter( const uint64 & key, uint64 value );
+ virtual void APICALL SetParameter( const uint64 & key, int64 value );
+ virtual void APICALL SetParameter( const uint64 & key, double value );
+ virtual void APICALL SetParameter( const uint64 & key, char value );
+ virtual void APICALL SetParameter( const uint64 & key, const char * value );
+ virtual void APICALL SetParameter( const uint64 & key, const void * value );
+
+ virtual bool APICALL GetParameter( const uint64 & key, bool & value ) const;
+ virtual bool APICALL GetParameter( const uint64 & key, uint64 & value ) const;
+ virtual bool APICALL GetParameter( const uint64 & key, int64 & value ) const;
+ virtual bool APICALL GetParameter( const uint64 & key, double & value ) const;
+ virtual bool APICALL GetParameter( const uint64 & key, char & value ) const;
+ virtual bool APICALL GetParameter( const uint64 & key, const char * & value ) const;
+ virtual bool APICALL GetParameter( const uint64 & key, const void * & value ) const;
+
+ protected:
+
+ //!
+ //! protected Virtual Destructor
+ //!
+ virtual ~IConfigurable_I() __NOTHROW__ {};
+
+ virtual void APICALL setParameter( const uint64 & key, uint32 dataType, const CombinedDataValue & dataValue, pcIError_base & error ) __NOTHROW__;
+ virtual uint32 APICALL removeParameter( const uint64 & key, pcIError_base & error ) __NOTHROW__;
+ virtual uint32 APICALL getParameter( const uint64 & key, uint32 dataType, CombinedDataValue & value, pcIError_base & error ) const __NOTHROW__;
+ virtual void APICALL getAllParameters( uint64 * array, sizet count ) const __NOTHROW__;
+ virtual uint32 APICALL getDataType( const uint64 & key, pcIError_base & error ) const __NOTHROW__;
+
+ virtual void APICALL SetParameter( const uint64 & key, eDataType type, const CombinedDataValue & value ) = 0;
+ virtual bool APICALL GetParameter( const uint64 & key, eDataType type, CombinedDataValue & value ) const = 0;
+
+ #ifdef FRIEND_CLASS_DECLARATION
+ FRIEND_CLASS_DECLARATION();
+ #endif
+ REQ_FRIEND_CLASS_DECLARATION();
+ };
+
+}
+
+#endif // IConfigurable_I_h__