NaiveBayesGibbs::NaiveBayesGibbs(std::string trainDir, std::string testDir, int parameter, int interval): DIRICHLET_HYPERPARAMETER(parameter), INTERVAL(interval) { //get all train files std::cout << "loading all files..." << std::endl; numCategories_ = stasticsFiles(trainDir, true); for (int c=0; c<numCategories_; c++) categoryFiles_.push_back(0); stasticsFiles(testDir, false); std::cout << "load "<< trainFiles_.size() << " files for train..." << std::endl; std::cout << "load "<< testFiles_.size() << " files for test..." << std::endl; std::cout << "num categories : " << numCategories_ << std::endl; //init sampling labels; std::cout << "init sampling labels..." << std::endl; initLabels(); //init sampling theta std::cout << "init sampling theta..." << std::endl; stasticsWords(); updateTheta(0); const int numTrainFiles = trainFiles_.size(); const double Z = (numTrainFiles + numCategories_*DIRICHLET_HYPERPARAMETER -1); logLabelNorm = log(Z); }
ECoSCtrlDialog::ECoSCtrlDialog( wxWindow* parent, iONode props, const char* devices ) { Create(parent, -1, wxString::From8BitData(wDigInt.getlib(props)).Upper()); m_Props = props; m_Devices = devices; initLabels(); initValues(); if( StrOp.equals( wDigInt.mcs2, wDigInt.getlib( m_Props ) ) || StrOp.equals( wDigInt.mgbox, wDigInt.getlib( m_Props ) ) ) { m_Port->Enable(false); this->SetTitle( _T("CS2") ); if( wDigInt.getmcs2(m_Props) == NULL ) { iONode mcs2 = NodeOp.inst(wMCS2.name(), m_Props, ELEMENT_NODE); NodeOp.addChild(m_Props, mcs2); } } else { m_FBMod->Enable(false); m_Discovery->Enable(false); m_SLCAN->Enable(false); } GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); GetSizer()->Layout(); }
ToursDlg::ToursDlg( wxWindow* parent, iONode tour, bool save, const char* startblock ) :toursdlggen( parent ) { m_Props = tour; m_bSave = save; m_StartBlock = startblock; m_StartBlockID->SetValue((startblock==NULL)?_T(""):wxString(startblock,wxConvUTF8)); initLabels(); initIndex(); initScheduleCombo(); m_IndexPanel->GetSizer()->Layout(); m_SchedulesPanel->GetSizer()->Layout(); m_TourBook->Fit(); m_TourBook->SetSelection(0); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); m_TourList->SetFocus(); if( m_Props != NULL ) { initValues(); } }
ActionsCtrlDlg::ActionsCtrlDlg( wxWindow* parent, iONode node, const char* states ) { Init(); Create(parent, -1, wxGetApp().getMsg("actionctrl")); m_Props = node; m_iCursel = wxNOT_FOUND; m_iCurCondsel = wxNOT_FOUND; initLabels(); SetTitle(wxGetApp().getMsg("actionctrl") + wxT(": ") + wxString(wItem.getid(m_Props), wxConvUTF8)); m_ConditionsPanel->Enable(false); initIndex(-1); initValues(); m_IndexPanel->GetSizer()->Layout(); m_ConditionsPanel->GetSizer()->Layout(); m_Notebook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); GetSizer()->Layout(); if( states != NULL ) { iOStrTok tok = StrTokOp.inst(states, ','); while( StrTokOp.hasMoreTokens(tok) ) { m_State->Append( wxString( StrTokOp.nextToken(tok), wxConvUTF8 ) ); } StrTokOp.base.del(tok); } }
StageDlg::StageDlg( wxWindow* parent, iONode p_Props ):stagedlggen( parent ) { TraceOp.trc( "stagedlg", TRCLEVEL_INFO, __LINE__, 9999, "stagedlg" ); m_TabAlign = wxGetApp().getTabAlign(); m_Props = p_Props; m_Section = NULL; m_SortCol = 0; m_SortOrder = true; initLabels(); m_General->GetSizer()->Layout(); m_Sections->GetSizer()->Layout(); m_Notebook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); m_Notebook->Connect( wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( StageDlg::OnSetPage ), NULL, this ); m_SetPage = 0; if( m_Props != NULL ) { initValues(); m_SetPage = wxGetApp().getFrame()->isAutoMode()?2:1; } initIndex(); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, ID_STAGEBOOK ); wxPostEvent( m_Notebook, event ); }
CmdRecorder::CmdRecorder( wxWindow* parent ) :CmdRecorderGen( parent ) { m_Me = NULL; m_Stop->SetBitmapLabel(*_img_stop); m_Pause->SetBitmapLabel(*_img_pause); m_Record->SetBitmapLabel(*_img_record); m_Play->SetBitmapLabel(*_img_play); m_Stop->Refresh(); m_Pause->Refresh(); m_Record->Refresh(); m_Play->Refresh(); initLabels(); GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); Boolean recording = ScriptOp.isRecording(wxGetApp().getScript()); Boolean playing = ScriptOp.isPlaying(wxGetApp().getScript(), NULL); m_Record->Enable( recording?false:true ); m_Play->Enable( recording?false:true ); m_Pause->Enable( recording?false:true ); m_Timer = new wxTimer( this, ME_CmdTimer ); Connect( wxEVT_TIMER, wxTimerEventHandler( CmdRecorder::OnTimer ), NULL, this ); initList(); }
PowerCtrlDlg::PowerCtrlDlg( wxWindow* parent ):powerctrlgen( parent ) { m_SelBooster = NULL; m_BoosterMap = MapOp.inst(); m_SelectedRow = -1; initLabels(); initValues(NULL); GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); /* wxFont* font = new wxFont( m_TracksGrid->GetDefaultCellFont() ); font->SetPointSize( (int)(font->GetPointSize() - 1 ) ); m_Boosters->SetDefaultCellFont( *font ); */ m_Boosters->AutoSizeColumns(); m_Boosters->AutoSizeRows(); m_Boosters->AutoSizeColumns(); m_Boosters->FitInside(); GetSizer()->Layout(); iONode ini = wxGetApp().getIni(); iONode powerctrl = wGui.getpowerctrl(ini); if( powerctrl != NULL ) { if( wPowerCtrl.getcx(powerctrl) > 0 && wPowerCtrl.getcy(powerctrl) > 0 ) { SetSize(wPowerCtrl.getx(powerctrl), wPowerCtrl.gety(powerctrl), wPowerCtrl.getcx(powerctrl), wPowerCtrl.getcy(powerctrl)); } else SetSize(wPowerCtrl.getx(powerctrl), wPowerCtrl.gety(powerctrl)); } }
/** Find a maximum weight matching in a bipartite graph using the * hungarian algorithm algorithm. * @param g1 is an undirected graph * @param match is a list in which the result is returned */ hungarian::hungarian(Wgraph& g1, Glist<edge>& match) : g(&g1) { // divide vertices into two independent sets split = new ListPair(g->n()); if (!findSplit(*g,*split)) Util::fatal("hungarian: graph is not bipartite"); mEdge = new edge[g->n()+1]; roots = new Dlist(g->n()); for (vertex u = 1; u <= g->n(); u++) { mEdge[u] = 0; if (split->isIn(u)) roots->addLast(u); } // initialize vertex labels lab = new int[g->n()+1]; initLabels(); // augment the matching until no augmenting path remains vertex u; pEdge = new edge[g->n()+1]; while ((u = findPath()) != 0) { augment(u); } // add matched edges to output set match.clear(); for (vertex u = 1; u <= g->n(); u++) { edge e = mEdge[u]; if (e != 0 && u < g->mate(u,e)) match.addLast(e); } delete split; delete roots; delete [] mEdge; delete [] pEdge; delete [] lab; }
Softwareupdates::Softwareupdates( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style ) { Init(); Create(parent, -1, wxGetApp().getMsg("softwareupdates") ); initLabels(); m_Timer = new wxTimer( this, ME_UpdateTimer ); m_Progress = NULL; m_TimerCount = 0; m_Ready = false; m_Connected = false; m_Release = NULL; m_ReleaseNode = NULL; checkForNew(); bool rc = m_Timer->Start( 100, true ); m_Progress = new wxProgressDialog(wxGetApp().getMsg( "softwareupdates" ), wxGetApp().getMsg( "searchingupdates" ), 2, NULL, wxPD_CAN_ABORT | wxPD_AUTO_HIDE | wxPD_APP_MODAL ); m_Progress->ShowModal(); initValues(); }
BlockGroupingDialog::BlockGroupingDialog( wxWindow* parent, iONode props, bool save ) { m_TabAlign = wxGetApp().getTabAlign(); m_CondSel = wxNOT_FOUND; Create(parent, -1, wxGetApp().getMsg("blockgrouptable") ); m_Props = props; m_bSave = save; initLabels(); initIndex(); if( m_Props != NULL ) { initValues(); //m_Notebook->SetSelection( 1 ); wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, ID_PANEL_LINK_GENERAL ); wxPostEvent( this, event ); } m_IndexPanel->GetSizer()->Layout(); m_GeneralPanel->GetSizer()->Layout(); m_PropertiesPanel->GetSizer()->Layout(); m_ConditionsPanel->GetSizer()->Layout(); m_Notebook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }
SelTabTrackDialog::SelTabTrackDialog( wxWindow* parent, iONode p_Props ) { Init(); Create(parent, -1, wxGetApp().getMsg("seltabpos") ); m_Props = p_Props; initLabels(); initValues(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }
int Hungarian(){ int ret = 0; mxMatch = 0; ms(xy,-1); ms(yx,-1); initLabels(); Augment(); rep(x,N) ret += cost[x][xy[x]]; return ret; }
DmxDlg::DmxDlg( wxWindow* parent, iONode props ):dmxdlggen( parent ) { m_Props = props; initLabels(); // Resize GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); initValues(); }
Uhl68610Dlg::Uhl68610Dlg( wxWindow* parent ) :uhl68610dlggen( parent ) { m_Queue = QueueOp.inst(100); m_SendedCmd = NULL; m_Timer = new wxTimer( this, DTOPSW_Timer ); m_Timer->Connect( wxEVT_TIMER, wxTimerEventHandler( Uhl68610Dlg::onTimer ), NULL, this ); initLabels(); }
ABoxDlg::ABoxDlg( wxWindow* parent, const char* text, const char* title ):AboxDlgGen( parent ) { m_StubList = ListOp.inst(); m_SelectedStub = wxNOT_FOUND; m_ReadOnly = false; m_SortCol = 0; m_AddedFilename[0] = '\0'; m_AddedUID[0] = '\0'; m_AddedPart = -1; m_DownloadFilename[0] = '\0'; m_DownloadUID[0] = '\0'; m_DownloadPart = -1; m_Enable = true; m_Ini = wGui.getabox( wxGetApp().getIni() ); if( m_Ini == NULL ) { m_Ini = NodeOp.inst(wABox.name(), wxGetApp().getIni(), ELEMENT_NODE); NodeOp.addChild( wxGetApp().getIni(), m_Ini ); } m_FindInText->SetValue(wABox.isfindintext(m_Ini)?true:false); m_FindInCategory->SetValue(wABox.isfindincategory(m_Ini)?true:false); m_FindInFilename->SetValue(wABox.isfindinfilename(m_Ini)?true:false); m_FindInDate->SetValue(wABox.isfindindate(m_Ini)?true:false); m_ShowPath->SetValue(wABox.isshowpath(m_Ini)?true:false); m_Link->SetValue(wABox.islink(m_Ini)?true:false); m_Open->Enable(false); m_Modify->Enable(false); m_Delete->Enable(false); //m_Link->Enable(false); // only links are supported initLabels(); m_FromDate->SetValue(wxDateTime::Now()); m_ToDate->SetValue(wxDateTime::Now()); iONode cmd = NodeOp.inst( wDataReq.name(), NULL, ELEMENT_NODE ); wDataReq.setcmd( cmd, wDataReq.abox_getcategories ); wxGetApp().sendToRocrail( cmd ); cmd->base.del(cmd); if( title != NULL ) { SetTitle(wxT("Archivebox: ") + wxString(title,wxConvUTF8) ); } if( text != NULL ) { m_FindText->SetValue( wxString(text,wxConvUTF8) ); doFind(text); } else doFind(""); }
DCC232Dlg::DCC232Dlg( wxWindow* parent, iONode props, const char* devices ) :dcc232gen( parent ) { m_Props = props; m_Devices = devices; initLabels(); initValues(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); GetSizer()->Layout(); }
TTTrackDialog::TTTrackDialog( wxWindow* parent, iONode p_Props, int min, int max ) { Create(parent, -1, wxGetApp().getMsg("turntabletrack") ); m_Props = p_Props; if( min > 0 ) { m_TrackNr->SetRange(min, max); m_DecTrackNr->SetRange(min, max); m_OppTrackNr->SetRange(min, max); } initLabels(); initValues(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }
TrackDialog::TrackDialog( wxWindow* parent, iONode l_Props ) { m_TabAlign = wxGetApp().getTabAlign(); Create(parent, -1, wxGetApp().getMsg("track") ); m_Props = l_Props; initLabels(); initValues(); m_GeneralPanel->GetSizer()->Layout(); m_LocationPanel->GetSizer()->Layout(); m_Notebook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }
void BattleLayer::initBattleGame() { m_battleLayout = GUIReader::getInstance()->widgetFromJsonFile("BattleUI_1.ExportJson"); m_battleBase->addChild(m_battleLayout); ArmatureDataManager::getInstance()->addArmatureFileInfo("BattleAnimation.ExportJson"); auto paw = Armature::create("BattleAnimation"); paw->setPosition(Point(472, 151)); paw->setTag(TAG_BATTLE_PAW); m_battleBase->addChild(paw); initBgHint(); initLabels(); }
ChessClockWidget::ChessClockWidget(bool white, QWidget *parent) : ChessClock(white, parent) { greenTime_ = 0; mainLayout = new QVBoxLayout; initPictures(); initLabels(); initTop(); initBottom(); setLayout( mainLayout ); }
bool PatternMatrix::initWithGameMode(eGameMode mode) { if(!CCLayer::init()) { return false; } gGameMode = mode; winSize = CCDirector::sharedDirector()->getVisibleSize(); CCSprite* background = CCSprite::create("background.jpg"); background->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addChild(background); mPatternBatchNode = CCSpriteBatchNode::create("baseResource.png", MATRIX_ROW_MAX * MATRIX_COL_MAX * 2); this->addChild(mPatternBatchNode, 1); mCheckMarkSpr = CCSprite::createWithSpriteFrameName("pattern_selected.png"); mCheckMarkSpr->setScale(2.4); mCheckMarkSpr->setPosition(ccp(-100.0,-100.0)); addChild(mCheckMarkSpr, 1); mPromptMarkSpr = CCSprite::createWithSpriteFrameName("pattern_selected.png"); mPromptMarkSpr->setScale(2.4); mPromptMarkSpr->setPosition(ccp(-100.0, -100.0)); addChild(mPromptMarkSpr, 1); mPromptMarkSpr->runAction(CCRepeatForever::create(CCSequence::create(CCFadeIn::create(1.0), CCFadeOut::create(1.0), NULL))); InitData(); initProgressWithGameMode(); initLabels(); PatternBg = CCRenderTexture::create(768, 1280); PatternBg->setPosition( winSize.width / 2, winSize.height /2); this->addChild(PatternBg); initArrayFrames(); mPatternsPos = createIntArray(MATRIX_ROW_MAX, MATRIX_COL_MAX, CCPointZero); mPatternsSpr = createIntArrays(MATRIX_ROW_MAX, MATRIX_COL_MAX, NULL); return true; }
MainWidget::MainWidget(int fps, QWidget *parent) : fps(fps), QWidget(parent) { ui.setupUi(this); srand((unsigned int)time(NULL));//初始化随机数种子 initWidgetProp(); initOpenGLContext(); initMultiSample(); initGlew(); initGLStates(); initLabels(); //设置绘制计时器 connect(&drawTimer, SIGNAL(timeout()), this, SLOT(update())); drawTimer.start(1000 / fps); fpsTime = new QTime; fpsTime->start(); isMousePress = false; pictureWidget = new PictureWidget; editPictureDialog = new EditPictureDialog; editPictureDialog->hide(); helpDialog = new QDialog; QPalette palette = helpDialog->palette(); QPixmap logo("Resources/bg/logo.jpg"); palette.setBrush(QPalette::Window, logo); helpDialog->setWindowTitle(QString::fromLocal8Bit("关于")); helpDialog->setPalette(palette); helpDialog->resize(logo.size()); helpDialog->hide(); Scene::initSingletons(WIDTH, HEIGHT); scene = new Scene(WIDTH, HEIGHT); connect(scene, SIGNAL(setFileName(QString)), this, SLOT(setFileName(QString))); connect(scene, SIGNAL(setResolution(int, int)), this, SLOT(setResolution(int, int))); connect(scene, SIGNAL(setAlpha(float)), this, SLOT(setAlpha(float))); connect(scene, SIGNAL(displayCenterPicture(QString)), this, SLOT(displayCenterPicture(QString))); connect(scene, SIGNAL(showEditPictureDialog(QString, QString, QString, int, int)), this, SLOT(showEditPictureDialog(QString, QString, QString, int, int))); connect(scene, SIGNAL(showHelpDialog()), this, SLOT(showHelpDialog())); connect(pictureWidget, SIGNAL(closing()), this, SLOT(show())); connect(editPictureDialog, SIGNAL(reloadPicture(QString)), scene, SLOT(reloadPicture(QString))); }
OperatorDlg::OperatorDlg( wxWindow* parent, iONode p_Props, bool save, const char* blockid ) :operatordlggen( parent ) { TraceOp.trc( "opdlg", TRCLEVEL_INFO, __LINE__, 9999, "cardlg" ); m_TabAlign = wxGetApp().getTabAlign(); m_Props = p_Props; m_bSave = save; m_CarProps = NULL; m_BlockID = blockid; initLabels(); m_IndexPanel->GetSizer()->Layout(); m_ControlPanel->GetSizer()->Layout(); m_ConsistPanel->GetSizer()->Layout(); m_OperatorBook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); initIndex(); m_OperatorList->SetFocus(); m_OperatorBook->Connect( wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( OperatorDlg::onSetPage ), NULL, this ); m_SetPage = 0; m_ControlPanel->Enable(false); m_ConsistPanel->Enable(false); m_StdButtonApply->Enable(m_bSave); if( m_Props != NULL ) { initValues(); m_SetPage = 1; } wxCommandEvent event( wxEVT_COMMAND_MENU_SELECTED, -1 ); wxPostEvent( m_OperatorBook, event ); if( m_BlockID == NULL ) { m_ShowAllOperators->SetValue(true); m_ShowAllOperators->Enable(false); } }
BarJuTCntrlDlg::BarJuTCntrlDlg( wxWindow* parent, iONode props, const char* devices ) { int isBARJUT = StrOp.equals( wDigInt.barjut, wDigInt.getlib(props) ); int isSPROGII = StrOp.equals( wDigInt.sprog, wDigInt.getlib(props) ); int isDCC232 = StrOp.equals( wDigInt.dcc232, wDigInt.getlib(props) ); int isDMX4ALL = StrOp.equals( wDigInt.dmx4all, wDigInt.getlib(props) ); Create(parent, -1, wxString::From8BitData(wDigInt.getlib(props)).Upper() ); m_Props = props; m_Devices = devices; initLabels(); GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); initValues(); m_Polling->Enable(isBARJUT); m_labPolling->Enable(isBARJUT); }
VariableDlg::VariableDlg( wxWindow* parent ):VariableDlgGen( parent ) { m_Props = NULL; m_SortCol = 0; initLabels(); m_IndexPanel->GetSizer()->Layout(); m_GeneralPanel->GetSizer()->Layout(); m_VarBook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); initIndex(); m_VarBook->SetSelection(0); }
AccDecDlg::AccDecDlg( wxWindow* parent ):AccDecGenDlg( parent ) { m_Props = NULL; m_Image->SetBitmapLabel( wxBitmap(nopict_xpm) ); m_Image->Refresh(); initLabels(); initCVDesc(); m_IndexPanel->GetSizer()->Layout(); m_GeneralPanel->GetSizer()->Layout(); m_Notebook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); initIndex(); }
uConS88Dlg::uConS88Dlg( wxWindow* parent, iONode props, const char* devices ) : ucons88dlggen( parent ) { m_Props = props; m_Devices = devices; __initVendors(); initLabels(); initValues(); // m_General->GetSizer()->Layout(); // m_Options->GetSizer()->Layout(); // m_General->Fit(); // m_Options->Fit(); GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }
WeatherDlg::WeatherDlg( wxWindow* parent, iONode props ):WeatherDlgGen( parent ) { m_PropsList = props; m_Props = NULL; m_SelectedRow = -1; m_RGBWPanel->setListener(this); initLabels(); m_IndexPanel->GetSizer()->Layout(); m_DayPanel->GetSizer()->Layout(); m_NightPanel->GetSizer()->Layout(); m_ThemePanel->GetSizer()->Layout(); m_ColorPanel->GetSizer()->Layout(); m_WeatherBook->Fit(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); initColorGrid(); initIndex(); m_WeatherBook->SetSelection(0); if( m_IndexList->GetCount() > 0 ) { m_IndexList->SetSelection(0); m_Props = (iONode)m_IndexList->GetClientData(m_IndexList->GetSelection()); if( m_Props != NULL ) { initValues(); initThemeIndex(); m_SelectedRow = wxGetApp().getFrame()->GetHour(); m_RGBWPanel->setWeather(m_Props, m_SelectedRow*2, m_ColorWhite->IsChecked(), m_ColorBrightness->IsChecked(), m_ColorSaturation->IsChecked(), m_ColorWhite2->IsChecked()); m_RGBWPanel->setDayTime(m_SelectedRow, 0); m_ColorGrid->SelectRow(m_SelectedRow*2); m_ColorGrid->MakeCellVisible(m_SelectedRow*2, 0); } } }
RocNetDlg::RocNetDlg( wxWindow* parent, iONode props, const char* devices ):rocnetdlggen( parent ) { m_Props = props; m_Devices = devices; iONode rnini = wDigInt.getrocnet(m_Props); if( rnini == NULL ) { rnini = NodeOp.inst( wRocNet.name(), m_Props, ELEMENT_NODE ); NodeOp.addChild( m_Props, rnini ); } __initVendors(); initLabels(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); GetSizer()->Layout(); initValues(); }
CbusDlg::CbusDlg( wxWindow* parent, iONode props, const char* devices ):cbusdlggen( parent ) { m_Props = props; m_Devices = devices; iONode cbusini = wDigInt.getcbus(m_Props); if( cbusini == NULL ) { cbusini = NodeOp.inst( wCBus.name(), m_Props, ELEMENT_NODE ); NodeOp.addChild( m_Props, cbusini ); } initLabels(); initValues(); GetSizer()->Layout(); GetSizer()->Fit(this); GetSizer()->SetSizeHints(this); }