/*
 Copyright 2019 Alain Dargelas
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at
 
 http://www.apache.org/licenses/LICENSE-2.0
 
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */

/* 
 * File:   TimeInfo.cpp
 * Author: alain
 * 
 * Created on June 8, 2017, 8:27 PM
 */
#include <string>
#include "../SourceCompile/SymbolTable.h"
#include "TimeInfo.h"

using namespace SURELOG;

TimeInfo::~TimeInfo () { }

TimeInfo::Unit TimeInfo::unitFromString(std::string s) {
    if (s == "s") return Second;
    else if (s == "ms") return Millisecond;
    else if (s == "us") return Microsecond;
    else if (s == "ns") return Nanosecond;
    else if (s == "ps") return Picosecond;
    else if (s == "fs") return Femtosecond;
    return Picosecond;    
}

