// File: /workspace/github_cpp_makefile_star2_O2/gioannides[P]Language_Processors/src/../include/ast/ast_node_python.cpp
// Function: DirectDeclarator::print_py(std::basic_ofstream<char, std::char_traits<char>>&, bool, bool)
inline void DirectDeclarator::print_py(std::ofstream& file, bool initialized, bool function) {


			if( DirectDeclaratorPtr != NULL) {

				DirectDeclaratorPtr->print_py(file,initialized,function);
			}

			if(!function) {							//This handles initializing variables, and identifying the global ones by the level of indentation of
											// counter_py
				if(counter_py == 0 && !ParameterVariable ){
					if(IDENTIFIER != NULL){
						GlobalVars.push_back(*IDENTIFIER);
					}
				}
	
				for( int i(0); i<counter_py; i++) { file << "\t"; }
				if(!initialized && !ParameterVariable){
					if(IDENTIFIER != NULL){
						file << *IDENTIFIER << "=0" << std::endl;
					}
				}

				else if(!ParameterVariable){
					if(IDENTIFIER != NULL){
						file << *IDENTIFIER << "=";
					}
				}
				else{
					if(IDENTIFIER != NULL){
						file << *IDENTIFIER;
					}
					ParameterVariable = false;
				}
				

			}
			
			else{								//This is handling functions and printing the main part of a standard python program

				if( IDENTIFIER != NULL ) {
					if( *IDENTIFIER == "main") { main_ = true; }
				
					file << "def " << *IDENTIFIER << "(";

				}
			
				if( ParameterTypeLiSt != NULL) {
					ParameterTypeLiSt->print_py(file);
					
				}
				else if( IDentifierList != NULL) {
					IDentifierList->print_py(file);
				}

			}

		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %ecx, %r15d
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq 0x20(%rdi), %rdi
testq %rdi, %rdi
je 0xa9da
movzbl %bpl, %edx
movzbl %r15b, %ecx
movq %rbx, %rsi
callq 0xa9ae
testb %r15b, %r15b
je 0xaa46
movq 0x38(%r14), %rdi
testq %rdi, %rdi
je 0xaa29
leaq 0x22a15(%rip), %rsi     # 0x2d404
callq 0x820e
testb %al, %al
je 0xa9ff
movb $0x1, 0x5cb01(%rip)     # 0x67500
leaq 0x22a03(%rip), %rsi     # 0x2d409
movq %rbx, %rdi
callq 0x7310
movq 0x38(%r14), %rsi
movq %rax, %rdi
callq 0x72d0
leaq 0x22a5a(%rip), %rsi     # 0x2d47b
movq %rax, %rdi
callq 0x7310
movq 0x10(%r14), %rdi
testq %rdi, %rdi
je 0xaae9
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xab68
cmpl $0x0, 0x5cad7(%rip)     # 0x67524
jne 0xaa6d
cmpb $0x0, 0x5cad2(%rip)     # 0x67528
jne 0xaa6d
movq 0x38(%r14), %rsi
testq %rsi, %rsi
je 0xaa6d
leaq 0x48be0(%rip), %rdi     # 0x53648
callq 0xab3c
xorl %r12d, %r12d
leaq 0x22c8f(%rip), %r15     # 0x2d706
cmpl 0x5caa6(%rip), %r12d    # 0x67524
jge 0xaa90
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7310
incl %r12d
jmp 0xaa77
movb 0x5ca92(%rip), %al      # 0x67528
testb %bpl, %bpl
je 0xaacb
testb $0x1, %al
jne 0xaacf
movq 0x38(%r14), %rsi
testq %rsi, %rsi
je 0xab32
movq %rbx, %rdi
callq 0x72d0
leaq 0x22ca2(%rip), %rsi     # 0x2d75d
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7310
testb $0x1, %al
je 0xab02
movq 0x38(%r14), %rsi
testq %rsi, %rsi
je 0xaae0
movq %rbx, %rdi
callq 0x72d0
movb $0x0, 0x5ca41(%rip)     # 0x67528
jmp 0xab32
movq 0x18(%r14), %rdi
testq %rdi, %rdi
je 0xab32
movq %rbx, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xab76
movq 0x38(%r14), %rsi
testq %rsi, %rsi
je 0xab32
movq %rbx, %rdi
callq 0x72d0
leaq 0x228e7(%rip), %rsi     # 0x2d401
movq %rax, %rdi
callq 0x7310
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x7190
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop