2 #include "pol_global_config.h" 7 #include "../bscript/bobject.h" 8 #include "../bscript/config.h" 9 #include "../bscript/escriptv.h" 10 #include "../bscript/execmodl.h" 11 #include "../bscript/executor.h" 12 #include "../bscript/filefmt.h" 13 #include "../bscript/object.h" 14 #include "../clib/Program/ProgramMain.h" 15 #include "../clib/boostutils.h" 16 #include "../clib/fileutil.h" 17 #include "../clib/logfacility.h" 18 #include "../clib/refptr.h" 19 #include "../plib/pkg.h" 20 #include "../plib/systemstate.h" 22 #include <format/format.h> 24 #include "../pol/module/basiciomod.h" 25 #include "../pol/module/basicmod.h" 26 #include "../pol/module/cfgmod.h" 27 #include "../pol/module/datastore.h" 28 #include "../pol/module/filemod.h" 29 #include "../pol/module/mathmod.h" 30 #include "../pol/module/utilmod.h" 31 #include "../pol/polcfg.h" 38 boost_utils::flyweight_initializers
fw_inits;
52 RunEclMain::RunEclMain() :
ProgramMain(), m_quiet( false ), m_debug( false ), m_profile( false ) {}
60 <<
" RUNECL [options] filespec [filespec ...]\n" 63 <<
" -d Debug output\n" 70 if ( fileName.size() >= 4 )
71 fileName.replace( fileName.size() - 4, 4,
".ecl" );
84 program->
read( fileName.c_str() );
87 std::ostringstream os;
101 FILETIME kernelStart, userStart;
102 FILETIME kernelEnd, userEnd;
114 if ( program->
read( fileName.c_str() ) )
116 ERROR_PRINT <<
"Error reading " << fileName <<
"\n";
121 std::string dir = fileName;
127 auto pkg = std::find_if( pkgs.begin(), pkgs.end(), [&dir](
Plib::Package* p ) {
130 if ( pkg != pkgs.end() )
137 clock_t
start = clock();
139 GetThreadTimes( GetCurrentThread(), &dummy, &dummy, &kernelStart, &userStart );
145 GetThreadTimes( GetCurrentThread(), &dummy, &dummy, &kernelEnd, &userEnd );
147 clocks = clock() -
start;
148 seconds =
static_cast<double>( clocks ) / CLOCKS_PER_SEC;
155 tmp <<
"Profiling information: \n" 161 <<
"\tClocks: " << clocks <<
" (" << seconds <<
" seconds)\n" 163 <<
"\tKernel Time: " << ( *(__int64*)&kernelEnd ) - ( *(__int64*)&kernelStart ) <<
"\n" 164 <<
"\tUser Time: " << ( *(__int64*)&userEnd ) - ( *(__int64*)&userStart ) <<
"\n" 166 <<
"\tSpace used: " << memory_used <<
"\n\n" 173 #ifdef ESCRIPT_PROFILE 174 tmp <<
"FuncName,Count,Min,Max,Sum,Avarage\n";
175 for ( escript_profile_map::iterator itr = EscriptProfileMap.begin();
176 itr != EscriptProfileMap.end(); ++itr )
178 tmp << itr->first <<
"," << itr->second.count <<
"," << itr->second.min <<
"," 179 << itr->second.max <<
"," << itr->second.sum <<
"," 180 << ( itr->second.sum / ( 1.0 * itr->second.count ) ) <<
"\n";
185 return exres ? 0 : 1;
190 const std::vector<std::string>& binArgs =
programArgs();
192 for (
size_t i = 1; i < binArgs.size(); i++ )
194 switch ( binArgs[i][0] )
198 switch ( binArgs[i][1] )
210 ERROR_PRINT <<
"Unknown option: " << binArgs[i] <<
"\n";
223 const std::vector<std::string>& binArgs =
programArgs();
235 ERROR_PRINT <<
"EScript Executor v" << vernum <<
"\n" 236 << POL_COPYRIGHT <<
"\n\n";
242 if ( binArgs.size() == 1 )
251 std::string fileName;
270 int main(
int argc,
char* argv[] )
273 RunEclMain->
start( argc, argv );
std::atomic< int > eobject_imp_count
int escript_execinstr_calls
bool programArgsFind(const std::string &filter, std::string *rest=nullptr) const
int strip_one(std::string &direc)
const std::vector< std::string > & programArgs() const
void setDebugLevel(DEBUG_LEVEL level)
void dumpScript(std::string fileName)
#define ESCRIPT_FILE_VER_CURRENT
void addModule(ExecutorModule *module)
std::atomic< int > eobject_imp_constructions
EScriptConfig escript_config
void start(int argc, char *argv[])
boost_utils::flyweight_initializers fw_inits
void display_bobjectimp_instances()
bool setProgram(EScriptProgram *prog)
void load_fileaccess_cfg()
void dump(std::ostream &os)
unsigned int max_call_depth
int runeclScript(std::string fileName)
int stringicmp(const S1 &str1, const S2 &str2)
Plib::Package const * pkg
int read(const char *fname)
std::string normalized_dir_form(const std::string &istr)
void setViewMode(bool vm)
virtual size_t sizeEstimate() const
void load_packages(const std::string &basedir, bool quiet)