searchfw/coresearchfw/utilities/src/searchsinglecondition.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 10:12:19 +0200
changeset 0 f979ecb2b13e
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2006-2007 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:   Class for search condition
*
*/




#include <e32def.h>
#include <s32strm.h>
#include <e32cmn.h>

#include <searchsinglecondition.h>
#include <searchfield.h>


//------------------------------------------------------------------------
// 1st phase constructor
//------------------------------------------------------------------------
//
EXPORT_C CSearchSingleCondition* CSearchSingleCondition::NewL(
			 CSearchField* aTerm ) 
    {
    CSearchSingleCondition* self = new ( ELeave )
                             CSearchSingleCondition( aTerm );				
    return self;
    }

//------------------------------------------------------------------------
// 1st phase constructor
//------------------------------------------------------------------------
//
EXPORT_C CSearchSingleCondition* CSearchSingleCondition::NewL( 
			RReadStream& aStream ) 
    {
    TConditionType type = static_cast<TConditionType>( 0 );
    type = static_cast<TConditionType> ( aStream.ReadUint32L() );
    CSearchSingleCondition* self = new ( ELeave ) 
                                 CSearchSingleCondition( type );
    CleanupStack::PushL( self );
    self->ConstructL( aStream );
    CleanupStack::Pop( self );
    return self;
    }
	
//------------------------------------------------------------------------
// destructor
//------------------------------------------------------------------------
//
CSearchSingleCondition::~CSearchSingleCondition() 
    {
    if ( iTerm )	
        {
        delete iTerm;
        iTerm = NULL;
        }
    }


//------------------------------------------------------------------------
// Extrenalizes the object to stream
//------------------------------------------------------------------------
//
EXPORT_C void CSearchSingleCondition::ExternalizeL( 
			RWriteStream& aStream ) const
    {
    CSearchCondition::ExternalizeL( aStream );
    if ( iTerm ) 
        {
        aStream.WriteUint32L( 1 );
        iTerm->ExternalizeL( aStream );
        }
    else 
        {
        aStream.WriteUint32L( 0 );
        }
    }

//------------------------------------------------------------------------
// Returns term of the condition
//------------------------------------------------------------------------
//
EXPORT_C const CSearchField& CSearchSingleCondition::Term() const
    {
    return *iTerm;	
    }

//------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------
//
CSearchSingleCondition::CSearchSingleCondition( 
	CSearchCondition::TConditionType type ) :
	 CSearchCondition( type )
    {
	
    }

//------------------------------------------------------------------------
// constructor
//------------------------------------------------------------------------
//
CSearchSingleCondition::CSearchSingleCondition( CSearchField* aTerm  ) : 
			CSearchCondition( CSearchCondition::EConditionTypeSimple )
    {
    iTerm = aTerm;
    }

//------------------------------------------------------------------------
// 2nd phase constructor
//------------------------------------------------------------------------
//
void CSearchSingleCondition::ConstructL( RReadStream& aStream ) 
    {
    TInt size = aStream.ReadUint32L();
    if ( size )  
        {
        iTerm = CSearchField::NewL( aStream );
        }
    }