void TestLeftJoin::testLeftJoinIN() { Value lVal[2]; lVal[0].set(mLHSStr.c_str()); lVal[1].set(mLHSStr.c_str()); Value lLHSVal[1]; lLHSVal[0].setRange(lVal); SourceSpec lLHSCS[1]; lLHSCS[0].objectID = getDataEventID(2); lLHSCS[0].nParams = 1; lLHSCS[0].params = lLHSVal; char lStart[2]; lStart[0] = (char)0; lStart[1] = '\0'; char lEnd[2]; lEnd[0] = (char)255; lEnd[1] = '\0'; Value lVal2[2]; lVal2[0].set(lStart); lVal2[1].set(lEnd); Value lRHSVal[1]; lRHSVal[0].setRange(lVal2); SourceSpec lRHSCS[1]; lRHSCS[0].objectID = getDataEventID(3); lRHSCS[0].nParams = 1; lRHSCS[0].params = lRHSVal; IStmt * lQ = mSession->createStmt(); unsigned char lVar1 = lQ->addVariable(lLHSCS, 1); unsigned char lVar2 = lQ->addVariable(lRHSCS, 1); Value lV[2]; lV[1].setVarRef(lVar1,mRefPropID); lV[0].setVarRef(lVar2,mPINPropID); CmvautoPtr<IExprNode> lJoinET(mSession->expr(OP_EQ,2,lV)); lQ->join(lVar1, lVar2, lJoinET, QRY_LEFT_OUTER_JOIN); uint64_t lCount = 0; TVERIFYRC(lQ->count(lCount, 0, 0, ~0)); TVERIFY((int)lCount == mNumRHSPINs); lQ->destroy(); }
void CColourBox::PopulateList() { HWND ListBox = GetDlgItem(m_hwnd, IDC_COLOURS); SendMessage(ListBox, LB_RESETCONTENT, 0, 0); m_pDasherInterface->GetPermittedValues(SP_COLOUR_ID, ColourList); // Add each string to list box and index each one bool SelectionSet = false; for(unsigned int i = 0; i < ColourList.size(); i++) { Tstring Item; WinUTF8::UTF8string_to_wstring(ColourList[i], Item); LRESULT Index = SendMessage(ListBox, LB_ADDSTRING, 0, (LPARAM) Item.c_str()); SendMessage(ListBox, LB_SETITEMDATA, Index, (LPARAM) i); if(ColourList[i] == m_CurrentColours) { SendMessage(ListBox, LB_SETCURSEL, Index, 0); SelectionSet = true; } } if(SelectionSet == false) { SendMessage(ListBox, LB_SETCURSEL, 0, 0); LRESULT CurrentIndex = SendMessage(ListBox, LB_GETITEMDATA, 0, 0); m_CurrentColours = ColourList[CurrentIndex]; } // Tell list box that we have set an item for it (so that delete and edit can be grayed if required) SendMessage(m_hwnd, WM_COMMAND, MAKEWPARAM(IDC_COLOURS, LBN_SELCHANGE), 0); }
void TestACLsInfer::createMeta() { mCLSID = STORE_INVALID_CLASSID; { IStmt *lQ = mSession->createStmt(); unsigned char lVar = lQ->addVariable(); IExprNode *lET; { Value lV[2]; lV[0].setVarRef(0,mPropIDs[1]); lV[1].setParam(0); lET = mSession->expr(OP_IN, 2, lV); } TVERIFYRC(lQ->addCondition(lVar,lET)); lET->destroy(); char lB[124]; sprintf(lB, "TestACLsInfer.%s.Family.%d", mClassStr.c_str(), 0); TVERIFYRC(defineClass(mSession,lB, lQ, &mCLSID)); } mCLSID2 = STORE_INVALID_CLASSID; { IStmt *lQ = mSession->createStmt(); unsigned char lVar = lQ->addVariable(); IExprNode *lET; { Value lV[2]; lV[0].setVarRef(0,mPropIDs[2]); lV[1].setParam(0); lET = mSession->expr(OP_IN, 2, lV); } TVERIFYRC(lQ->addCondition(lVar,lET)); lET->destroy(); char lB[124]; sprintf(lB, "TestACLsInfer.%s.Family.%d", mClassStr.c_str(), 1); TVERIFYRC(defineClass(mSession,lB, lQ, &mCLSID2)); } }
void TestAbortQuery::createPINs(int pNumPINs) { mLogger.out() << " Creating " << pNumPINs << " PINs ..."; int i = 0; for(i = 0; i < pNumPINs; i++) { if(i % 100 == 0) mLogger.out() << "."; PID lPID; Value lV[20]; SETVALUE(lV[0], mPropIDs[0], i, OP_SET); Tstring lStr; MVTRand::getString(lStr, 100, 100, true, false); SETVALUE(lV[1], mPropIDs[1], lStr.c_str(), OP_SET); SETVALUE(lV[2], mPropIDs[2], lStr.c_str(), OP_SET); Tstring lWStr; MVTRand::getString(lWStr, 100, 100, true, false); SETVALUE(lV[3], mPropIDs[3], lWStr.c_str(), OP_SET); double lDouble = (double)MVTRand::getRange(10, 1000); SETVALUE(lV[4], mPropIDs[4], lDouble, OP_SET); SETVALUE(lV[5], mPropIDs[5], MVTRand::getBool(), OP_SET); lV[6].setNow(); SETVATTR(lV[6], mPropIDs[6], OP_SET); lV[7].setNow(); SETVATTR(lV[7], mPropIDs[7], OP_SET); IStream *lStream = new TestStringStream(MVTRand::getRange(10, 30) * 1024); SETVALUE(lV[8], mPropIDs[8], MVTApp::wrapClientStream(mSession, lStream), OP_SET); IStream *lStream1 = new TestStringStream(MVTRand::getRange(10, 30) * 1024); SETVALUE(lV[9], mPropIDs[9], MVTApp::wrapClientStream(mSession, lStream1), OP_SET); SETVALUE(lV[10], PROP_SPEC_CREATED, 1, OP_SET); SETVALUE(lV[11], PROP_SPEC_UPDATED, i, OP_SET); CREATEPIN(mSession, &lPID, lV, 12); } mLogger.out() << " DONE " << std::endl; }
HWND CDasherWindow::Create() { hAccelTable = LoadAccelerators(WinHelper::hInstApp, (LPCTSTR)IDC_DASHER); // Get window title from resource script Tstring WindowTitle; WinLocalisation::GetResourceString(IDS_APP_TITLE, &WindowTitle); string configFileName = "settings.xml"; if (!m_configName.empty()) configFileName = "settings." + WinUTF8::wstring_to_UTF8string(m_configName.c_str()) + ".xml"; static XmlErrorDisplay display; static CWinFileUtils fileUtils; auto settings = new Dasher::XmlSettingsStore(configFileName, &fileUtils, &display); settings->Load(); // Save the defaults if needed. settings->Save(); m_pAppSettings = new CAppSettings(0, 0, settings); // Takes ownership of the settings store. int iStyle(m_pAppSettings->GetLongParameter(APP_LP_STYLE)); HWND hWnd; if (iStyle == APP_STYLE_DIRECT) { hWnd = CWindowImpl<CDasherWindow >::Create(NULL, NULL, WindowTitle.c_str(), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN, WS_EX_NOACTIVATE | WS_EX_APPWINDOW | WS_EX_TOPMOST); ::SetMenu(hWnd, NULL); } else { hWnd = CWindowImpl<CDasherWindow >::Create(NULL, NULL, WindowTitle.c_str(), WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN); ::SetMenu(hWnd, m_hMenu); } // Create Widgets m_pEdit = new CEdit(m_pAppSettings); m_pEdit->Create(hWnd, m_pAppSettings->GetBoolParameter(APP_BP_TIME_STAMP)); m_pEdit->SetFont(m_pAppSettings->GetStringParameter(APP_SP_EDIT_FONT), m_pAppSettings->GetLongParameter(APP_LP_EDIT_FONT_SIZE)); m_pDasher = new CDasher(hWnd, this, m_pEdit, settings, &fileUtils); // Create a CAppSettings m_pAppSettings->SetHwnd(hWnd); m_pAppSettings->SetDasher(m_pDasher); m_pToolbar = new CToolbar(hWnd, m_pAppSettings->GetBoolParameter(APP_BP_SHOW_TOOLBAR)); // FIXME - the edit box really shouldn't need access to the interface, // but at the moment it does, for training, blanking the display etc m_pEdit->SetInterface(m_pDasher); m_pSpeedAlphabetBar = new CStatusControl(m_pDasher->GetSettingsUser(), m_pAppSettings); m_pSpeedAlphabetBar->Create(hWnd); m_pSplitter = new CSplitter(this, 100); m_pSplitter->Create(hWnd); m_bFullyCreated = true; return hWnd; }
Tstring & TestMeanSql::gen_value(GenCtx & pCtx, Tstring & pResult) { size_t i; Tstring lV; std::ostringstream lOs; // Either generate a good value... if (pCtx.doGood()) { int const lType = MVTRand::getRange(0, 15); switch (lType) { // Note: We don't generate collections here, because it's not (yet) a recursive structure, and here we're supposed to be 'good'. case 0: default: MVTRand::getString(lV, 5, 15, true, true); lOs << "'" << lV << "'"; break; case 1: lOs << MVTRand::getRange(0, std::numeric_limits<int>::max()); if (MVTRand::getBool()) lOs << "U"; break; case 2: lOs << MVTRand::getFloatRange(0.0, std::numeric_limits<float>::max()) << "f"; break; case 3: lOs << MVTRand::getDoubleRange(0.0, std::numeric_limits<double>::max()); break; case 4: lOs << (MVTRand::getBool() ? "TRUE" : "FALSE"); break; case 5: MVTRand::getString(lV, 5, 15, true, true); lOs << "U'http://" << lV << "'"; break; case 6: MVTRand::getString(lV, 5, 15, true, true); lOs << "X'"; for (i = 0; i < lV.length(); i++) { lOs << std::hex << std::setw(2) << std::setfill('0') << (int)lV.at(i); } lOs << std::dec << "'"; break; case 7: lOs << "INTERVAL'" << MVTRand::getRange(0, std::numeric_limits<int>::max()) << ":" << std::setw(2) << std::setfill('0') << MVTRand::getRange(0, 59) << ":" << MVTRand::getRange(0, 59) << ".12345'"; break; case 8: lOs << "TIMESTAMP'" << std::setw(4) << std::setfill('0') << MVTRand::getRange(0, 2200) << "-" << std::setw(2) << MVTRand::getRange(1, 12) << "-" << MVTRand::getRange(1, 31) << " " << MVTRand::getRange(0, 23) << ":" << MVTRand::getRange(0, 59) << ":" << MVTRand::getRange(0, 59); break; case 9: lOs << "@" << std::hex << MVTRand::getRange(0x50001, 0x500001) << std::dec; break; case 10: lOs << "@" << std::hex << MVTRand::getRange(0x50001, 0x500001) << "." << randomProperty() << std::dec; break; case 11: lOs << "@" << std::hex << MVTRand::getRange(0x50001, 0x500001) << "." << randomProperty() << std::dec << "["; if (MVTRand::getBool()) lOs << ":FIRST"; else lOs << MVTRand::getRange(0, 100); lOs << "]"; break; case 12: lOs << gen_SELECT(pCtx, lV); break; // Not necessarily 'good' currently, but who cares... case 13: lOs << "${" << gen_SELECT(pCtx, lV) << "}"; break; } } // Or generate a bad value... else { int const lType = MVTRand::getRange(0, 18); switch (lType) { // Note: We do generate collections here, because here all is permitted :). case 0: default: #if TEST_ISSUE_DOUBLE_QUOTED_VAL MVTRand::getString(lV, 5, 15, true, true); lOs << "\"" << lV << "\""; break; #endif case 1: lOs << MVTRand::getRange(0, std::numeric_limits<int>::max()) << "bla"; break; case 2: lOs << MVTRand::getRange(0, std::numeric_limits<int>::max()) << MVTRand::getRange(0, std::numeric_limits<int>::max()) << MVTRand::getRange(0, std::numeric_limits<int>::max()); break; case 3: lOs << MVTRand::getFloatRange(0.0, std::numeric_limits<float>::max()) << "fbla"; break; case 4: lOs << MVTRand::getDoubleRange(0.0, std::numeric_limits<double>::max()) << "bla"; break; case 5: lOs << MVTRand::getDoubleRange(0.0, std::numeric_limits<double>::max()) << MVTRand::getDoubleRange(0.0, std::numeric_limits<double>::max()); break; case 6: lOs << randomKeyword(); break; case 7: lOs << gen_collection(pCtx, lV); break; case 8: lOs << "MAYBE"; break; case 9: MVTRand::getString(lV, 5, 15, true, true); lOs << "U'http://" << lV << (pCtx.doGood() ? "'" : ""); break; case 10: MVTRand::getString(lV, 5, 15, true, true); lOs << "X'"; for (i = 0; i < lV.length(); i++) { lOs << std::hex << (int)lV.at(i); } lOs << std::dec << (pCtx.doGood() ? "'" : ""); break; case 11: lOs << "INTERVAL'"; if (pCtx.doGood()) lOs << MVTRand::getRange(0, std::numeric_limits<int>::max()); else lOs << MVTRand::getString(lV, 5, 15, false, true); lOs << ":" << MVTRand::getRange(0, pCtx.doGood() ? 59 : 1000) << (pCtx.doGood() ? ":" : ";") << MVTRand::getRange(0, pCtx.doGood() ? 59 : 1000) << ".12345'"; break; case 12: lOs << "TIMESTAMP'" << MVTRand::getRange(0, 10000) << "-" << MVTRand::getRange(1, pCtx.doGood() ? 12 : 1000) << "-" << MVTRand::getRange(1, pCtx.doGood() ? 31 : 1000) << " " << MVTRand::getRange(0, pCtx.doGood() ? 23 : 1000) << ":" << MVTRand::getRange(0, 59) << ":" << MVTRand::getRange(0, 59); break; case 13: lOs << "@"; if (pCtx.doGood()) lOs << std::hex << MVTRand::getRange(0x50001, 0x500001) << std::dec; else lOs << MVTRand::getString(lV, 5, 15, false, true); break; case 14: lOs << "@" << std::hex << MVTRand::getRange(0x50001, 0x500001) << "." << (pCtx.doGood() ? randomProperty() : randomWord()) << std::dec; break; case 15: lOs << "@" << std::hex << MVTRand::getRange(0x50001, 0x500001) << "." << randomProperty() << std::dec << "["; if (pCtx.doGood()) lOs << MVTRand::getRange(0, 100); else lOs << randomWord(); lOs << "]"; break; case 16: lOs << "${" << gen_whatever(pCtx, lV) << "}"; break; } } return pResult = lOs.str(); }
HWND CEdit::Create(HWND hParent, bool bNewWithDate) { m_hWnd = CWindowImpl<CEdit>::Create(hParent, NULL, NULL, ES_NOHIDESEL | WS_CHILD | ES_MULTILINE | WS_VSCROLL | WS_VISIBLE, WS_EX_CLIENTEDGE); Tstring WindowTitle; WinLocalisation::GetResourceString(IDS_APP_TITLE, &WindowTitle); m_FilenameGUI = new CFilenameGUI(hParent, WindowTitle.c_str(), bNewWithDate); return m_hWnd; }
freettcn::CType::CValue::CValue(const std::shared_ptr<const TciType> &type, const Tstring &encoding, const Tstring &encodingVariant): _type(type) { if(encoding.empty() || encoding == type->getTypeEncoding()) _encoding.reset(new Tstring(encoding)); if(encodingVariant.empty() || encodingVariant == type->getTypeEncodingVariant()) _encoding.reset(new Tstring(encodingVariant)); }
LRESULT CViewPage::WndProc(HWND Window, UINT message, WPARAM wParam, LPARAM lParam) { // most things we pass on to CPrefsPageBase, but we need to handle slider motion switch (message) { case WM_COMMAND: if(HIWORD(wParam)==BN_CLICKED || HIWORD(wParam)==LBN_SELCHANGE) { if(LOWORD(wParam) != 0 && m_hPropertySheet != 0 && m_hwnd != 0) { PropSheet_Changed(m_hPropertySheet, m_hwnd); // enables the 'Apply' button // Behaviour isn't *perfect* since it activates the Apply button even if you, say, // click 'new' alphabet then click Cancel when asked for a name. } } switch (LOWORD(wParam)) { case (IDC_COLOURS): if(HIWORD(wParam) == LBN_SELCHANGE) { HWND ListBox = GetDlgItem(m_hwnd, IDC_COLOURS); LRESULT CurrentItem = SendMessage(ListBox, LB_GETCURSEL, 0, 0); LRESULT CurrentIndex = SendMessage(ListBox, LB_GETITEMDATA, CurrentItem, 0); m_CurrentColours = ColourList[CurrentIndex]; } return TRUE; break; case IDC_DFONT_BUTTON: // TODO: Put this in a function { CHOOSEFONT Data; LOGFONT lf; HFONT Font = (HFONT) GetStockObject(DEFAULT_GUI_FONT); GetObject(Font, sizeof(LOGFONT), &lf); Tstring tstrFaceName; WinUTF8::UTF8string_to_wstring(m_pAppSettings->GetStringParameter(SP_DASHER_FONT), tstrFaceName); _tcscpy(lf.lfFaceName, tstrFaceName.c_str()); Data.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS; Data.lStructSize = sizeof(CHOOSEFONT); // TODO: Give this an owner Data.hwndOwner = NULL; Data.lpLogFont = &lf; if(ChooseFont(&Data)) { string FontName; WinUTF8::wstring_to_UTF8string(lf.lfFaceName, FontName); m_pAppSettings->SetStringParameter(SP_DASHER_FONT, FontName); } } break; case IDC_COLOURSCHEME: EnableWindow(GetDlgItem(m_hwnd, IDC_COLOURS), SendMessage(GetDlgItem(m_hwnd, IDC_COLOURSCHEME), BM_GETCHECK, 0, 0) == BST_CHECKED); break; } } CPrefsPageBase::WndProc(Window, message, wParam, lParam); }
void CAppSettings::SaveSetting(const std::string &Key, long Value) { Tstring TKey; UTF8string_to_wstring(Key, TKey); // Evil casting. Registry stores DWORD's (unsigned longs) // I'm forcing in signed longs and if I force them out again in the same // way I should get a sensible result. DWORD *RegValue = (DWORD *) & Value; DWORD MemAllow = sizeof(DWORD); LONG ErrVal = RegSetValueEx(ProductKey, TKey.c_str(), 0, REG_DWORD, (const unsigned char *)RegValue, MemAllow); }
// Simplest sub-test (meaningless random arrangements of keywords and keynames). void TestMeanSql::testRandomStatement(ISession & pSession, size_t pMinWords, size_t pMaxWords) { size_t i; size_t const lNumWords = MVTRand::getRange(pMinWords, pMaxWords); Tstring lStmt; for (i = 0; i < lNumWords; i++) { lStmt += MVTRand::getRange(0, 100) > 95 ? "@50001" : randomWord(); lStmt += " "; } testStmt(&pSession, lStmt.c_str()); }
int CFilenameGUI::QuerySaveFirst() { if(Dirty) { Tstring ResourceString; Tstring Title; WinLocalisation::GetResourceString(IDS_QUERY_SAVE_CHANGES, &ResourceString); WinLocalisation::GetResourceString(IDS_UNSAVED_CHANGES, &Title); return MessageBox(WindowWithTitlebar, ResourceString.c_str(), Title.c_str(), MB_YESNOCANCEL | MB_ICONWARNING | MB_DEFBUTTON1 | MB_APPLMODAL); } return IDNO; }
int TestPageInsertOverflow::execute() { bool lSuccess = true; if (MVTApp::startStore()) { ISession * session = MVTApp::startSession(); Value val[sNumProps];PID pid1;IPIN *pin1; MVTApp::mapURIs(session, "TestPageInsertOverflow.prop.", sNumProps, lPropIDs); TVERIFYRC(session->createPIN(NULL,0,&pin1,MODE_PERSISTENT)); pid1 = pin1->getPID(); if(pin1!=NULL) pin1->destroy(); for (int i=0; i < 10; i++) { IPIN *pin;Tstring str;int k=0;int x=0; for (k=0; k < 10; k++) { MVTApp::randomString(str,1,30); val[k].set(str.c_str());val[k].setPropID(lPropIDs[k]); } TVERIFYRC(session->createPIN(val,k-1,&pin,MODE_PERSISTENT|MODE_COPY_VALUES)); for (x =0; x < 10;x++,k++) { val[x].set(pid1);val[x].setPropID(lPropIDs[k]); val[x].op = OP_ADD;val[x].eid = STORE_FIRST_ELEMENT; } TVERIFYRC(pin->modify(val,x)); for (x =0; x < 40;x++,k++) { val[x].set("a");val[x].setPropID(lPropIDs[k]); } TVERIFYRC(pin->modify(val,x)); for (x =0; x < 10;x++,k++) { val[x].set(pid1);val[x].setPropID(lPropIDs[k]); val[x].op = OP_ADD;val[x].eid = STORE_FIRST_ELEMENT; } TVERIFYRC(pin->modify(val,x)); for (x =0; x < 10;x++,k++) { val[x].set(pid1);val[x].setPropID(lPropIDs[k]); } session->startTransaction(); TVERIFYRC(pin->modify(val,x)); if(pin!=NULL) pin->destroy(); session->rollback(); } session->terminate(); MVTApp::stopStore(); } else { TVERIFY(!"could not open store") ; } return lSuccess ? 0 : 1; }
void testStmt(ISession * pSession, Tstring const & pStmt) { if (isKnownFailure(pStmt)) return; mLogger.out() << "tried: " << pStmt.c_str() << std::endl; CompilationError lCE; CmvautoPtr<IStmt> lStmt(pSession->createStmt(pStmt.c_str(), NULL, 0, &lCE)); mLogger.out() << "obtained: " << lCE.rc << " " << (lCE.msg ? lCE.msg : "") << std::endl << std::endl; #if TEST_EXECUTE_GOOD_STMT if (RC_OK == lCE.rc && lStmt.IsValid()) lStmt->execute(); #endif }
unsigned long search(TSearchInfo pSearchInfo, unsigned long pExpResults, unsigned int *pFlags = NULL) { unsigned int lFlags = 0; TV_R(!pSearchInfo.empty(), mTest); uint64_t cntResults = 0 ; CmvautoPtr<IStmt> ftQ(mSession->createStmt()) ; unsigned char lVar = ftQ->addVariable() ; TSearchInfo::const_iterator lIter = pSearchInfo.begin(); int i = 0; for(; lIter != pSearchInfo.end(); lIter++, i++) { //string strFlags; //if ( pFlags[i] & QFT_FILTER_SW ) strFlags.append( "QFT_FILTER_SW "); //if ( pFlags[i] & MODE_ALL_WORDS ) strFlags.append( "MODE_ALL_WORDS "); PropertyID lPropID = lIter->first; Tstring lSearchKey = lIter->second; unsigned int flagsToAddConditionFT = 0; if (pFlags && pFlags[i]) { lFlags |= pFlags[i]; if (pFlags[i] & QFT_FILTER_SW) { flagsToAddConditionFT |= QFT_FILTER_SW; lFlags &= ~QFT_FILTER_SW ; } } TVRC_R( ftQ->addConditionFT( lVar, lSearchKey.c_str(), flagsToAddConditionFT, &lPropID, 1), mTest); } TVRC_R( ftQ->count( cntResults, NULL, 0, ~0, lFlags ), mTest ); ICursor* lC = NULL; ftQ->execute(&lC, NULL, 0, ~0, 0, lFlags); CmvautoPtr<ICursor> res(lC); PID lPID ; unsigned long cntCheck = 0 ; while( RC_OK == res->next(lPID) ) { if (mTest->isVerbose()) MVTApp::output(lPID, std::cout, mSession); cntCheck++ ; } TV_R(cntCheck == pExpResults, mTest) ; TV_R(cntCheck == cntResults, mTest) ; return (unsigned long)cntResults ; }
void CAppSettings::SaveSettingT(const std::string &Key, const Tstring &TValue) { Tstring TKey; UTF8string_to_wstring(Key, TKey); DWORD MemAllow = (TValue.size() + 1) * sizeof(TCHAR); //const unsigned char* StrInput = (const unsigned char*) Value.c_str(); //LONG ErrVal = RegSetValueEx(ProductKey, TKey.c_str(), 0, // REG_SZ, StrInput, MemAllow); LONG ErrVal = RegSetValueEx(ProductKey, TKey.c_str(), 0, REG_SZ, (CONST BYTE *) TValue.c_str(), MemAllow); }
void CFilenameGUI::SetWindowTitle() { Tstring TitleText; TCHAR PrettyName[_MAX_FNAME]; if(GetFileTitle(FileAndPath.c_str(), PrettyName, _MAX_FNAME) == 0) TitleText = PrettyName; else WinLocalisation::GetResourceString(IDS_UNTITLED_FILE, &TitleText); if(Dirty) TitleText += TEXT("*"); TitleText += TEXT(" - "); TitleText += AppName; SendMessage(WindowWithTitlebar, WM_SETTEXT, 0, (LPARAM) TitleText.c_str()); }
BOOL CGPacket::Find(Tstring& strKey) { DWORD dwStrKeyLen, dwKeyBufSize; LPBYTE lpbKeyBuf; dwStrKeyLen = strKey.length(); lpbKeyBuf = new BYTE[dwStrKeyLen]; memset(lpbKeyBuf, 0, dwStrKeyLen); dwKeyBufSize = Utility::StringLib::Tstring2Hex(strKey.c_str(), lpbKeyBuf); BOOL bRet = Find(lpbKeyBuf, dwKeyBufSize); delete[]lpbKeyBuf; return bRet; }
DWORD WINAPI CSendPage::ThrdSBNProc( LPVOID lpThreadParameter ) { Tstring strRound; strRound = GetText(GetDlgItem(SendPage.m_hWnd, IDC_E_ROUND)); SetText(GetDlgItem(SendPage.m_hWnd, IDC_SBN), _T("停止连续发送")); uint32_t uRound = 0; uRound = _ttoi(strRound.c_str()); DWORD dwInterval = 0; SendPage.m_bBusySending = TRUE; TCHAR tszTemp[256]; dwInterval = Utility::IniAccess::GetPrivateKeyValInt(strConfigPath, _T("自动发包"), _T("间隔时间/ms")); for ( int i=0; i < 15; i++ ) { SendPage.m_CtrlTable[i].bChecked = (BST_CHECKED==Button_GetCheck( GetDlgItem( SendPage.m_hWnd, SendPage.m_CtrlTable[i].dwCheckId ) )); } DWORD dwWaitRet = WAIT_TIMEOUT; for (int j = 0; (j < uRound) && (WAIT_TIMEOUT == dwWaitRet); j++) { for ( int i = 0; i < 15; i++ ) { if ( SendPage.m_CtrlTable[i].bChecked ) { OnButtonSend( SendPage.m_CtrlTable[i].dwButtonId ); dwWaitRet = WaitForSingleObject( SendPage.m_hEvent, dwInterval); if ( WAIT_OBJECT_0 == dwWaitRet) { break; } } } } SetText(GetDlgItem(SendPage.m_hWnd, IDC_SBN), text("连续循环N次发送")); SendPage.m_bBusySending = FALSE; return 0; }
void TestLeftJoin::testLeftJoinEQ() { Value lLHSValue[1]; lLHSValue[0].set(mLHSStr.c_str()); SourceSpec lLHSCS[1]; lLHSCS[0].objectID = getDataEventID(0); lLHSCS[0].nParams = 1; lLHSCS[0].params = lLHSValue; Value lRHSValue[1]; lRHSValue[0].set(sRHSStr[0]); SourceSpec lRHSCS[1]; lRHSCS[0].objectID = getDataEventID(1); lRHSCS[0].nParams = 1; lRHSCS[0].params = lRHSValue; IStmt * lQ = mSession->createStmt(); unsigned char lVar1 = lQ->addVariable(lLHSCS, 1); unsigned char lVar2 = lQ->addVariable(lRHSCS, 1); Value lV[2]; lV[1].setVarRef(lVar1,mRefPropID); lV[0].setVarRef(lVar2,mPINPropID); CmvautoPtr<IExprNode> lJoinET(mSession->expr(OP_EQ,2,lV)); lQ->join(lVar1, lVar2, lJoinET, QRY_LEFT_OUTER_JOIN); uint64_t lCount = 0; TVERIFYRC(lQ->count(lCount, 0, 0, ~0)); TVERIFY(lCount == (uint64_t)mLHSPINs.size()); lQ->destroy(); }
BOOL CDOMPlugin::PatchUserDefineAddr() { //DebugBreak(); //return TRUE; //Tstring strShellCode = Utility::IniAccess::GetPrivateKeyValString(strConfigPath, _T("CODE"), _T("stub")); LPVOID lpBaseAddress = VirtualAlloc(NULL, 1024, MEM_COMMIT, PAGE_EXECUTE_READWRITE); StubShell = (PSTUP_SHELL)lpBaseAddress;// StubShell->CallBackFun = (ULONG)&PacketCollect; DWORD dwCodeSize = Utility::StringLib::Tstring2Hex(strStub.c_str(), StubShell->ShellCode); StubShell->PatchAt = m_sPatchAt; for (int i = 0; i < dwCodeSize; i++) { if (StubShell->ShellCode[i] == 0xff) { if (StubShell->ShellCode[i + 1] == 0x15) { *(ULONG*)&StubShell->ShellCode[i + 2] = (ULONG)&StubShell->CallBackFun; } if (StubShell->ShellCode[i + 1] == 0x25) { *(ULONG*)&StubShell->ShellCode[i + 2] = (ULONG)&StubShell->PatchAt; } } } DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)StubShell->PatchAt, (PVOID)StubShell->ShellCode); DetourTransactionCommit(); return TRUE; }
DataEventID TestLeftJoin::getDataEventID(int pClassIndex) { char lB[64]; sprintf(lB, "TestLeftJoin.%s.Family%d", mClassStr.c_str(), pClassIndex); DataEventID lCLSID = STORE_INVALID_CLASSID; TVERIFYRC(mSession->getDataEventID(lB, lCLSID)); return lCLSID; }
void TestFamilyOrder::createFamily(unsigned int flag) { IStmt *lFamilyQ = mSession->createStmt(); unsigned char lVar = lFamilyQ->addVariable() ; Value ops[2] ; ops[0].setVarRef(lVar, mPropIDs[0]); ops[1].setParam(0); IExprNode *lE = mSession->expr(OP_BEGINS, 2, ops, flag); lFamilyQ->addCondition( lVar, lE ) ; Tstring randStr; MVTApp::randomString(randStr,10,20); randStr += ".family"; fID = STORE_INVALID_CLASSID; TVERIFYRC(defineClass(mSession, randStr.c_str(), lFamilyQ, &fID)); lFamilyQ->destroy(); }
LRESULT CAdvancedPage::WndProc(HWND Window, UINT message, WPARAM wParam, LPARAM lParam) { // most things we pass on to CPrefsPageBase, but we need to handle slider motion switch (message) { case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == LBN_SELCHANGE) { if (LOWORD(wParam) != 0 && m_hPropertySheet != 0 && m_hwnd != 0) { PropSheet_Changed(m_hPropertySheet, m_hwnd); // enables the 'Apply' button // Behaviour isn't *perfect* since it activates the Apply button even if you, say, // click 'new' alphabet then click Cancel when asked for a name. } } switch (LOWORD(wParam)) { case IDC_EFONT_BUTTON: // TODO: Put this in a function { CHOOSEFONT Data; LOGFONT lf; HFONT Font = (HFONT)GetStockObject(DEFAULT_GUI_FONT); GetObject(Font, sizeof(LOGFONT), &lf); Tstring tstrFaceName; WinUTF8::UTF8string_to_wstring(m_pAppSettings->GetStringParameter(APP_SP_EDIT_FONT), tstrFaceName); _tcscpy(lf.lfFaceName, tstrFaceName.c_str()); lf.lfHeight = m_pAppSettings->GetLongParameter(APP_LP_EDIT_FONT_SIZE); Data.Flags = CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS; Data.lStructSize = sizeof(CHOOSEFONT); Data.hwndOwner = NULL; Data.lpLogFont = &lf; if (ChooseFont(&Data)) { string FontName; WinUTF8::wstring_to_UTF8string(lf.lfFaceName, FontName); m_pAppSettings->SetStringParameter(APP_SP_EDIT_FONT, FontName); m_pAppSettings->SetLongParameter(APP_LP_EDIT_FONT_SIZE, lf.lfHeight); } } break; case IDC_CONTROLMODE: EnableWindow(GetDlgItem(m_hwnd, IDC_CONTROLBOXES), SendMessage(GetDlgItem(m_hwnd, IDC_CONTROLMODE), BM_GETCHECK, 0, 0) == BST_CHECKED); break; } } return CPrefsPageBase::WndProc(Window, message, wParam, lParam); }
void TestUndelete::testFullScan() { Value lV[1]; lV[0].set(mQueryStr.c_str()); IStmt *lQ = getQuery(1, mPropIDs[2], lV); long const lStartTime = getTimeInMs(); test(lQ); long const lEndTime = getTimeInMs(); mLogger.out() << "Time taken for testFullScan() :: " << (lEndTime - lStartTime) << " ms" << std::endl; lQ->destroy(); }
bool CAppSettings::GetlpByte(const Tstring &Key, BYTE **Data) const { *Data = new BYTE[1]; unsigned long datasize = sizeof(BYTE[1]); DWORD Type; LONG ErrVal = RegQueryValueEx(ProductKey, Key.c_str(), 0, &Type, *Data, &datasize); while(ErrVal == ERROR_MORE_DATA) { delete[] * Data; *Data = new BYTE[datasize]; ErrVal = RegQueryValueEx(ProductKey, Key.c_str(), 0, &Type, *Data, &datasize); } // Perhaps I should spend lots of time working out why the registry doesn't work. // when this fails. Would probably just confuse users though. Users with a broken // registry can live with defaults :) if((ErrVal == ERROR_SUCCESS) && (*Data != 0)) return true; else return false; }
void TestACLsInfer::createPINs() { INITLOCALPID(mFolderPID); { Value lV[2]; SETVALUE(lV[0], mPropIDs[0], "Folder PIN", OP_SET); CREATEPIN(mSession, &mFolderPID, lV, 1); IPIN *lPIN = mSession->getPIN(mFolderPID); int i = 0; for(i = 0; i < sNumIdentities; i++) { IdentityID lIID = getIdentityID(i); lV[0].setIdentity(lIID); SETVATTR_C(lV[0], PROP_SPEC_ACL, OP_ADD, STORE_LAST_ELEMENT); lV[0].meta = META_PROP_READ; if(MVTRand::getBool()) lV[0].meta = lV[0].meta | META_PROP_WRITE; TVERIFYRC(lPIN->modify(lV, 1)); } if(lPIN) { if(isVerbose()) MVTApp::output(*lPIN, mLogger.out(), mSession); lPIN->destroy();} } mLogger.out() << "\tCreating " << sNumPINs << " PINs ..."; RefVID *lRef = (RefVID *)mSession->malloc(1*sizeof(RefVID)); int i = 0; for(i = 0; i < sNumPINs; i++) { if(i % 100 == 0) mLogger.out() << "."; PID lPID; Value lV[5]; Tstring lStr; MVTRand::getString(lStr, 10, 10, true, false); SETVALUE(lV[0], mPropIDs[0], lStr.c_str(), OP_SET); SETVALUE(lV[1], mPropIDs[1], i, OP_SET); RefVID l = {mFolderPID, PROP_SPEC_ACL, STORE_COLLECTION_ID, STORE_CURRENT_VERSION}; *lRef = l; SETVALUE(lV[2], PROP_SPEC_ACL, *lRef, OP_SET); SETVALUE(lV[3], mPropIDs[2], i, OP_SET); CREATEPIN(mSession, &lPID, lV, 4); } mExpectedCount = sNumPINs; mSession->free(lRef); mLogger.out() << " DONE " << std::endl; }
VOID CGPacket::Replace(Tstring& strKey, Tstring& strData) { DWORD dwStrKeyLen, dwStrDataLen, dwHexKeySize, dwHexDataSize; LPBYTE lpbKeyBuf, lpbDataBuf; dwStrKeyLen = strKey.length(); lpbKeyBuf = new BYTE[dwStrKeyLen]; memset(lpbKeyBuf, 0, dwStrKeyLen); dwHexKeySize = Utility::StringLib::Tstring2Hex(strKey.c_str(), lpbKeyBuf); dwStrDataLen = strKey.length(); lpbDataBuf = new BYTE[dwStrDataLen]; memset(lpbDataBuf, 0, dwStrDataLen); dwHexDataSize = Utility::StringLib::Tstring2Hex(strData.c_str(), lpbDataBuf); Replace(lpbKeyBuf, dwHexKeySize, lpbDataBuf, dwHexDataSize); delete[]lpbKeyBuf; delete[]lpbDataBuf; }
void TestLeftJoin::createData() { MVTRand::getString(mLHSStr, 10, 10, false, true); mNumRHSPINs = 0; mNumFamily2PINs = 0; int i = 0; std::vector<PID> lPINs; // Create PINs for Family2 for(i = 0; i < (int)sNumPINs/2; i++) { Value lV[5]; Tstring lRHSStr; SETVALUE(lV[0], mPropIDs[2], MVTRand::getRange(10, 100), OP_SET); SETVALUE(lV[1], mPropIDs[3], MVTRand::getBool(), OP_SET); Tstring lStr; MVTRand::getString(lStr, 10, 10, false, true); SETVALUE(lV[2], mPropIDs[4], lStr.c_str(), OP_SET); bool lJoinFamily = MVTRand::getRange(0, 100) > 50?true:false; if(lJoinFamily) { int lRand = MVTRand::getRange(0, 2); lRHSStr = sRHSStr[lRand]; SETVALUE(lV[3], mRHSPropID, lRHSStr.c_str(), OP_SET); } PID lPID = {STORE_INVALID_PID, STORE_OWNER}; CREATEPIN(mSession, &lPID, lV, lJoinFamily?4:3); IPIN *lPIN = mSession->getPIN(lPID); TVERIFY(lPIN != NULL); if(lPIN) { if(lJoinFamily) { mRHSPINs.insert(std::map<Tstring, PID>::value_type(lRHSStr, lPID)); mNumFamily2PINs++; } lPINs.push_back(lPID); lPIN->destroy(); mNumRHSPINs++; } } // Create PINs for Family1 for(i = 0; i < (int)sNumPINs/2; i++) { Value lV[5]; SETVALUE(lV[0], mLHSPropID, mLHSStr.c_str(), OP_SET); SETVALUE(lV[1], mPropIDs[2], MVTRand::getRange(10, 100), OP_SET); SETVALUE(lV[2], mPropIDs[3], MVTRand::getBool(), OP_SET); Tstring lStr; MVTRand::getString(lStr, 10, 10, false, true); SETVALUE(lV[3], mPropIDs[4], lStr.c_str(), OP_SET); SETVALUE(lV[4], mPropIDs[5], lPINs[i], OP_SET); // add VT_REFID property to pins created before PID lPID = {STORE_INVALID_PID, STORE_OWNER}; CREATEPIN(mSession, &lPID, lV, 5); IPIN *lPIN = mSession->getPIN(lPID); TVERIFY(lPIN != NULL); mLHSPINs.push_back(lPID); if(lPIN) lPIN->destroy(); } lPINs.clear(); }
virtual size_t read(void * buf, size_t maxLength) { size_t const lLength = MvStoreSerialization::PrimitivesOutDbg::mymin(mLength - mSeek, maxLength); if ( lLength == 0 ) return 0 ; for (size_t i = 0; i < lLength; i++) ((char*)buf)[i] = getCharAt(mSeek + i, mStartChar); // Algorithm below assumes read is only called once (it could be fixed // if this is found not to be the case) if ( rndm < maxLength ) { //insert my search string at the offset rndm in the stream //(i.e. 0 for begining). Tstring tmpString = srchString; tmpString.insert(0," "); tmpString += " " ; // If this fails we are about to do a buffer overrun because we need to insert the // string too near the end of the buffer. This is just a unlikely bug in the test assert( rndm + tmpString.length() < maxLength ) ; // memcpy instread of string copy so that the string terminator isn't copied memcpy((char*)buf+rndm,tmpString.c_str(), tmpString.length()); } else { // Need to add it in a later call to read rndm -= maxLength ; } mSeek += lLength; // Position for the next read calls return lLength; }