text=""" #define FUNC$numR(m_r,m_func,$argt)\\ virtual m_r m_func($argtp) { \\ if (Thread::get_caller_ID()!=server_thread) {\\ m_r ret;\\ command_queue.push_and_ret( visual_server, &VisualServer::m_func,$argp,&ret);\\ return ret;\\ } else {\\ return visual_server->m_func($argp);\\ }\\ } #define FUNC$numRC(m_r,m_func,$argt)\\ virtual m_r m_func($argtp) const { \\ if (Thread::get_caller_ID()!=server_thread) {\\ m_r ret;\\ command_queue.push_and_ret( visual_server, &VisualServer::m_func,$argp,&ret);\\ return ret;\\ } else {\\ return visual_server->m_func($argp);\\ }\\ } #define FUNC$numS(m_func,$argt)\\ virtual void m_func($argtp) { \\ if (Thread::get_caller_ID()!=server_thread) {\\ command_queue.push_and_sync( visual_server, &VisualServer::m_func,$argp);\\ } else {\\ visual_server->m_func($argp);\\ }\\ } #define FUNC$numSC(m_func,$argt)\\ virtual void m_func($argtp) const { \\ if (Thread::get_caller_ID()!=server_thread) {\\ command_queue.push_and_sync( visual_server, &VisualServer::m_func,$argp);\\ } else {\\ visual_server->m_func($argp);\\ }\\ } #define FUNC$num(m_func,$argt)\\ virtual void m_func($argtp) { \\ if (Thread::get_caller_ID()!=server_thread) {\\ command_queue.push( visual_server, &VisualServer::m_func,$argp);\\ } else {\\ visual_server->m_func($argp);\\ }\\ } #define FUNC$numC(m_func,$argt)\\ virtual void m_func($argtp) const { \\ if (Thread::get_caller_ID()!=server_thread) {\\ command_queue.push( visual_server, &VisualServer::m_func,$argp);\\ } else {\\ visual_server->m_func($argp);\\ }\\ } """ for i in range(1,8): tp="" p="" t="" for j in range(i): if (j>0): tp+=", " p+=", " t+=", " tp +=("m_arg"+str(j+1)+" p"+str(j+1)) p+=("p"+str(j+1)) t+=("m_arg"+str(j+1)) t = text.replace("$argtp",tp).replace("$argp",p).replace("$argt",t).replace("$num",str(i)) print(t)