new CArrayType(CStdType.Char, 2),
new CArrayType(CStdType.Char, 2, argv_dims),
    private void setUpSIR()     {	// RMR { declare iteration counter for top level driver (to allow command line control)	JExpression[] args = new JExpression[2];	JVariableDefinition argc = new JVariableDefinition(null, 0,									   CStdType.Integer,									   MAINMETHOD_ARGC,									   null);	JVariableDefinition argv = new JVariableDefinition(null, 0,									   CStdType.Integer,									   MAINMETHOD_ARGV,									   null);	args[0] = new JLocalVariableExpression(null, argc);	args[1] = new JLocalVariableExpression(null, argv);	JMethodCallExpression iterationCounterInitializer =	    new JMethodCallExpression(null, ARGHELPER_COUNTER, args);	JVariableDefinition iterationCounter = new JVariableDefinition(null, 0,											   CStdType.Integer,											   MAINMETHOD_COUNTER,											   iterationCounterInitializer);	main.addStatement(new JVariableDeclarationStatement(null, iterationCounter, null));	// } RMR	//place any field (that are converted to locals of main) 	//array inits into assignment statements and place them at the beginning	//of main	placeFieldArrayInits();		//add comments to the blocks	JavaStyleComment[] comment1 = 	    {new JavaStyleComment("SIR: Init Schedule",				  true, false, false)};	init.addStatementFirst(new JEmptyStatement(null, comment1));	JavaStyleComment[] comment2 = 	    {new JavaStyleComment("SIR: Steady-State Schedule",				  true, false, false)};	steady.addStatementFirst(new JEmptyStatement(null, comment2));		//add the initfunction calls	main.addStatement(initFunctionCalls);		//add the init schedule 	main.addStatement(init);	// RMR { create expression to decrement the iteration counter for top level driver	JExpression mainLoopCounter =	    new JPostfixExpression(null, 				   Constants.OPE_POSTDEC, 				   new JLocalVariableExpression(null, iterationCounter));	// } RMR		//add the steady state	if (KjcOptions.absarray || KjcOptions.doloops) {	    //nest inside of an rstream_pr if we are generating absarray or doloops	    Jrstream_pr rstream_pr = new Jrstream_pr(null, steady.getStatementArray(), null);	    JBlock whileBlock = new JBlock(null, new JStatement[0], null);	    whileBlock.addStatement(rstream_pr);	    main.addStatement(new JWhileStatement(null,						  // RMR { use conditional while loop to allow command line control						  // new JBooleanLiteral(null, true),						  mainLoopCounter,						  // } RMR						  whileBlock,						  null));	}	else {	    //add the steady schedule	    main.addStatement(new JWhileStatement(null,						  // RMR { use conditional while loop to allow command line control						  // new JBooleanLiteral(null, true),						  mainLoopCounter,						  // } RMR						  steady, null));	}	//add the return statement	main.addStatement(new JReturnStatement(null, 					       new JIntLiteral(0),					       null));	//convert all fields to locals of main function	convertFieldsToLocals();	// RMR { construct the parameters to the main driver method of the app	JFormalParameter[] mainParams = new JFormalParameter[2];	mainParams[0] = new JFormalParameter(null, 0, 							 CStdType.Integer, 							 MAINMETHOD_ARGC, 							 true);	mainParams[1] = new JFormalParameter(null, 0, 							 new CArrayType(CStdType.Char, 2), 							 MAINMETHOD_ARGV,							 true);	// } RMR	//construct the main driver method of the app	mainMethod = 	    new JMethodDeclaration(null, 0, CStdType.Integer,				   MAINMETHOD,				   // RMR { use mainParms instead of				   // new JFormalParameter[0],				   mainParams,				   // } RMR				   new CClassType[0],				   main, null, null);    }