<?php

// ユーザによる中断を無視する
ignore_user_abort( TRUE );

//error_reporting(E_ALL);


//==================================================================
// OSによってパス区切り文字を判定

if (!defined('PATH_SEPARATOR')) {
	if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
		define('PATH_SEPARATOR', ';');
	} else {
		define('PATH_SEPARATOR', ':');
	}
}

//==================================================================
// 定数

define( 'PROC_KEYWORD', 'proc' );

//==================================================================
// インクルードパス設定

ini_set(
		'include_path', 
//		'.' 
		PATH_SEPARATOR . CHARCOAL_HOME . '/classes/'
		. PATH_SEPARATOR . EXTLIB_DIR
		. PATH_SEPARATOR . WEBAPP_DIR . '/' . APPLICATION . '/classes/'
	);

//==================================================================
// autoload

function __autoload( $class_name )
{
	require_once ( 'core/ClassLoader.class.php' );

	$loaded = ClassLoader::loadClass( $class_name );
}

//==================================================================
// ログ出力関数

// TRACE出力
function log_trace( $logger_names, $message, $file, $line )
{
	Logger::writeln( "T:$logger_names", $message, $file, $line );
}

// INFO出力
function log_info( $logger_names, $message, $file, $line )
{
	Logger::writeln( "I:$logger_names", $message, $file, $line );
}

// WARNING出力
function log_warning( $logger_names, $message, $file, $line )
{
	Logger::writeln( "W:$logger_names", $message, $file, $line );
}

// DEBUG出力
function log_debug( $logger_names, $message, $file, $line )
{
	Logger::writeln( "D:$logger_names", $message, $file, $line );
}

// ERROR出力
function log_error( $logger_names, $message, $file, $line )
{
	Logger::writeln( "E:$logger_names", $message, $file, $line );
}

// FATAL出力
function log_fatal( $logger_names, $message, $file, $line )
{
	Logger::writeln( "F:$logger_names", $message, $file, $line );
}

//==================================================================
// 配列ダンプ

function array_dump( $array, $title = NULL )
{
	print System::arrayToString($array,$title);
}

//==================================================================
// プリミティブ生成関数

function s( $value, $encoding = NULL )
{
	return new String( $value, $encoding );
}

function i( $value )
{
	return new Integer( $value );
}

//==================================================================
// プロファイルを読み込む

switch( CHARCOAL_RUNMODE ){
case 'http':
	$host = gethostbyaddr($_SERVER["SERVER_ADDR"]);
	break;
case 'shell':
	$host = 'shell';
	break;
default:
	throw new UnexpectedRunModeException( CHARCOAL_RUNMODE );
	break;
}

Profile::load( $host );

// タイムアウトを指定
$timeout = Profile::getInteger("SCRIPT_TIMEOUT",600);
set_time_limit( $timeout );

