<?php
// PRE ALPHA
if (!function_exists('get_called_class')) {
   die('This application require PHP 5.3 or above');
}

if (!defined('GTFW_BASE_DIR')) {
   define('GTFW_BASE_DIR', realpath(dirname(__file__)) . '/');
}

if (!defined('GTFW_APP_DIR')) {
   define('GTFW_APP_DIR', getcwd() . '/');
}

if (!defined('BACKWARD_COMPATIBLE')) {
   define('BACKWARD_COMPATIBLE', true);
}

if (!defined('DEVELOPMENT')) {
   define('DEVELOPMENT', false);
}

if (!defined('DEVELOPMENT_BASE')) {
   define('DEVELOPMENT_BASE', false);
}

if (isset($_SERVER['HTTP_X_GTFWMODULETYPE']) && !isset($_SERVER['HTTP_X_GTFWFORMAT'])) {
   $_SERVER['HTTP_X_GTFWFORMAT'] = $_SERVER['HTTP_X_GTFWMODULETYPE'];
} else {
   //nothing todo
}

define('GTFW_X_FORMAT', isset($_SERVER['HTTP_X_GTFWFORMAT']) && ($_SERVER['HTTP_X_GTFWFORMAT'] == 'json' || $_SERVER['HTTP_X_GTFWFORMAT'] == 'xml'));

ini_set('display_errors', 0);
if (DEVELOPMENT) {
   // ini_set("display_errors", "1");
   error_reporting(E_ALL);
} else {
   error_reporting(E_ERROR);
}

if (DEVELOPMENT_BASE) {
   ini_set("display_errors", "1");
   error_reporting(E_ALL);
} else {
   //nothing todo
}

// matikan profiler by default
if (!defined('GTFW_ENABLE_PROFILER')) {
   define('GTFW_ENABLE_PROFILER', false);
}

define('GTFW_BASE_DIR_CORE', GTFW_BASE_DIR . 'main/system/core/');
define('GTFW_BASE_DIR_RESPONSE', GTFW_BASE_DIR . 'main/system/response/');
define('GTFW_BASE_DIR_LIBRARIES', GTFW_BASE_DIR . 'main/system/libraries/');
define('GTFW_BASE_DIR_BUSINESS', GTFW_BASE_DIR . 'main/system/business/');
define('GTFW_BASE_DIR_MODULE', GTFW_BASE_DIR . 'module/');

define('GTFW_APP_DIR_EXTENDS', GTFW_APP_DIR . 'extends/');
define('GTFW_APP_DIR_MODULE', GTFW_APP_DIR . 'module/');

include GTFW_BASE_DIR_LIBRARIES . 'simple_benchmark/SimpleBenchmark.class.php';
SimpleBenchmark::Initialize();
SimpleBenchmark::Instance()->start();

include GTFW_BASE_DIR_CORE . 'cpu/GtfwCpu.class.php';

GtfwCpu::Initialize();

GtfwCpu::process();

?>