text: /*
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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.
   */
  
  /*
   * Copyright (c) 2020, OPEN AI LAB
   */
  
  #ifndef __COMMON_H__
  #define __COMMON_H__
  
  #include <math.h>
  #include <string.h>
  #include <unistd.h>
  
  #ifdef _WIN32
  #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #else    // _WIN32
  #include <sys/time.h>
  #endif    // _WIN32
  
  #ifdef _WIN32
  double get_current_time()
  {
      LARGE_INTEGER freq;
      LARGE_INTEGER pc;
      QueryPerformanceFrequency(&freq);
      QueryPerformanceCounter(&pc);
  
      return pc.QuadPart * 1000.0 / freq.QuadPart;
  }
  #else    // _WIN32
  
  double get_current_time()
  {
      struct timeval tv;
      gettimeofday(&tv, NULL);
  
      return tv.tv_sec * 1000.0 + tv.tv_usec / 1000.0;
  }
  #endif    // _WIN32
  
  void split(float* array, char* str, const char* del)
  {
      char* s = NULL;
      s = strtok(str, del);
      while (s != NULL)
      {
          *array++ = atof(s);
          s = strtok(NULL, del);
      }
  }
  
  #endif    // __COMMON_H__
  