/*
   sys/sys.h
   This file is part of the Osirion project and is distributed under
   the terms of the GNU General Public License version 2
*/

#ifndef __INCLUDED_SYS_H__
#define __INCLUDED_SYS_H__

#include "config.h"

#include <string>

/// maximum line size throught the game
#define MAXCMDSIZE 1024

/**
 * @brief platform dependent functions
 * */
namespace sys
{

/**
 * @brief type definition for a signal handler function pointer
 * */
typedef void(* signalfunc)(int signum);

/**
 * @brief returns true if a path exists and is a directory
 * */
bool directory_exists(const std::string &path);

/**
 * @brief returns true if a file exists
 * */
bool file_exists(const std::string &filename);

/**
 * @brief create a directory
 * */
void mkdir(const std::string &path);

/**
 * @brief install an OS signal handler
 * */
void signal(int signum, signalfunc handler);
/**
 * @brief operation system exit() application
 */
void quit(int status);

/**
 * @brief suspend the current process for a number of milliseconds
 * 1 second is 1000 milliseconds
 * */
void sleep(long milliseconds);

/**
 * @brief get the local system date and time
 * */
void get_localtime(int & hours, int & minutes, int & seconds);

void get_localtime(int &year, int & month, int & day, int & hours, int & minutes, int & seconds, int & milliseconds);

} // namespace sys

#include "sys/consoleinterface.h"

#endif // __INCLUDED_SYS_H__