Bool CommandVarNew::Execute( GChar * strOutput, const GChar * strArgList )
{
    // Get console environment
    ConsoleEnvironment * pEnv = ConsoleFn->GetEnvironment();

    // Parse arguments
    GChar strArg0[CONSOLECOMMAND_OUTPUT_LENGTH];
    GChar strArg1[CONSOLECOMMAND_OUTPUT_LENGTH];

    // Pick first argument
    strArgList = _ExtractArgument_String( strArg0, strArgList );

    // No argument case
    if ( strArgList == NULL ) {
        strOutput = StringFn->Copy( strOutput, TEXT("Missing parameter 0 : varname ...") );
        return false;
    }

    // Pick second argument
    strArgList = _ExtractArgument_String( strArg1, strArgList );

    // One argument case
    if ( strArgList == NULL ) {
        ConsoleVariable * pVar = pEnv->CreateVariable( strArg0 );
        if ( pVar == NULL ) {
            strOutput = StringFn->Copy( strOutput, TEXT("Bad parameter 0 : varname already exists ...") );
            return false;
        }

        strOutput = StringFn->Format( strOutput, TEXT("Created variable %s"), pVar->GetName() );
        return true;
    }

    // Two arguments case
    ConsoleVariableType iVarType = ConsoleVariable::GetTypeValue( strArg0 );
    if ( iVarType == CONSOLEVAR_TYPE_UNDEFINED ) {
        strOutput = StringFn->Copy( strOutput, TEXT("Bad parameter 0 : Invalid vartype ...") );
        return false;
    }

    ConsoleVariable * pVar = pEnv->CreateVariable( strArg1, iVarType, NULL );
    if ( pVar == NULL ) {
        strOutput = StringFn->Copy( strOutput, TEXT("Bad parameter 1 : varname already exists ...") );
        return false;
    }

    strOutput = StringFn->Format( strOutput, TEXT("Created variable %s"), pVar->GetName() );
    return true;
}
ConsoleVariable * ConsoleEnvironment::CreateVariable( const GChar * strName, ConsoleVariableType iType, Void * pValue )
{
    // Variable already exists
    if ( m_mapVariables.Contains(strName) )
        return NULL;

    ConsoleFn->SelectMemory( TEXT("Environment") );
    ConsoleVariable * pVar = New ConsoleVariable( strName, iType, pValue );
    ConsoleFn->UnSelectMemory();

    VariableMap::Iterator itVar;
    Bool bInserted = m_mapVariables.Insert( pVar->GetName(), pVar, &itVar );
    Assert( bInserted && !(itVar.IsNull()) );

    return itVar.GetItem();
}