/*
* CommandLine.h
* Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED.
*/
// SOL++2000
// SOL9 2009/10/08
#pragma once
#include <sol\Object.h>
#include <sol\String.h>
namespace SOL {
class CommandLine :public Object {
private:
String arguments;
public:
CommandLine(const TCHAR* cmd)
:arguments(_T(""))
{
if (cmd) {
arguments = cmd;// = new String(cmd);
}
}
public:
~CommandLine()
{
}
public:
int getArgv(TCHAR* argv[], int maxArgs)
{
int argc = 0;
//2009/10/19
TCHAR* ptr = (TCHAR*)arguments;
while(*ptr) {
ptr = getToken(ptr, &argv[argc++]);
if(argc == _MAX_PATH){
break;
}
}
return argc;
}
public:
TCHAR* getToken(TCHAR* p, TCHAR** pos)
{
while(*p == (TCHAR)' ' || *p == (TCHAR)'\t') p++;
int doubleq = 0;
if(*p == (TCHAR)'"') {
doubleq = 1;
p++;
}
*pos = p;
if(*p == NULL) return NULL;
while(*p) {
if(*p == (TCHAR)'"' && doubleq == 1) {
p++;
*(p - 1) = NULL;
break;
}
if(doubleq == 0 && (*p == (TCHAR)' ' || *p == (TCHAR)'\t')) {
p++;
*(p - 1) = NULL;
break;
}
p++;
}
while(*p == (TCHAR)' ' || *p == (TCHAR)'\t') p++;
return p;
}
};
}
|