void chat_app::init() { set_title("Chat"); _mail = std::make_shared<m::mailbox>(_id); _sender = std::make_shared<ms::sender>(_conversation->user_service(), _mail); _main = new QWidget; _main_layout = new QGridLayout{_main}; layout()->addWidget(_main, 1,0,2,3); setMinimumSize(QSize{MIN_WIDTH, MIN_HEIGHT}); set_main(_main); }
void script_app::init() { INVARIANT(root()); INVARIANT(layout()); INVARIANT(_conversation); INVARIANT(_app); //setup frontend setup_decorations(); _canvas = new QWidget; _canvas_layout = new QGridLayout{_canvas}; layout()->addWidget(_canvas, 1,0,2,3); auto front = std::make_shared<qtw::qt_frontend>(_canvas, _canvas_layout, nullptr); connect(front.get(), SIGNAL(alerted()), this, SLOT(got_alert())); _front = std::make_shared<qtw::qt_frontend_client>(front); set_main(_canvas); //setup mail _mail = std::make_shared<m::mailbox>(_id); _sender = std::make_shared<ms::sender>(_conversation->user_service(), _mail); //setup api and backend _api = std::make_shared<l::lua_api>( _app, _sender, _conversation, _conversation_service, _front.get()); _api->who_started_id = _from_id; _back = std::make_shared<l::backend_client>(_api.get(), _mail); //assign backend to frontend _front->set_backend(_back.get()); //run script and start backend on seperate thread _back->run(_app->code()); _back->start(); //setup mail service INVARIANT(_api); INVARIANT(_front); INVARIANT(_back); INVARIANT(_conversation); INVARIANT(_mail); INVARIANT(_sender); }
void fncDecl(void) /* 関数宣言 */ { SymTbl *f1; localAdrs = START_LocalAdrs; /* 局所領域割付けカウンタ初期化 */ f1 = search_name(tmpTb.name); if (f1!=NULL && f1->nmKind!=fncId && f1->nmKind!=protId) { err_ss("識別子が重複している", f1->name); f1 = NULL; } fncPt = enter(tmpTb, fncId); /* 記号表に登録 */ token = nextTkn(); localTBL_open(); /* 局所用記号表を用意 */ switch (token.kind) { /* 引数処理 */ case Void: token = nextTkn(); break; /* 引数 (void) */ case ')': break; /* 引数なし () */ default: /* 引数あり */ for (;;) { set_type(); set_name(); enter(tmpTb, paraId); /* 引数登録 */ ++(fncPt->args); /* 引数個数を+1 */ if (token.kind != ',') break; /* 宣言終了 */ token = nextTkn(); /* 次の引数 */ } } token = chk_nextTkn(token, ')'); /* ')'のはず */ if (token.kind == ';') fncPt->nmKind = protId; /* 関数プロトタイプ */ set_adrs(fncPt); /* 関数入口番地と引数アドレス設定 */ if (f1 != NULL) fncChk(f1, fncPt); /* 関数の正しさを確認 */ switch (token.kind) { case ';': token = nextTkn(); break; /* プロトタイプ */ case '{': if (IS_MAIN(fncPt)) set_main(); /* main関数処理 */ fncDecl_begin(); /* 関数入口処理 */ block(1); /* 関数本体処理 */ fncDecl_end(); /* 関数出口処理 */ break; default: err_s("関数の ; または { がない"); exit(1); } localTBL_close(fncPt); /* 局所用記号表を解消 */ del_fncTable(f1, fncPt); /* 重複登録なら解消 */ fncPt = NULL; /* 関数処理終了 */ }
void script_app::init() { INVARIANT(root()); INVARIANT(layout()); INVARIANT(_conversation); INVARIANT(_app); //setup frontend setup_decorations(); _canvas = new QWidget; _canvas_layout = new QGridLayout{_canvas}; layout()->addWidget(_canvas, 1,0,2,3); set_main(_canvas); //setup mail _mail = std::make_shared<m::mailbox>(_id); _sender = std::make_shared<ms::sender>(_conversation->user_service(), _mail); ENSURE(_mail); ENSURE(_sender); }