int main(int argc,char *argv[]) { LowTerm lowterm; int i; if(Config_Get(argc, argv, &lowterm) != 0){ fprintf(stderr, "Total Terminal Count : %d\n", lowterm.terminal_count); return -1; } Stack_New(&lowterm.visible_list, lowterm.terminal_count); gtk_init(&argc, &argv); for(i = 0;i < lowterm.terminal_count; i++){ /* fprintf(stderr, "Terminal Address : %p\n", &(lowterm.terminal[i])); */ lowterm.terminal[i].visible_list_pointer = &(lowterm.visible_list); Terminal_New(i, &(lowterm.terminal[i])); Terminal_Set(lowterm.terminal[i]); Terminal_Show_Hide(lowterm.terminal[i].window, &(lowterm.terminal[i])); } // 초기 윈도우 크기(width/height), 윈도우명, 실행명령을 파라미터로 받을수 있도록 한다. // urxvt를 밀어버리고 이걸로 쓸 예정, urxvt는 한글입력이 뭐같아서 싫어 gtk_main(); free(lowterm.terminal); Stack_Delete(&(lowterm.visible_list)); return 0; }
ReadLiner * ReadLine_New ( int32 type ) { ReadLiner * rl = ( ReadLiner * ) _Mem_Allocate ( sizeof (ReadLiner ), type ) ; rl->TabCompletionInfo0 = TabCompletionInfo_New ( type ) ; rl->TciNamespaceStack = Stack_New ( 64, SESSION ) ; //rl->TciDownStack = Stack_New ( 32, SESSION ) ; ReadLine_Init ( rl, _CfrTil_GetC, type ) ; return rl ; }
void _ReadLine_Copy ( ReadLiner * rl, ReadLiner * rl0, int32 type ) { memcpy ( rl, rl0, sizeof (ReadLiner ) ) ; rl->TabCompletionInfo0 = TabCompletionInfo_New ( type ) ; rl->TciNamespaceStack = Stack_New ( 64, SESSION ) ; //rl->TciDownStack = Stack_New ( 32, SESSION ) ; ReadLine_Init ( rl, rl0->Key, type ) ; //_CfrTil_GetC ) ; strcpy ( rl->InputLine, rl0->InputLine ) ; rl->InputStringOriginal = rl0->InputStringOriginal ; rl->State = rl0->State ; }
static char* gdi_convert_postfix_to_infix(const char* postfix) { int i; int length; BOOL unary; wStack* stack; int al, bl, cl, dl; char* a, *b, *c, *d; bl = cl = dl = 0; stack = Stack_New(FALSE); length = strlen(postfix); for (i = 0; i < length; i++) { if ((postfix[i] == 'P') || (postfix[i] == 'D') || (postfix[i] == 'S')) { /* token is an operand, push on the stack */ a = malloc(2); a[0] = postfix[i]; a[1] = '\0'; //printf("Operand: %s\n", a); Stack_Push(stack, a); } else { /* token is an operator */ unary = FALSE; c = malloc(2); c[0] = postfix[i]; c[1] = '\0'; if (c[0] == 'a') { c[0] = '&'; } else if (c[0] == 'o') { c[0] = '|'; } else if (c[0] == 'n') { c[0] = '~'; unary = TRUE; } else if (c[0] == 'x') { c[0] = '^'; } else { printf("invalid operator: %c\n", c[0]); } //printf("Operator: %s\n", c); a = (char*) Stack_Pop(stack); if (unary) b = NULL; else b = (char*) Stack_Pop(stack); al = strlen(a); if (b) bl = strlen(b); cl = 1; dl = al + bl + cl + 3; d = malloc(dl + 1); sprintf_s(d, dl, "(%s%s%s)", b ? b : "", c, a); Stack_Push(stack, d); free(a); free(b); free(c); } } d = (char*) Stack_Pop(stack); Stack_Free(stack); return d; }
void AsyncStack_Initialize(AsyncStack* stack, uint64 size) { assert(stack != NULL); stack->BaseStack = Stack_New(size); stack->Lock = SAL_Mutex_Create(); }
void _CfrTil_Init ( CfrTil * cfrTil, Namespace * nss ) { uint32 type = CFRTIL ; _Q_->OVT_CfrTil = cfrTil ; // TODO : organize these buffers and their use cfrTil->OriginalInputLineB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->InputLineB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->SourceCodeSPB = _Buffer_NewPermanent ( SOURCE_CODE_BUFFER_SIZE ) ; cfrTil->LambdaCalculusPB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->TokenB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->PrintfB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->Scratch1B = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->StringB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->DebugB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->DebugB1 = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->DebugB2 = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->StringInsertB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->StringInsertB2 = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->StringInsertB3 = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->TabCompletionBuf = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->StringMacroB = _Buffer_NewPermanent ( BUFFER_SIZE ) ; cfrTil->OriginalInputLine = Buffer_Data ( cfrTil->OriginalInputLineB ) ; cfrTil->SourceCodeScratchPad = Buffer_Data ( cfrTil->SourceCodeSPB ) ; cfrTil->LispPrintBuffer = Buffer_Data ( cfrTil->LambdaCalculusPB ) ; cfrTil->TokenBuffer = Buffer_Data ( cfrTil->TokenB ) ; SetState ( cfrTil, CFRTIL_RUN | OPTIMIZE_ON | INLINE_ON, true ) ; if ( _Q_->Verbosity > 2 ) Printf ( ( byte* ) "\nSystem Memory is being reallocated. " ) ; cfrTil->ContextStack = Stack_New ( 256, type ) ; cfrTil->ObjectStack = Stack_New ( 1 * K, type ) ; cfrTil->DebugStateStack = Stack_New ( 1 * K, type ) ; _Stack_Push ( cfrTil->DebugStateStack, 0 ) ; cfrTil->TokenList = _dllist_New ( type ) ; cfrTil->DebugWordList = _dllist_New ( type ) ; _Context_ = cfrTil->Context0 = _Context_New ( cfrTil, type ) ; cfrTil->Debugger0 = _Debugger_New ( type ) ; // nb : must be after System_NamespacesInit cfrTil->cs_CpuState = CpuState_New ( type ) ; if ( cfrTil->SaveDsp && cfrTil->DataStack )// with _Q_->RestartCondition = STOP from Debugger_Stop { Dsp = cfrTil->SaveDsp ; } else { cfrTil->DataStack = Stack_New ( _Q_->DataStackSize, CFRTIL ) ; _CfrTil_DataStack_Init ( cfrTil ) ; } if ( nss ) { cfrTil->Namespaces = nss ; } else { _CfrTil_NamespacesInit ( cfrTil ) ; } cfrTil->StoreWord = _Word_FindAny ( ( byte* ) "store" ) ; cfrTil->PokeWord = _Word_FindAny ( ( byte* ) "poke" ) ; cfrTil->LispNamespace = Namespace_Find ( ( byte* ) "Lisp" ) ; CfrTil_MachineCodePrimitive_AddWords ( ) ; // in any case we need to reinit these for eg. debugger->SaveCpuState (), etc. CfrTil_ReadTables_Setup ( cfrTil ) ; CfrTil_LexerTables_Setup ( cfrTil ) ; cfrTil->LC = 0 ; //LC_New ( ) ; //cfrTil->SCA_BlockedIndex = - 1 ; }