Utils.h revision 10428
19157Sandreas.hansson@arm.com/* 29157Sandreas.hansson@arm.com * Copyright (c) 2012-2014, TU Delft 39157Sandreas.hansson@arm.com * Copyright (c) 2012-2014, TU Eindhoven 49157Sandreas.hansson@arm.com * Copyright (c) 2012-2014, TU Kaiserslautern 59157Sandreas.hansson@arm.com * All rights reserved. 69157Sandreas.hansson@arm.com * 79157Sandreas.hansson@arm.com * Redistribution and use in source and binary forms, with or without 89157Sandreas.hansson@arm.com * modification, are permitted provided that the following conditions are 99157Sandreas.hansson@arm.com * met: 109157Sandreas.hansson@arm.com * 119157Sandreas.hansson@arm.com * 1. Redistributions of source code must retain the above copyright 129157Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer. 139157Sandreas.hansson@arm.com * 149157Sandreas.hansson@arm.com * 2. Redistributions in binary form must reproduce the above copyright 159157Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer in the 169157Sandreas.hansson@arm.com * documentation and/or other materials provided with the distribution. 179157Sandreas.hansson@arm.com * 189157Sandreas.hansson@arm.com * 3. Neither the name of the copyright holder nor the names of its 199157Sandreas.hansson@arm.com * contributors may be used to endorse or promote products derived from 209157Sandreas.hansson@arm.com * this software without specific prior written permission. 219157Sandreas.hansson@arm.com * 229157Sandreas.hansson@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 239157Sandreas.hansson@arm.com * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 249157Sandreas.hansson@arm.com * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 259157Sandreas.hansson@arm.com * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 269157Sandreas.hansson@arm.com * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 279157Sandreas.hansson@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 289157Sandreas.hansson@arm.com * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 299157Sandreas.hansson@arm.com * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 309157Sandreas.hansson@arm.com * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 319157Sandreas.hansson@arm.com * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 329157Sandreas.hansson@arm.com * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 339157Sandreas.hansson@arm.com * 349157Sandreas.hansson@arm.com * Authors: Andreas Hansson 359157Sandreas.hansson@arm.com * 369157Sandreas.hansson@arm.com */ 379157Sandreas.hansson@arm.com 389157Sandreas.hansson@arm.com#ifndef UTILS_H 399157Sandreas.hansson@arm.com#define UTILS_H 409157Sandreas.hansson@arm.com 419157Sandreas.hansson@arm.com#include <string> 429157Sandreas.hansson@arm.com#include <sstream> 439157Sandreas.hansson@arm.com#include <stdexcept> 449157Sandreas.hansson@arm.com#include <typeinfo> 459157Sandreas.hansson@arm.com 469157Sandreas.hansson@arm.com#define MILLION 1000000 479157Sandreas.hansson@arm.com 489157Sandreas.hansson@arm.comtemplate<typename T> 499157Sandreas.hansson@arm.comT fromString(const std::string& s, 509157Sandreas.hansson@arm.com std::ios_base& (*f)(std::ios_base &) = std::dec) 519157Sandreas.hansson@arm.comthrow(std::runtime_error) 529157Sandreas.hansson@arm.com{ 539157Sandreas.hansson@arm.com std::istringstream is(s); 549157Sandreas.hansson@arm.com T t; 559157Sandreas.hansson@arm.com 569157Sandreas.hansson@arm.com if (!(is >> f >> t)) { 579157Sandreas.hansson@arm.com throw std::runtime_error("Cannot convert '" + s + "' to " + 589157Sandreas.hansson@arm.com typeid(t).name() + " using fromString"); 599157Sandreas.hansson@arm.com } 609157Sandreas.hansson@arm.com 619179Sandreas.hansson@arm.com return t; 629179Sandreas.hansson@arm.com} 639179Sandreas.hansson@arm.com 649179Sandreas.hansson@arm.com#endif /* UTILS_H */ 659179Sandreas.hansson@arm.com