diff -r 000000000000 -r 3ce708148e4d applicationmanagement/server/src/nsmldmuri.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/applicationmanagement/server/src/nsmldmuri.cpp Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,207 @@ +/* + * 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::RemoveLastSeg(const TDesC8& aURI) + { + TInt i; + for (i=aURI.Length()-1; i>=0; i--) + { + if (aURI[i]==KNSmlDMUriSeparator) + { + break; + } + } + + if (i>0) + { + return aURI.Left(i); + } + else + { + return KNullDesC8(); + } + } + +// ------------------------------------------------------------------------------------------------ +// 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