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