metadataengine/client/src/mdepropertydef.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:34:07 +0200
changeset 0 c53acadfccc6
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:  
*
*/

#include "mdepropertydef.h"

#include "mdcdef.h"
#include "mdeobjectdef.h"
#include "mdenamespacedef.h"
#include "mdscommoninternal.h"
#include "mdcserializationbuffer.h"


CMdEPropertyDef::CMdEPropertyDef( const TMdCPropertyDef& aPropertyDef, CMdEObjectDef& aObjectDef )
    : iPropertyDef(aPropertyDef), iObjectDef(aObjectDef)
    {
    }

CMdEPropertyDef* CMdEPropertyDef::NewL( const TMdCPropertyDef& aPropertyDef,
    CMdCSerializationBuffer& aSchemaBuffer, CMdEObjectDef& aObjectDef )
    {
    CMdEPropertyDef* def = CMdEPropertyDef::NewLC( aPropertyDef, aSchemaBuffer, aObjectDef );
    CleanupStack::Pop( def );
    return def;
    }

CMdEPropertyDef* CMdEPropertyDef::NewLC( const TMdCPropertyDef& aPropertyDef,
    CMdCSerializationBuffer& aSchemaBuffer, CMdEObjectDef& aObjectDef )
    {
    CMdEPropertyDef* def = new( ELeave ) CMdEPropertyDef( aPropertyDef, aObjectDef );
    CleanupStack::PushL( def );
    def->ConstructL( aSchemaBuffer );
    return def;
    }

void CMdEPropertyDef::ConstructL( CMdCSerializationBuffer& aSchemaBuffer )
    {
	aSchemaBuffer.PositionL( iPropertyDef.iName.iPtr.iOffset );
	iName.Set( aSchemaBuffer.ReceivePtr16L() );
    }

CMdEPropertyDef::~CMdEPropertyDef()
    {
    }

TDefId CMdEPropertyDef::Id() const
    {
    return iPropertyDef.iDefId;
    }

TDefId CMdEPropertyDef::ObjectDefId() const
	{
	return iObjectDef.Id();
	}

EXPORT_C CMdEObjectDef& CMdEPropertyDef::ObjectDef() const
    {
    return iObjectDef;
    }
    
EXPORT_C const TDesC& CMdEPropertyDef::Name() const
    {
    return iName;
    }

EXPORT_C TInt CMdEPropertyDef::Compare( const CMdEPropertyDef& aPropertyDef ) const
    {
    TInt result = iObjectDef.NamespaceDef().Compare( aPropertyDef.iObjectDef.NamespaceDef() );
    if ( result == 0 )
        {
        result = iPropertyDef.iDefId - aPropertyDef.Id();
        }
    return result;
    }

EXPORT_C TPropertyType CMdEPropertyDef::PropertyType() const
    {
    return (TPropertyType)iPropertyDef.iValueType;
    }

EXPORT_C TBool CMdEPropertyDef::ReadOnly() const
    {
    return iPropertyDef.iFlags & EPropertyReadOnly ? ETrue : EFalse;
    }

EXPORT_C TBool CMdEPropertyDef::Mandatory() const
	{
	return iPropertyDef.iFlags & EPropertyMandatory ? ETrue : EFalse;
	}

EXPORT_C TInt32 CMdEPropertyDef::MinInt32ValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyInt8 &&
    	 type != EPropertyInt16 &&
    	 type != EPropertyInt32 )
    	{
         User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMinValue.iInt32;
    }

EXPORT_C TInt32 CMdEPropertyDef::MaxInt32ValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyInt8 &&
    	 type != EPropertyInt16 &&
    	 type != EPropertyInt32 )
    	{
        User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMaxValue.iInt32;
    }

EXPORT_C TUint32 CMdEPropertyDef::MinUint32ValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyUint8 &&
    	 type != EPropertyUint16 &&
    	 type != EPropertyUint32 )
    	{
        User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMinValue.iUint32;
    }

EXPORT_C TUint32 CMdEPropertyDef::MaxUint32ValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyUint8 &&
    	 type != EPropertyUint16 &&
     	 type != EPropertyUint32 )
    	{
        User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMaxValue.iUint32;
    }

EXPORT_C TInt64 CMdEPropertyDef::MinInt64ValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyInt64 )
    	{
         User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMinValue.iInt64;
    }

EXPORT_C TInt64 CMdEPropertyDef::MaxInt64ValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyInt64 )
    	{
         User::Leave( KErrNotSupported );        
        }
    return iPropertyDef.iMaxValue.iInt64;
    }

EXPORT_C TReal CMdEPropertyDef::MinRealValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyReal32 && type != EPropertyReal64 )
    	{
         User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMinValue.iReal;
    }

EXPORT_C TReal CMdEPropertyDef::MaxRealValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyReal32 && type != EPropertyReal64 )
    	{
         User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMaxValue.iReal;
    }

EXPORT_C TTime CMdEPropertyDef::MinTimeValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyTime )
        {
        User::Leave( KErrNotSupported );
        }
    return TTime(iPropertyDef.iMinValue.iInt64);
    }

EXPORT_C TTime CMdEPropertyDef::MaxTimeValueL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyTime )
        {
        User::Leave( KErrNotSupported );
        }
    return TTime(iPropertyDef.iMaxValue.iInt64);
    }

EXPORT_C TInt CMdEPropertyDef::MinTextLengthL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyText )
        {
        User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMinValue.iInt32;
    }

EXPORT_C TInt CMdEPropertyDef::MaxTextLengthL() const
    {
    const TPropertyType type = PropertyType();
    if ( type != EPropertyText )
        {
        User::Leave( KErrNotSupported );
        }
    return iPropertyDef.iMaxValue.iInt32;
    }

EXPORT_C CMdENamespaceDef& CMdEPropertyDef::NamespaceDef() const
    {
    return iObjectDef.NamespaceDef();
    }