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