SOL9 2.0 Class: CommandLine

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * 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;
    }


};

}



Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.