Changeset 15272 for trunk


Ignore:
Timestamp:
04/07/13 23:38:46 (12 years ago)
Author:
tbretz
Message:
Added magic values __DATE__, __FILE__ and __START__
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/InterpreterV8.cc

    r15253 r15272  
    66#include <sstream>
    77#include <iomanip>
     8
     9#include <sys/stat.h>
    810
    911#include <boost/tokenizer.hpp>
     
    19181920            hrz = LN_SOLAR_NAUTIC_HORIZON;
    19191921        if (arg==string("fact").substr(0, arg.length()))
    1920             hrz = -15;
     1922            hrz = -13;
    19211923        if (arg==string("astronomical").substr(0, arg.length()))
    19221924            hrz = LN_SOLAR_ASTRONOMICAL_HORIZON;
     
    20832085        return Undefined();
    20842086
    2085     //if (main && JsGetCurrentState().index!=3)
    2086     //    JsSetState(3);
     2087    const Handle<String> __date__ = String::New("__DATE__");
     2088    const Handle<String> __file__ = String::New("__FILE__");
     2089
     2090    Handle<Value> save_date;
     2091    Handle<Value> save_file;
     2092
     2093    Handle<Object> global = Context::GetCurrent()->Global();
     2094    if (!global.IsEmpty())
     2095    {
     2096        struct stat attrib;
     2097        if (stat(file.c_str(), &attrib)==0)
     2098        {
     2099            save_date = global->Get(__date__);
     2100            save_file = global->Get(__file__);
     2101
     2102            global->Set(__file__, String::New(file.c_str()));
     2103
     2104            const Local<Value> date = Date::New(attrib.st_mtime*1000);
     2105            if (!date.IsEmpty())
     2106                global->Set(__date__, date);
     2107        }
     2108    }
    20872109
    20882110    const Handle<Value> rc = script->Run();
     
    20942116    if (!rc->IsUndefined() && file!="internal")
    20952117        JsResult(*String::AsciiValue(rc));
     2118
     2119    if (!global.IsEmpty() && !save_date.IsEmpty())
     2120    {
     2121        global->ForceSet(__date__, save_date);
     2122        global->ForceSet(__file__, save_file);
     2123    }
    20962124
    20972125    return handle_scope.Close(rc);
     
    24152443    context->Global()->Set(String::New("arg"), args, ReadOnly);
    24162444
     2445    const Local<Value> starttime = Date::New(Time().JavaDate());
     2446    if (!starttime.IsEmpty())
     2447        context->Global()->Set(String::New("__START__"), starttime, ReadOnly);
     2448
    24172449    //V8::ResumeProfiler();
    24182450
Note: See TracChangeset for help on using the changeset viewer.