/
redgpu
/
tech5
Обзор
Документация
Войти
/
redgpu
/
tech5
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
source/shared/idlib/text/atomicstring.h
57 строк
1 KB
Justin Marshall
First pass idLib conversion from hex rays4.
08 авг 2026, 23:54
08 авг 2026, 23:54
09a4cb9
Код
Авторство
О чём код?
#pragma once #include <cstdint> struct atomicStringBlock_t { atomicStringBlock_t* nextBlock; int bufferBytes; int usedBytes; }; class idAtomicStringManager { public: idAtomicStringManager(); const char* MakeAtomic(const char* text); void MarkStatic(); void FreeDynamic(); private: struct Entry; Entry* hashTable[65536]; Entry* hashTableAtMarkStatic[65536]; atomicStringBlock_t* blocks; atomicStringBlock_t* blocksAtMarkStatic; int usedBytesAtMarkStatic; friend class idAtomicString; }; class idAtomicString { public: idAtomicString(); explicit idAtomicString(const char* text); void Set(const char* text); const char* c_str() const { return str; } bool IsEmpty() const { return str[0] == '\0'; } bool operator==(const idAtomicString& other) const { return str == other.str; } bool operator!=(const idAtomicString& other) const { return str != other.str; } bool operator==(const char* text) const; static void MarkStatic(); static void FreeDynamic(); private: const char* str; }; extern idAtomicStringManager atomicStringManager; #if INTPTR_MAX == INT32_MAX static_assert(sizeof(atomicStringBlock_t) == 12, "Recovered atomicStringBlock_t ABI changed"); static_assert(sizeof(idAtomicString) == 4, "Recovered idAtomicString ABI changed"); #endif