void DotBuilder::doElement(ASTElement* element) { switch (element->getElementType()) { case MELEMENT_BLOCK: doBlock(reinterpret_cast<ASTBlock*>(element)); break; case MELEMENT_CONSTANT: doConstant(reinterpret_cast<ASTConstant*>(element)); break; case MELEMENT_VARIABLE: doVariable(reinterpret_cast<ASTVariable*>(element)); break; case MELEMENT_OPERATOR: doOperator(reinterpret_cast<ASTOperator*>(element)); break; case MELEMENT_CALL: doCall(reinterpret_cast<ASTCall*>(element)); break; case MELEMENT_TRANSFORM: doTransform(reinterpret_cast<ASTTransform*>(element)); break; default: MP_ASSERT_NOT_REACHED(); } }
void MsgQueueListener::onLisnten() { while (1) { try{ unsigned int prioity, recvd_size; int recvd_number; msgQueue_.receive(&recvd_number, sizeof(recvd_number), recvd_size, prioity); doOperator(static_cast<MSG_QUEUE_TYPE>(recvd_number)); Log::instance().debugMsg("MsgQueueListener receive", recvd_number); } catch(interprocess::interprocess_exception &ex) { interprocess::message_queue::remove("message_queue"); //std::cout << ex.what() <<std::endl; } } }
/* * DoLastEvent - process the last keystroke event */ vi_rc DoLastEvent( void ) { event *event; vi_rc rc; bool keep_sel; if( LastEvent >= MAX_EVENTS ) { rc = InvalidKey(); } else if( !EditFlags.Modeless && EditFlags.InsertModeActive ) { // UnselectRegion(); if( EditFlags.EscapedInsertChar ) { rc = IMChar(); } else if( InputKeyMaps[LastEvent].data != NULL && !InputKeyMaps[LastEvent].inuse ) { rc = StartInputKeyMap( LastEvent ); } else { rc = (EventList[LastEvent].ins)(); } } else if( !EditFlags.Modeless && KeyMaps[LastEvent].data != NULL && !KeyMaps[LastEvent].inuse ) { rc = DoKeyMap( LastEvent ); } else { event = &EventList[LastEvent]; keep_sel = event->b.keep_selection; if( event->b.keep_selection_maybe ) { if( SelRgn.selected ) { keep_sel = true; } } if( !keep_sel && !EditFlags.ScrollCommand ) { UnselectRegion(); } if( !EditFlags.ScrollCommand ) { ensureCursorDisplayed(); } rc = ERR_NO_ERR; switch( event->b.type ) { case EVENT_INS: if( EditFlags.Modeless ) { /* don't allow following cursor movements to affect seln */ keep_sel = SelRgn.selected; DeleteSelectedRegion(); SelRgn.selected = keep_sel; InsertLikeLast(); rc = event->rtn.ins(); DoneCurrentInsert( false ); SelRgn.selected = false; } else { if( !EditFlags.InsertModeActive ) { InsertLikeLast(); } rc = event->rtn.ins(); } break; case EVENT_OP: DoneCurrentInsert( true ); rc = doOperator( event ); break; case EVENT_REL_MOVE: case EVENT_ABS_MOVE: DoneCurrentInsert( true ); rc = DoMove( event ); break; case EVENT_MISC: DoneCurrentInsert( true ); rc = event->rtn.old(); break; } } return( rc ); } /* DoLastEvent */