KiCad PCB EDA Suite
Loading...
Searching...
No Matches
SCH_CONNECTIVITY::INPUT_STORE Class Reference

Main-thread extraction cache. More...

#include <conn_inputs.h>

Classes

struct  INSTANCE_INPUT
 
struct  ISLAND_LESS
 

Public Types

using SOURCE_KEY = std::pair<SCREEN_ID, KIID>
 
using SCREEN_CACHE = CACHE_TABLE<SCREEN_ID, SCREEN_FACTS>
 
using FACT_CACHE = CACHE_TABLE<SOURCE_KEY, ITEM_FACT>
 
using INSTANCE_CACHE = CACHE_TABLE<INST_ID, INSTANCE_FACTS>
 
using TEXT_CACHE = CACHE_TABLE<ITEM_KEY, ITEM_TEXT_FACT, KEY_LESS>
 
using AREA_CACHE = CACHE_TABLE<ITEM_KEY, INSTANCE_RULE_AREA_FACT, KEY_LESS>
 
using UNIT_SIGNATURE = std::vector<std::pair<KIID, int>>
 
using ISLAND_KEY = std::pair<SCREEN_ID, UNIT_SIGNATURE>
 
using UNIT_VIEW = std::span<const std::pair<KIID, int>>
 
using ISLAND_LOOKUP = std::pair<SCREEN_ID, UNIT_VIEW>
 
using GEOMETRY_CACHE = CACHE_TABLE<SCREEN_ID, SCREEN_GEOMETRY>
 
using ISLAND_CACHE = CACHE_TABLE<ISLAND_KEY, SCREEN_ISLANDS, ISLAND_LESS>
 

Public Member Functions

 INPUT_STORE (CACHE_VERSIONS &aVersions, SESSION_KEYS &aKeys)
 
std::vector< FRAME_INSTANCECapture (const SCH_SHEET_LIST &aPaths, uint64_t aTextEpoch)
 
bool ExternalSourcesChanged (const SCH_SHEET_LIST &aPaths, bool aContextUnchanged=false) const
 Compare retained external inputs for current instance/screen pairs, excluding model/revision changes.
 
const SCREEN_CACHE::ENTRY & Screen (const SCH_SCREEN &aScreen)
 
const INSTANCE_CACHE::ENTRY & Instance (const SCH_SCREEN &aScreen, const SCH_SHEET_PATH &aPath, uint64_t aTextEpoch)
 
const FACT_CACHE::ENTRY * Fact (const SOURCE_KEY &aKey) const
 
const TEXT_CACHE::ENTRY * Text (const ITEM_KEY &aKey) const
 
const AREA_CACHE::ENTRY * Area (const ITEM_KEY &aKey) const
 
const SCREEN_CACHE::ENTRY * FindScreen (SCREEN_ID aScreen) const
 
const INSTANCE_CACHE::ENTRY * FindInstance (INST_ID aInstance) const
 
const INSTANCE_CACHEInstances () const
 
SCREEN_ID InstanceScreen (INST_ID aInstance) const
 
const SCREEN_FACTSInstanceScreenFacts (INST_ID aInstance) const
 
const GEOMETRY_CACHE::ENTRY & Geometry (SCREEN_ID aScreen)
 
const ISLAND_CACHE::ENTRY & Islands (SCREEN_ID aScreen, const UNIT_SIGNATURE &aUnits)
 
const ISLAND_CACHE::ENTRY * FindIslands (SCREEN_ID aScreen, UNIT_VIEW aUnits) const
 
const std::map< SCREEN_ID, uint64_t > & ScreenRevisions () const
 
std::optional< std::pair< SCREEN_ID, uint64_t > > VerifiedSymbolSource (SCREEN_ID aScreen) const
 
const TEXT_EVAL::ENVIRONMENT::SOURCE_VALUESSources (INST_ID aInstance) const
 
void Retain (const std::set< SCREEN_ID > &aScreens, const std::set< INST_ID > &aInstances)
 
void Invalidate ()
 Force fresh extraction and geometry, retaining primitive values only for change comparison.
 
void Clear ()
 

Private Member Functions

const SCREEN_CACHE::ENTRY & storeScreen (const SCH_SCREEN &aScreen, SCREEN_FACTS aFacts)
 

Private Attributes

SESSION_KEYSm_keys
 
SCREEN_CACHE m_screens
 
FACT_CACHE m_facts
 
INSTANCE_CACHE m_instances
 
TEXT_CACHE m_text
 
AREA_CACHE m_areas
 
GEOMETRY_CACHE m_geometry
 
ISLAND_CACHE m_islands
 
std::map< SCREEN_ID, uint64_t > m_geometryInputs
 
std::map< ISLAND_KEY, uint64_t, ISLAND_LESSm_islandInputs
 
std::map< SCREEN_ID, uint64_t > m_screenRevisions
 
std::map< SCREEN_ID, uint64_t > m_symbolRevisions
 
std::map< INST_ID, INSTANCE_INPUTm_instanceInputs
 
std::map< INST_ID, TEXT_EVAL::ENVIRONMENT::SOURCE_VALUESm_instanceSources
 

Detailed Description

Main-thread extraction cache.

Returned entries follow CACHE_TABLE's reference lifetime.

See also
Schematic Connectivity Engine

Definition at line 40 of file conn_inputs.h.

Member Typedef Documentation

◆ AREA_CACHE

◆ FACT_CACHE

◆ GEOMETRY_CACHE

◆ INSTANCE_CACHE

◆ ISLAND_CACHE

◆ ISLAND_KEY

Definition at line 50 of file conn_inputs.h.

◆ ISLAND_LOOKUP

Definition at line 52 of file conn_inputs.h.

◆ SCREEN_CACHE

◆ SOURCE_KEY

Definition at line 43 of file conn_inputs.h.

◆ TEXT_CACHE

◆ UNIT_SIGNATURE

using SCH_CONNECTIVITY::INPUT_STORE::UNIT_SIGNATURE = std::vector<std::pair<KIID, int>>

Definition at line 49 of file conn_inputs.h.

◆ UNIT_VIEW

using SCH_CONNECTIVITY::INPUT_STORE::UNIT_VIEW = std::span<const std::pair<KIID, int>>

Definition at line 51 of file conn_inputs.h.

Constructor & Destructor Documentation

◆ INPUT_STORE()

SCH_CONNECTIVITY::INPUT_STORE::INPUT_STORE ( CACHE_VERSIONS & aVersions,
SESSION_KEYS & aKeys )

Definition at line 71 of file conn_inputs.cpp.

References m_areas, m_facts, m_geometry, m_instances, m_islands, m_keys, m_screens, and m_text.

Member Function Documentation

◆ Area()

const AREA_CACHE::ENTRY * SCH_CONNECTIVITY::INPUT_STORE::Area ( const ITEM_KEY & aKey) const
inline

Definition at line 93 of file conn_inputs.h.

References m_areas.

Referenced by SCH_CONNECTIVITY::AUXILIARY::Update().

◆ Capture()

std::vector< FRAME_INSTANCE > SCH_CONNECTIVITY::INPUT_STORE::Capture ( const SCH_SHEET_LIST & aPaths,
uint64_t aTextEpoch )

◆ Clear()

void SCH_CONNECTIVITY::INPUT_STORE::Clear ( )

Definition at line 432 of file conn_inputs.cpp.

References Invalidate(), m_areas, m_facts, m_instances, m_screens, and m_text.

Referenced by Capture(), Geometry(), Instance(), Islands(), and storeScreen().

◆ ExternalSourcesChanged()

bool SCH_CONNECTIVITY::INPUT_STORE::ExternalSourcesChanged ( const SCH_SHEET_LIST & aPaths,
bool aContextUnchanged = false ) const

Compare retained external inputs for current instance/screen pairs, excluding model/revision changes.

Run outside SOURCE_SCOPE collection in a fresh text frame for each update, keeping that frame alive through the following Capture. Reads populate its cache; reusing an older frame retains older values. Without an active frame, this call owns one. Clock consultations can change on every fresh frame. If the caller has compared global text context, unchanged screen revisions can skip reference replay.

Definition at line 83 of file conn_inputs.cpp.

References SCH_SCREEN::ConnectivityId(), SCH_SCREEN::ConnectivityRevision(), TEXT_EVAL::ENVIRONMENT::Current(), TEXT_EVAL::ENVIRONMENT::CurrentTime(), KIGIT::PROJECT_GIT_UTILS::GetCurrentHash(), PROJECT::GetProjectPath(), TEXT_EVAL::ENVIRONMENT::GitHash(), SCHEMATIC::IsValid(), m_instanceInputs, m_keys, m_screenRevisions, name, path, SCHEMATIC::Project(), TEXT_EVAL_VCS::ReadSource(), SCHEMATIC::ResolveCrossReference(), Sources(), text, and TEXT_EVAL::ENVIRONMENT::VcsValue().

◆ Fact()

const FACT_CACHE::ENTRY * SCH_CONNECTIVITY::INPUT_STORE::Fact ( const SOURCE_KEY & aKey) const
inline

Definition at line 91 of file conn_inputs.h.

References m_facts.

Referenced by SCH_CONNECTIVITY::AUXILIARY::Update().

◆ FindInstance()

const INSTANCE_CACHE::ENTRY * SCH_CONNECTIVITY::INPUT_STORE::FindInstance ( INST_ID aInstance) const
inline

◆ FindIslands()

const ISLAND_CACHE::ENTRY * SCH_CONNECTIVITY::INPUT_STORE::FindIslands ( SCREEN_ID aScreen,
UNIT_VIEW aUnits ) const
inline

Definition at line 108 of file conn_inputs.h.

References m_islands.

Referenced by SCH_CONNECTIVITY::AUXILIARY::Update().

◆ FindScreen()

const SCREEN_CACHE::ENTRY * SCH_CONNECTIVITY::INPUT_STORE::FindScreen ( SCREEN_ID aScreen) const
inline

◆ Geometry()

const INPUT_STORE::GEOMETRY_CACHE::ENTRY & SCH_CONNECTIVITY::INPUT_STORE::Geometry ( SCREEN_ID aScreen)

Definition at line 290 of file conn_inputs.cpp.

References Clear(), SCH_CONNECTIVITY::GeometryOf(), m_geometry, m_geometryInputs, m_screens, and result.

Referenced by Capture(), and Islands().

◆ Instance()

◆ Instances()

const INSTANCE_CACHE & SCH_CONNECTIVITY::INPUT_STORE::Instances ( ) const
inline

Definition at line 96 of file conn_inputs.h.

References m_instances.

◆ InstanceScreen()

SCREEN_ID SCH_CONNECTIVITY::INPUT_STORE::InstanceScreen ( INST_ID aInstance) const
inline

Definition at line 98 of file conn_inputs.h.

References m_instanceInputs.

Referenced by InstanceScreenFacts().

◆ InstanceScreenFacts()

const SCREEN_FACTS & SCH_CONNECTIVITY::INPUT_STORE::InstanceScreenFacts ( INST_ID aInstance) const
inline

Definition at line 100 of file conn_inputs.h.

References InstanceScreen(), and m_screens.

◆ Invalidate()

void SCH_CONNECTIVITY::INPUT_STORE::Invalidate ( )

Force fresh extraction and geometry, retaining primitive values only for change comparison.

Retained values keep their versions when extraction produces an equal value.

Definition at line 419 of file conn_inputs.cpp.

References m_geometry, m_geometryInputs, m_instanceInputs, m_instanceSources, m_islandInputs, m_islands, m_screenRevisions, and m_symbolRevisions.

Referenced by Clear().

◆ Islands()

const INPUT_STORE::ISLAND_CACHE::ENTRY & SCH_CONNECTIVITY::INPUT_STORE::Islands ( SCREEN_ID aScreen,
const UNIT_SIGNATURE & aUnits )

◆ Retain()

void SCH_CONNECTIVITY::INPUT_STORE::Retain ( const std::set< SCREEN_ID > & aScreens,
const std::set< INST_ID > & aInstances )

◆ Screen()

const INPUT_STORE::SCREEN_CACHE::ENTRY & SCH_CONNECTIVITY::INPUT_STORE::Screen ( const SCH_SCREEN & aScreen)

◆ ScreenRevisions()

const std::map< SCREEN_ID, uint64_t > & SCH_CONNECTIVITY::INPUT_STORE::ScreenRevisions ( ) const
inline

Definition at line 113 of file conn_inputs.h.

References m_screenRevisions.

Referenced by SCH_CONNECTIVITY::AUXILIARY::Update().

◆ Sources()

const TEXT_EVAL::ENVIRONMENT::SOURCE_VALUES * SCH_CONNECTIVITY::INPUT_STORE::Sources ( INST_ID aInstance) const
inline

Definition at line 127 of file conn_inputs.h.

References m_instanceSources.

Referenced by ExternalSourcesChanged().

◆ storeScreen()

const INPUT_STORE::SCREEN_CACHE::ENTRY & SCH_CONNECTIVITY::INPUT_STORE::storeScreen ( const SCH_SCREEN & aScreen,
SCREEN_FACTS aFacts )
private

◆ Text()

const TEXT_CACHE::ENTRY * SCH_CONNECTIVITY::INPUT_STORE::Text ( const ITEM_KEY & aKey) const
inline

Definition at line 92 of file conn_inputs.h.

References m_text.

Referenced by SCH_CONNECTIVITY::AUXILIARY::Update().

◆ VerifiedSymbolSource()

std::optional< std::pair< SCREEN_ID, uint64_t > > SCH_CONNECTIVITY::INPUT_STORE::VerifiedSymbolSource ( SCREEN_ID aScreen) const
inline

Definition at line 116 of file conn_inputs.h.

References m_symbolRevisions.

Referenced by SCH_CONNECTIVITY::RECORD_STORE::Update().

Member Data Documentation

◆ m_areas

AREA_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_areas
private

Definition at line 160 of file conn_inputs.h.

Referenced by Area(), Clear(), INPUT_STORE(), Instance(), and Retain().

◆ m_facts

FACT_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_facts
private

Definition at line 157 of file conn_inputs.h.

Referenced by Clear(), Fact(), INPUT_STORE(), Retain(), and storeScreen().

◆ m_geometry

GEOMETRY_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_geometry
private

Definition at line 161 of file conn_inputs.h.

Referenced by Geometry(), INPUT_STORE(), Invalidate(), and Retain().

◆ m_geometryInputs

std::map<SCREEN_ID, uint64_t> SCH_CONNECTIVITY::INPUT_STORE::m_geometryInputs
private

Definition at line 163 of file conn_inputs.h.

Referenced by Geometry(), Invalidate(), and Retain().

◆ m_instanceInputs

std::map<INST_ID, INSTANCE_INPUT> SCH_CONNECTIVITY::INPUT_STORE::m_instanceInputs
private

Definition at line 167 of file conn_inputs.h.

Referenced by ExternalSourcesChanged(), Instance(), InstanceScreen(), Invalidate(), and Retain().

◆ m_instances

INSTANCE_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_instances
private

Definition at line 158 of file conn_inputs.h.

Referenced by Capture(), Clear(), FindInstance(), INPUT_STORE(), Instance(), Instances(), and Retain().

◆ m_instanceSources

std::map<INST_ID, TEXT_EVAL::ENVIRONMENT::SOURCE_VALUES> SCH_CONNECTIVITY::INPUT_STORE::m_instanceSources
private

Definition at line 168 of file conn_inputs.h.

Referenced by Instance(), Invalidate(), Retain(), and Sources().

◆ m_islandInputs

std::map<ISLAND_KEY, uint64_t, ISLAND_LESS> SCH_CONNECTIVITY::INPUT_STORE::m_islandInputs
private

Definition at line 164 of file conn_inputs.h.

Referenced by Capture(), Invalidate(), Islands(), and Retain().

◆ m_islands

ISLAND_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_islands
private

Definition at line 162 of file conn_inputs.h.

Referenced by Capture(), FindIslands(), INPUT_STORE(), Invalidate(), Islands(), and Retain().

◆ m_keys

SESSION_KEYS& SCH_CONNECTIVITY::INPUT_STORE::m_keys
private

Definition at line 155 of file conn_inputs.h.

Referenced by Capture(), ExternalSourcesChanged(), INPUT_STORE(), and Instance().

◆ m_screenRevisions

std::map<SCREEN_ID, uint64_t> SCH_CONNECTIVITY::INPUT_STORE::m_screenRevisions
private

◆ m_screens

SCREEN_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_screens
private

◆ m_symbolRevisions

std::map<SCREEN_ID, uint64_t> SCH_CONNECTIVITY::INPUT_STORE::m_symbolRevisions
private

Definition at line 166 of file conn_inputs.h.

Referenced by Instance(), Invalidate(), Retain(), Screen(), storeScreen(), and VerifiedSymbolSource().

◆ m_text

TEXT_CACHE SCH_CONNECTIVITY::INPUT_STORE::m_text
private

Definition at line 159 of file conn_inputs.h.

Referenced by Clear(), INPUT_STORE(), Instance(), Retain(), and Text().


The documentation for this class was generated from the following files: