@@ -88,32 +88,6 @@ static CLEVER_FUNCTION(get_cwd)
88
88
result->setStr (CSTRING (path ? path : " " ));
89
89
}
90
90
91
- // argv(int n)
92
- // Get n-th argv value
93
- static CLEVER_FUNCTION (argv)
94
- {
95
- if (!clever_static_check_args (" i" )) {
96
- return ;
97
- }
98
-
99
- if (args[0 ]->getInt () >= *g_clever_argc) {
100
- result->setBool (false );
101
- } else {
102
- result->setStr (new StrObject ((*g_clever_argv)[args[0 ]->getInt ()]));
103
- }
104
- }
105
-
106
- // argc()
107
- // Get argc value
108
- static CLEVER_FUNCTION (argc)
109
- {
110
- if (!clever_static_check_no_args ()) {
111
- return ;
112
- }
113
-
114
- result->setInt (*g_clever_argc);
115
- }
116
-
117
91
// sleep(int time)
118
92
// Sleep for 'time' milliseconds
119
93
static CLEVER_FUNCTION (sleep)
@@ -274,7 +248,7 @@ static CLEVER_FUNCTION(info)
274
248
}
275
249
276
250
// Returns a Value ptr containing the OS name
277
- static Value* _get_os ()
251
+ static Value* get_os ()
278
252
{
279
253
Value* val = new Value (CLEVER_STR_TYPE, true );
280
254
@@ -288,6 +262,25 @@ static Value* _get_os()
288
262
return val;
289
263
}
290
264
265
+ // Returns a constant array containing the argv
266
+ static Value* get_argv ()
267
+ {
268
+ Value* argv = new Value ();
269
+ ::std::vector<Value*> args;
270
+
271
+ for (int i = 0 ; i < *g_clever_argc; ++i) {
272
+ args.push_back (new Value ());
273
+ args.back ()->setStr ((*g_clever_argv)[i]);
274
+ args.back ()->setConst (true );
275
+ }
276
+
277
+ ArrayObject* arr = new ArrayObject (args);
278
+ argv->setConst (true );
279
+ argv->setObj (CLEVER_ARRAY_TYPE, arr);
280
+
281
+ return argv;
282
+ }
283
+
291
284
} // clever::modules::std::sys
292
285
293
286
// Initializes Standard module
@@ -301,16 +294,16 @@ CLEVER_MODULE_INIT(SYSModule)
301
294
addFunction (new Function (" get_ppid" , &CLEVER_NS_FNAME (sys, get_ppid)));
302
295
addFunction (new Function (" get_uid" , &CLEVER_NS_FNAME (sys, get_uid)));
303
296
addFunction (new Function (" get_sid" , &CLEVER_NS_FNAME (sys, get_sid)));
304
- addFunction (new Function (" argc" , &CLEVER_NS_FNAME (sys, argc)));
305
- addFunction (new Function (" argv" , &CLEVER_NS_FNAME (sys, argv)));
306
297
addFunction (new Function (" sleep" , &CLEVER_NS_FNAME (sys, sleep )));
307
298
addFunction (new Function (" clock" , &CLEVER_NS_FNAME (sys, clock )));
308
299
addFunction (new Function (" time" , &CLEVER_NS_FNAME (sys, time )));
309
300
addFunction (new Function (" microtime" , &CLEVER_NS_FNAME (sys, microtime)));
310
301
addFunction (new Function (" info" , &CLEVER_NS_FNAME (sys, info)));
311
302
addFunction (new Function (" exit" , &CLEVER_NS_FNAME (sys, exit )));
312
303
313
- addVariable (" OS" , sys::_get_os ());
304
+ addVariable (" OS" , sys::get_os ());
305
+ addVariable (" argc" , new Value (long (*g_clever_argc), true ));
306
+ addVariable (" argv" , sys::get_argv ());
314
307
}
315
308
316
309
}}} // clever::modules::std
0 commit comments