size_t BlockHashIndex::Load(std::FILE * mphf) { size_t byteSize = LoadIndex(mphf); size_t end = std::ftell(mphf); for(size_t i = 0; i < m_seekIndex.size(); i++) LoadRange(i); std::fseek(m_fileHandle, end, SEEK_SET); return byteSize; }
static void OnRadialModified(fixed new_value) { if (target_point < initial_active_task_point) return; Angle new_radial = Angle::Degrees(new_value); if (new_radial == range_and_radial.radial) return; bool must_reload_radial = false; if (new_radial >= Angle::HalfCircle()) { new_radial -= Angle::FullCircle(); must_reload_radial = true; } else if (new_radial <= -Angle::HalfCircle()) { new_radial += Angle::FullCircle(); must_reload_radial = true; } if ((new_radial.Absolute() > Angle::QuarterCircle()) != (range_and_radial.radial.Absolute() > Angle::QuarterCircle())) { /* when the radial crosses the +/-90 degrees threshold, flip the range */ range_and_radial.range = -range_and_radial.range; LoadRange(); } range_and_radial.radial = new_radial; { ProtectedTaskManager::ExclusiveLease lease(*protected_task_manager); const OrderedTask &task = lease->GetOrderedTask(); AATPoint *ap = task.GetAATTaskPoint(target_point); if (ap == nullptr) return; ap->SetTarget(range_and_radial, lease->GetOrderedTask().GetTaskProjection()); } if (must_reload_radial) LoadRadial(); map->Invalidate(); }
size_t BlockHashIndex::GetHash(size_t i, const char* key) { if(m_hashes[i] == 0) LoadRange(i); #ifdef HAVE_CMPH size_t idx = cmph_search((cmph_t*)m_hashes[i], key, (cmph_uint32) strlen(key)); #else size_t idx = 0; #endif std::pair<size_t, size_t> orderPrint = m_arrays[i]->Get(idx, m_orderBits, m_fingerPrintBits); m_clocks[i] = clock(); if(GetFprint(key) == orderPrint.second) return orderPrint.first; else return GetSize(); }
void test2() { Variable v{1,2,3}; Printf(Con,"len = #;\n",SaveLen(v).value); uint8 buf[100]; BufPutDev putdev(buf); putdev(v,v,v); Variable v1; BufGetDev getdev(buf); getdev(v1); Printf(Con,"#;\n",v1); getdev(v1); Printf(Con,"#;\n",v1); getdev(v1); Printf(Con,"#;\n",v1); RangeGetDev rget(Range_const(buf)); Variable v2[3]; LoadRange(v2,3,rget); Printf(Con,"#; #; #;\n",v2[0],v2[1],v2[2]); }
/** * Loads the #range_and_radial variable into the range/radial form * controls. */ static void LoadRangeAndRadial() { LoadRange(); LoadRadial(); }