Utility.cpp revision 390b36d8129d3ece769c8542d9d3d3895ab13fbb
1ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard/* 2ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * INTEL CONFIDENTIAL 3ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * Copyright © 2011 Intel 4ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * Corporation All Rights Reserved. 5ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * 6ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * The source code contained or described herein and all documents related to 7ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * the source code ("Material") are owned by Intel Corporation or its suppliers 8ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * or licensors. Title to the Material remains with Intel Corporation or its 9ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * suppliers and licensors. The Material contains trade secrets and proprietary 10ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * and confidential information of Intel or its suppliers and licensors. The 11ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * Material is protected by worldwide copyright and trade secret laws and 12ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * treaty provisions. No part of the Material may be used, copied, reproduced, 13ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * modified, published, uploaded, posted, transmitted, distributed, or 14ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * disclosed in any way without Intel’s prior express written permission. 15ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * 16ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * No license under any patent, copyright, trade secret or other intellectual 17ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * property right is granted to or conferred upon you by disclosure or delivery 18ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * of the Materials, either expressly, by implication, inducement, estoppel or 19ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * otherwise. Any license under such intellectual property rights must be 20ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * express and approved by Intel in writing. 21ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * 22ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard * CREATED: 2012-12-17 23ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard */ 24ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard 25ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard#include "Utility.h" 26ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard 27390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard#include <sstream> 28390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard#include <iterator> 29390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 30390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard// Format string list 31390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnardvoid CUtility::asString(const std::list<std::string>& lstr, 32390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::string& strOutput, 33390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard const std::string& strSeparator) 34ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard{ 35390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::ostringstream ostrFormatedList; 36390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 37390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::copy(lstr.begin(), lstr.end(), 38390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::ostream_iterator<std::string>(ostrFormatedList, strSeparator.c_str())); 39ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard 40390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard strOutput = ostrFormatedList.str(); 41ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard 42390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard // Remove last separator 43390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard if (strOutput.size() > strSeparator.size()) { 44ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard 45390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard strOutput.erase(strOutput.size() - strSeparator.size()); 46ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard } 47ace81f873b910493ab884dc5a6a38ba6ec3d56d3Kevin Rocard} 48390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 49390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard// Format string map 50390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnardvoid CUtility::asString(const std::map<std::string, std::string>& mapStr, 51390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::string& strOutput, 52390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard const std::string& strItemSeparator, 53390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard const std::string& strKeyValueSeparator) 54390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard{ 55390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::list<std::string> listKeysValues; 56390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 57390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard std::map<std::string, std::string>::const_iterator iter; 58390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 59390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard for(iter = mapStr.begin(); iter != mapStr.end(); ++iter) { 60390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 61390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard listKeysValues.push_back(iter->first + strKeyValueSeparator + iter->second); 62390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard } 63390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 64390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard CUtility::asString(listKeysValues, strOutput, strItemSeparator); 65390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard} 66390b36d8129d3ece769c8542d9d3d3895ab13fbbFrederic Boisnard 67