Skip to content

Commit

Permalink
add cmd2cmd noremap, but not support global pool yet
Browse files Browse the repository at this point in the history
  • Loading branch information
pit-ray committed Dec 3, 2021
1 parent 9b08e2a commit 15d281d
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 23 deletions.
19 changes: 8 additions & 11 deletions src/core/main_loop.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,26 +52,23 @@ namespace vind
KeyLog log{} ;
if(!has_pool) {
log = get_pressed_list() ;
}
else {
log = std::move(g_logpool.front()) ;
g_logpool.pop() ;
}
auto result = g_ntlgr.logging_state(log) ;

if(!has_pool) {
auto logpool = MapGate::get_instance().map_logger(g_ntlgr) ;
auto logpool = MapGate::get_instance().map_logger(log) ;
if(!logpool.empty()) {
g_ntlgr.clear() ;

result = g_ntlgr.logging_state(std::move(logpool.front())) ;
log = std::move(logpool.front()) ;
logpool.pop() ;

if(!logpool.empty()) {
g_logpool.swap(logpool) ;
}
}
}
else {
log = std::move(g_logpool.front()) ;
g_logpool.pop() ;
}

auto result = g_ntlgr.logging_state(log) ;

if(NTYPE_EMPTY(result)) {
return ;
Expand Down
28 changes: 17 additions & 11 deletions src/core/mapgate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -440,24 +440,30 @@ namespace vind
}

MapGate::KeyLogPool MapGate::map_logger(
const NTypeLogger& lgr,
const KeyLog& log,
Mode mode) {
auto midx = static_cast<int>(mode) ;

auto& mgr = pimpl->mgr_table_[midx] ;
mgr.transition_parser_states_in_batch(lgr) ;

auto maphook = mgr.find_accepted_parser() ;
if(!maphook) {
return KeyLogPool{} ;
}
auto parser = mgr.find_parser_with_transition(log) ;
if(parser) {
if(parser->is_accepted()) {
auto func = parser->get_func() ;
func->process() ;
mgr.reset_parser_states() ;
return pimpl->logpool_table_[midx][func->id()] ;

auto func = maphook->get_func() ;
bind::safe_for(lgr.get_head_num(), [&func] {
func->process() ;
}) ;
}
else if(parser->is_rejected_with_ready()) {
mgr.reset_parser_states() ;
}
}
else {
mgr.reset_parser_states() ;
}

return pimpl->logpool_table_[midx][func->id()] ;
return KeyLogPool{} ;
}

bool MapGate::map_syncstate(
Expand Down
2 changes: 1 addition & 1 deletion src/core/mapgate.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ namespace vind
//
using KeyLogPool = std::queue<KeyLog> ;
KeyLogPool map_logger(
const NTypeLogger& lgr,
const KeyLog& log,
Mode mode=get_global_mode()) ;

//
Expand Down

0 comments on commit 15d281d

Please sign in to comment.