Добавить класс pstringview — интернированная read-only персистная строка (задача #92)#93
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: netkeep80#92
…ока (задача netkeep80#92) - Новый заголовочный файл pstringview.h с классом pstringview (read-only строка с интернированием, аналог string_view для ПАП) - pstringview_table — персистная хэш-таблица (open addressing, linear probing) для хранения уникальных строк в ПАП: строки добавляются но никогда не удаляются - pstringview_manager — синглтон для доступа к таблице интернирования - Оператор == использует O(1) сравнение chars_offset (интернирование гарантирует что одинаковые строки всегда имеют один указатель) - Новый файл tests/test_pstringview.cpp: 13 тестов, 100% проходят Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This reverts commit d9096f6.
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
🔄 Auto-restart 1/3Detected uncommitted changes from previous run. Starting new session to review and commit them. Uncommitted files: Auto-restart will stop after changes are committed or after 2 more iterations. Please wait until working session will end and give your feedback. |
🔄 Auto-restart 1/3 LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
✅ Ready to mergeThis pull request is now ready to be merged:
Monitored by hive-mind with --auto-restart-until-mergeable flag |
Описание
Реализует задачу #92: создание нового класса
pstringview— read-only персистная строка с интернированием (аналогstring_viewдля ПАП).Что сделано
pstringview.h— новый заголовочный файл, содержащий:pstringview— read-only персистная строка с интернированием:uintptr_t lengthиuintptr_t chars_offset(смещение массиваcharв ПАП)intern(const char*)— поиск/добавление строки в таблицу интернированияchars_offset— строки живут вечно в ПАПoperator==работает за O(1): сравниваетchars_offset(интернирование гарантирует одинаковый указатель для одинаковых строк)operator<для использования как ключ вpmappstringview_table— персистная хэш-таблица интернирования (открытая адресация, linear probing):count_,capacity_,buckets_(3 ×sizeof(void*))pstringview_manager— синглтон для доступа к таблице:reset()для очистки в тестахtests/test_pstringview.cpp— 13 тестов:sizeof)chars_offset)==,!=,<nullptrСоответствие требованиям задачи #92
pstringviewне имеет методов изменения данныхchars_offsetpstringview_tablepmapoperator<,operator==pstringview::intern()string_view(название pstringview)pstringview.hCI
Все проверки CI пройдены ✅:
Fixes #92
This PR was updated automatically by the AI issue solver