void CNetRadioDlg::OnBnClickedTest() { CString strValue; IHTMLDocument2* pDoc = (IHTMLDocument2*)m_Browser.GetHtmlDocument(); HRESULT hr = S_FALSE; IHTMLElementCollection* pAllElem = NULL; IHTMLElementCollection* pAllScript = NULL; IHTMLElement* pElem = NULL; hr = pDoc->get_scripts(&pAllScript); if(SUCCEEDED(hr) && pAllScript != NULL) { IDispatchPtr pElemDisp = NULL; _variant_t varID(1); _variant_t varIdx(0); hr = pAllScript->item(varID, varIdx, &pElemDisp); if(SUCCEEDED(hr) && pElemDisp != NULL) { hr = pElemDisp->QueryInterface(IID_IHTMLElement,(void**)&pElem); if(SUCCEEDED(hr) && pElem != NULL) { BSTR bstrTagName; hr = pElem->get_outerHTML(&bstrTagName); hr = pElem->get_outerHTML(&bstrTagName); if(SUCCEEDED(hr)) { CString strTagName(bstrTagName); SysFreeString(bstrTagName); MessageBox(strTagName); } } } } hr = pDoc->get_all(&pAllElem); if(SUCCEEDED(hr) && pAllElem != NULL) { IDispatchPtr pElemDisp = NULL; _variant_t varID(_T("body")); _variant_t varIdx(0); hr = pAllElem->item(varID, varIdx, &pElemDisp); if(SUCCEEDED(hr) && pElemDisp != NULL) { MessageBox(_T("OK")); } } }
int main(int argc, char * argv[]) { int gridSize = 10; int matSize = gridSize * gridSize; //only works with double SparseMatrixd mat(matSize); std::vector<double> rhs(matSize,0); CmpPairFirst<unsigned int, double> cmp; int nbr[STENCIL_SIZE][2] = {{-1,0},{0,-1},{0,1},{1,0}}; //make a 2d laplace matrix on regular grid //row for(int ii = 0; ii<gridSize; ii++){ //col for(int jj = 0; jj<gridSize; jj++){ int centerIdx = varIdx(ii, jj, gridSize); double centerVal = 0; std::vector<ColVal> pairs; int nbrCnt = 0; for(int nn = 0; nn<STENCIL_SIZE; nn++){ int ni = ii + nbr[nn][0]; int nj = jj + nbr[nn][1]; if(inBound(ni, nj, gridSize)){ int nbrIdx = varIdx( ni, nj, gridSize); nbrCnt++; pairs.push_back(ColVal(nbrIdx, -1)); } } centerVal = nbrCnt; pairs.push_back(ColVal(centerIdx, centerVal)); std::sort(pairs.begin(), pairs.end(), cmp); std::vector<unsigned int> indices(pairs.size()); std::vector<double> values (pairs.size()); for(unsigned int nn = 0; nn<pairs.size(); nn++){ indices[nn] = pairs[nn].first; values[nn] = pairs[nn].second; } mat.add_sparse_row(centerIdx, indices, values); float dx = 1.0/gridSize; rhs[centerIdx] = dx*ii*dx*ii + dx*jj; } } unsigned int lastIdx = varIdx(gridSize-1, gridSize-1, gridSize); mat.symmetric_remove_row_and_column(lastIdx); mat.set_element(lastIdx, lastIdx, 1); rhs[lastIdx] = 0; mat.write_matlab(std::cout, "K"); PCGSolver <double> solver; solver.set_solver_parameters(1e-12, 1000); double residual; int iters; std::vector<double> result(matSize,0); solver.solve(mat, rhs, result, residual, iters); for(unsigned int ii =0 ; ii<rhs.size(); ii++){ std::cout<<rhs[ii]<<"\n"; } for(unsigned int ii =0 ; ii<result.size(); ii++){ std::cout<<result[ii]<<"\n"; } std::cout<<"Residual: "<<residual<<"\n"; std::cout<<"Iterations: "<<iters<<"\n"; return 0; }
void assembleTo(FILE *fOut, FILE *fIn) { char cmd[lineLim+1], arg[argLim+1]; int argI; while( getCmd(cmd,arg, fIn) && *cmd ) { if( *cmd == '$' ) regVar(cmd+1, arg); if( strchr(";:.$", *cmd) ) continue; #define case_cmd(nam) !strcmp(cmd, #nam)? cmd_##nam fputc( case_cmd(jmp): case_cmd(jmpImm): case_cmd(jfImm): case_cmd(call): case_cmd(callImm): case_cmd(ret): case_cmd(putchar): case_cmd(getchar): case_cmd(write): case_cmd(readln): case_cmd(putStack): case_cmd(atEof): case_cmd(argc): case_cmd(argv): case_cmd(pushInt): case_cmd(pushChr): case_cmd(pushStr): case_cmd(pushVarInt): case_cmd(pushVarChr): case_cmd(pushVarStr): case_cmd(popInt): case_cmd(popChr): case_cmd(popStr): case_cmd(intToChr): case_cmd(intToStr): case_cmd(strToInt): case_cmd(strToChr): case_cmd(chrToInt): case_cmd(chrToStr): case_cmd(add): case_cmd(sub): case_cmd(mul): case_cmd(div): case_cmd(mod): case_cmd(eq): case_cmd(gt): case_cmd(lt): case_cmd(strcatChr): case_cmd(strcat): case_cmd(strlen): case_cmd(streq): case_cmd(strcmp): case_cmd(strmask): case_cmd(indexOf): case_cmd(replaceChr): case_cmd(setChr): case_cmd(chrAt): case_cmd(strdivInt): case_cmd(strdivChr): case_cmd(dupInt): case_cmd(swapInt): case_cmd(rotInt): case_cmd(dupChr): case_cmd(swapChr): case_cmd(rotChr): case_cmd(dupStr): case_cmd(swapStr): case_cmd(rotStr): cmd_stop , fOut ); #undef case_cmd argI = *arg=='\''? arg[1]: *arg=='+'? idx+atoi(arg+1): *arg=='-'? idx-atoi(arg+1): *arg==':' || *arg=='.'? getLabel(fIn, arg): isdigit(*arg)? atoi(arg): isVar(arg)? varIdx(arg)+1: 0; fputc(argI & 0xFF, fOut); fputc((argI >> 8) & 0xFF, fOut); ++idx; } }