@@ -78,11 +78,27 @@ class BSC5 : public StarDatabaseInterface
7878 void printDatabaseInfo () const override ;
7979 size_t getTotalObjectCount () const override ;
8080
81+ // Pagination support
82+ bool loadPage (size_t page_index, size_t page_size = 32 ) override ;
83+ bool isPageLoaded (size_t page_index) const override ;
84+ size_t getCurrentPageCount () const override ;
85+ size_t getPageSize () const override ;
86+ void clearLoadedPages () override ;
87+ void clearOldestPage (); // Helper to manage memory during search
88+
8189 private:
8290 const uint8_t * _start; // Start of raw data
8391 const uint8_t * _end; // End of raw data
8492 size_t _star_count;
85- std::vector<BSC5Entry> _binary_entries;
93+
94+ // Pagination state
95+ size_t _page_size;
96+ std::vector<size_t > _loaded_pages; // Track which pages are loaded
97+ std::vector<BSC5Entry> _binary_entries; // Now contains only loaded pages
98+
99+ // Binary format metadata
100+ bool _is_compact;
101+ size_t _header_size;
86102
87103 // Helper methods
88104 bool begin_binary (const uint8_t * data, size_t len);
@@ -91,6 +107,16 @@ class BSC5 : public StarDatabaseInterface
91107
92108 bool parseStarFromBinary (size_t index, BSC5Entry& star) const ;
93109 bool convertStarToUnified (const BSC5Entry& star, StarUnifiedEntry& unified) const ;
110+
111+ // Pagination helpers
112+ size_t calculateStarOffset (size_t star_index) const ;
113+ bool loadStarAtIndex (size_t global_index, BSC5Entry& star) const ;
114+ size_t getPageForIndex (size_t global_index) const ;
115+ size_t getLocalIndexInPage (size_t global_index, size_t page_index) const ;
116+
117+ // Full catalog search methods
118+ bool findByNameInAllPages (const String& name, StarUnifiedEntry& result) const ;
119+ bool findByNameFragmentInAllPages (const String& name_fragment, StarUnifiedEntry& result) const ;
94120};
95121
96122extern BSC5 bsc5;
0 commit comments