[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/moai/moai-dev/develop/src/host-modules/aku_modules_util.cpp [Back]  [Original]

// Copyright (c) 2010-2017 Zipline Games, Inc. All Rights Reserved.
// http://getmoai.com

#include 
#include 
#include 

//================================================================//
// local
//================================================================//

int _parseArgStringAndCall ( char* exeName, char* scriptName, int argc, char** argv, int i );

//----------------------------------------------------------------//
int _parseArgStringAndCall ( char* exeName, char* scriptName, int argc, char** argv, int i ) {

	int mode = AKU_AS_ARGS;
	char* args = 0;

	if ( i < ( argc - 1 )) {
	
		char* arg = argv [ i + 1 ];
	
		if (( strcmp ( arg, "-a" ) == 0 )) {
			i += 2;
			args = argv [ i ];
			mode = AKU_AS_ARGS;
		}
		else if (( strcmp ( arg, "-p" ) == 0 )) {
			i += 2;
			args = argv [ i ];
			mode = AKU_AS_PARAMS;
		}
	}
	
	if ( args ) {
		AKUCallFuncWithArgString ( exeName, scriptName, args, mode );
	}
	else {
		AKUCallFunc ();
	}
	
	return i;
}

//================================================================//
// implementation
//================================================================//

//----------------------------------------------------------------//
void AKUModulesParseArgs ( int argc, char** argv ) {

	if ( argc < 2 ) {
		if ( AKULoadFuncFromFile ( "main.lua" ) != AKU_OK ) return;
		AKUCallFunc ();
	}
	else {
	
		for ( int i = 1; i < argc; ++i ) {
		
			char* arg = argv [ i ];
			
			if (( strcmp ( arg, "-s" ) == 0 )) {
			
				char* script = argv [ ++i ];
				AKULoadFuncFromString ( script, strlen ( script ), 0 );
				i = _parseArgStringAndCall ( argv [ 0 ], 0, argc, argv, i );
			}
			else if (( strcmp ( arg, "-f" ) == 0 )) {
				
				char* filename = argv [ ++i ];
				if ( AKULoadFuncFromFile ( filename ) != AKU_OK ) return;
				i = _parseArgStringAndCall ( argv [ 0 ], filename, argc, argv, i );
			}
			else {
				
				int argc2		= argc - 2;
				char** argv2	= argc2 > 0 ? &argv [ i + 1 ] : 0;
				
				if ( AKULoadFuncFromFile ( arg ) != AKU_OK ) return;
				AKUCallFuncWithArgArray ( argv [ 0 ], argv [ i ], argc2, argv2, AKU_AS_ARGS );
				break;
			}
		}
	}
}

//----------------------------------------------------------------//
void AKUModulesRunLuaAPIWrapper () {
}

Web Proxy Viewer  |  New URL  |  Original Page