コード例 #1
0
ファイル: array-data.cpp プロジェクト: DieterLutz/hhvm
bool ArrayData::equal(const ArrayData *v2, bool strict) const {
  assert(v2);

  if (this == v2) return true;
  auto const count1 = size();
  auto const count2 = v2->size();
  if (count1 != count2) return false;
  if (count1 == 0) return true;

  // prevent circular referenced objects/arrays or deep ones
  DECLARE_THREAD_INFO; check_recursion(info);

  if (strict) {
    for (ArrayIter iter1(this), iter2(v2); iter1; ++iter1, ++iter2) {
      assert(iter2);
      if (!same(iter1.first(), iter2.first())
          || !same(iter1.second(), iter2.secondRef())) return false;
    }
  } else {
    for (ArrayIter iter(this); iter; ++iter) {
      Variant key(iter.first());
      if (!v2->exists(key)) return false;
      if (!tvEqual(*iter.second().asTypedValue(),
                   *v2->get(key).asTypedValue())) {
        return false;
      }
    }
  }

  return true;
}
コード例 #2
0
ファイル: fauxPq.c プロジェクト: KeithLatteri/awips2
int pq_clss_setfrom(
    pqueue* pq,
    prod_class_t *clssp)        /* modified upon return */
{
    timestampt ts = clssp->from;
    int        status = pq_last(pq, clssp, &ts);

    if(status == ENOERR)
    {
        if(tvEqual(ts, clssp->from))
            status = PQUEUE_END;
        else
            clssp->from = ts;
    }
    return status;
}
コード例 #3
0
/*
 * called at exit
 */
static void
cleanup(void)
{
    log_notice("Exiting");

    if (done) {
        /*
         * We are not in the interrupt context, so these can be performed
         * safely.
         */
        fl_closeAll();

        if (pq)
            (void)pq_close(pq);

        if (!tvEqual(palt_last_insertion, TS_ZERO)) {
            timestampt  now;

            (void)set_timestamp(&now);
            log_notice("Behind by %g s",
                    d_diff_timestamp(&now, &palt_last_insertion));

            if (stateWrite(&palt_last_insertion) < 0) {
                log_error("Couldn't save insertion-time of last processed "
                    "data-product");
            }
        }

        while (reap(-1, WNOHANG) > 0)
            /*EMPTY*/;
    }

    if(shmid != -1) {
        log_notice("Deleting shared segment.");
        shmctl(shmid, IPC_RMID, NULL);
    }
    if(semid != -1) {
        semctl(semid, 0, IPC_RMID);
    }

    log_fini();
}