コード例 #1
0
ファイル: dbi.cpp プロジェクト: mingpen/OpenNT
BOOL DBI1::QueryModFromAddr(ISECT isect, OFF off, OUT Mod** ppmod,
    OUT ISECT* pisect, OUT OFF* poff, OUT CB* pcb)
{
    SC* pscLo = (SC*) bufSC.Start();
    SC* pscHi = pscEnd;
    SC* psc;

    // binary search for containing SC
    while (pscLo < pscHi) {
        psc = pscLo + ((pscHi - pscLo) / 2);
        int iResult = psc->IsAddrInSC(isect, off);
        if (iResult < 0 )
            pscHi = psc;
        else if (iResult > 0)
            pscLo = psc + 1;
        else {
            // we found it
            BOOL fOK = TRUE;
            if (ppmod)
                fOK = openModByImod(psc->imod, ppmod);
            if (pisect) *pisect = psc->isect;
            if (poff) *poff = psc->off;
            if (pcb) *pcb = psc->cb;
            return fOK;
        }

    }

    return FALSE;
}
	TC(const Graph &G) : G(G)
	{
		Gsc = new SC<Graph>(G);
		K = new DenseGRAPH(Gsc->count(), true);
		for (int v = 0; v < G.V(); ++v) {
			typename Graph::adjIterator A(G, v);
			for (int t = A.beg(); !A.end(); t = A.nxt()) {
				K->insert(Edge(Gsc->ID(v), Gsc->ID(t)));
			}
			Ktc = new dagTC<DenseGRAPH, Graph>(*K);
		}
	}
コード例 #3
0
void test_scope_guard()
{
	{
		int *pi = new int;
		ZL::ScopeGuard onExit([&] { delete pi; pi = nullptr; });
	}
	{
		SC *sc = new SC;
		ZL::ON_SCOPE_EXIT([&sc]{ delete sc; sc = nullptr; }); // Ok
		//ON_SCOPE_EXIT([&sc]{ Safe_Delete(sc) }); // Ok		
	}
	std::cout << "===================\n";
	{
		SC *sc = new SC;
		//ON_SCOPE_EXIT([&sc]{ Safe_Delete(sc) });
		ZL::ScopeGuard rollbackIfFail([&]{ sc->RollBack(); });
		do
		{
			//do something.....
			if (sc->Fail())
			{
				break;
			}
			rollbackIfFail.dismiss(); //上面if失败,走不到这里,因此会导致ScopeGuard执行sc的RollBack函数
		} while (0);
	}
	std::cout << "===================\n";
	{
		SC *sc = new SC(1);
		ZL::ON_SCOPE_EXIT([&sc]{ Safe_Delete(sc) });
		ZL::ScopeGuard rollbackIfFail([&]{ sc->RollBack(); });
		do
		{
			//do something.....
			if (!sc->Success())
			{
				break;
			}
			rollbackIfFail.dismiss(); //执行到这里,设置取消rollback机制,执行成功
		} while (0);
	}
コード例 #4
0
int bar(int a){
  int r = a;

  a1.foo();
  a2.foo();
  b1.foo();
  b2.foo();
  c1.foo();
  d1.foo();
  e1.foo();
  t1.foo();
  t2.foo();

  #pragma omp target teams
  ++r;

  return r + *R;
}
コード例 #5
0
int bar(int a){
  int r = a;

  a1.foo();
  a2.foo();
  b1.foo();
  b2.foo();
  c1.foo();
  d1.foo();
  e1.foo();
  t1.foo();
  t2.foo();

  #pragma omp target simd
  for (int i = 0; i < 10; ++i)
    ++r;

  return r + *R;
}
	bool reachable(int v, int w) {
		return Ktc->reachable(Gsc->ID(v), Gsc->ID(w));
	}