diff -r 9360ca28b668 -r c4687ff85147 omadm/omadmextensions/adapters/lawmodmadapter/src/nsmldmuri.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omadm/omadmextensions/adapters/lawmodmadapter/src/nsmldmuri.cpp Thu Aug 19 09:42:30 2010 +0300 @@ -0,0 +1,210 @@ +/* +* Copyright (c) 2002 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: DM tree etc. +* +*/ + + + +#include "nsmldmuri.h" + +// ------------------------------------------------------------------------------------------------ +// NSmlDmURI +// ------------------------------------------------------------------------------------------------ + + +/* ------------------------------------------------------------------------------------------------ +// TPtrC8 NSmlDmURI::ParentURI(const TDesC8& aURI) +// returns parent uri, i.e. removes last uri segment +// ------------------------------------------------------------------------------------------------ + TPtrC8 NSmlDmURI::ParentURI(const TDesC8& aURI) + { + TBool onlyOneSeg = ETrue; + TInt i; + for(i=aURI.Length()-1;i>=0;i--) + { + if(aURI[i]==KNSmlDMUriSeparator) + { + onlyOneSeg = EFalse; + break; + } + } + if(onlyOneSeg) + { + return KNSmlDmRootUri(); + } + else + { + return aURI.Left(i); + } + } + +// ------------------------------------------------------------------------------------------------ +// TPtrC8 NSmlDmURI::LastURISeg(const TDesC8& aURI) +// Returns only the last uri segemnt +// ------------------------------------------------------------------------------------------------ + TPtrC8 NSmlDmURI::LastURISeg(const TDesC8& aURI) + { + TInt i; + for(i=aURI.Length()-1;i>=0;i--) + { + if(aURI[i]==KNSmlDMUriSeparator) + { + break; + } + } + if(i==0) + { + return aURI; + } + else + { + return aURI.Mid(i+1); + } + } +*/ +// ------------------------------------------------------------------------------------------------ +// TPtrC8 NSmlDmURI::RemoveDotSlash(const TDesC8& aURI) +// return uri without dot and slash in start +// ------------------------------------------------------------------------------------------------ + TPtrC8 NSmlDmURI::RemoveDotSlash(const TDesC8& aURI) + { + + TInt offset = 0; + TInt endSlash = 0; + + if(aURI.Find(KNSmlDmUriDotSlash)==0) + { + offset = 2; + } + else + { + return aURI; + } + + if(aURI.Length()>2&&aURI[aURI.Length()-1]==KNSmlDMUriSeparator) + { + endSlash = 1; + } + + return aURI.Mid(offset,aURI.Length()-endSlash-offset); + } + +/* ------------------------------------------------------------------------------------------------ +// TPtrC8 NSmlDmURI::RemoveProp(const TDesC8& aURI) +// removes property from the uri +// ------------------------------------------------------------------------------------------------ + TPtrC8 NSmlDmURI::RemoveProp(const TDesC8& aURI) + { + TInt offset = aURI.Find(KNSmlDmQuestionMark); + if(offset!=KErrNotFound) + { + return aURI.Left(offset); + } + return aURI; + } +*/ +// ------------------------------------------------------------------------------------------------ +// TPtrC8 NSmlDmURI::RemoveLastSeg(const TDesC8& aURI) +// Removes last uri segment +// ------------------------------------------------------------------------------------------------ + TPtrC8 NSmlDmURI::RemoveFirstSeg(const TDesC8& aURI) + { + TPtrC8 temp = RemoveDotSlash(aURI); + TInt i; + for(i=0;i=temp.Length()-1) + { + return KNullDesC8(); + } + else + { + return temp.Right(i); + } + } + +// ------------------------------------------------------------------------------------------------ +// TPtrC8 NSmlDmURI::URISeg(const TDesC8& aURI,TInt aLocation,TInt aSegCount=1) +// Returns the aLocation:th URI segment +// ------------------------------------------------------------------------------------------------ + TPtrC8 NSmlDmURI::URISeg(const TDesC8& aURI,TInt aLocation,TInt aSegCount/*=1*/) + { + TInt i, start; + if(aLocation < 0) + { + return aURI.Mid(0, 0); + } + if(aLocation > 0) + { + for (start=0, i=0; (start= aURI.Length()) + { + return aURI.Mid(0, 0); + } + // start points to beginning of segment + for (i=start+1; i