Crossfire Server, Trunk
|
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <sys/types.h>
#include <limits.h>
#include <string.h>
#include <global.h>
#include <libproto.h>
#include <logger.h>
#include "shstr.h"
#include <autoconf.h>
Go to the source code of this file.
Macros | |
#define | SS_STATISTICS |
Functions | |
sstring | add_refcount (sstring str) |
sstring | add_string (const char *str) |
int | buf_overflow (const char *buf1, const char *buf2, size_t bufsize) |
sstring | find_string (const char *str) |
void | free_string (sstring str) |
static unsigned long | hashstr (const char *str) |
void | init_hash_table (void) |
static shared_string * | new_shared_string (const char *str) |
int | query_refcount (sstring str) |
void | ss_dump_statistics (char *buf, size_t size) |
char * | ss_dump_table (int what, char *buf, size_t size) |
Variables | |
static shared_string * | hash_table [TABLESIZE] |
This is a simple shared strings package with a simple interface.
Author: Kjetil T. Homme, Oslo 1992.
Definition in file shstr.c.
This will increase the refcount of the string str.
str | string which *must *have been returned from a previous add_string(). |
Definition at line 210 of file shstr.c.
References GATHER, SS, and make_face_from_files::str.
Referenced by add_abilities(), animate_bomb(), cast_bless(), cast_change_ability(), cast_curse(), cast_invisible(), cone_drop(), create_aura(), do_each_skill(), do_symptoms(), dragon_focus_type_apply(), explode_bullet(), fire_arch_from_position(), fire_bolt(), fire_bow(), fix_object(), get_or_create_quest(), get_or_create_state(), give_artifact_abilities(), hit_with_arrow(), i18n_init(), identify(), infect_object(), knowledge_get_or_create(), monster_move(), object_copy(), object_set_value_s(), poison_living(), receive_play_again(), set_spell_skill(), and START_TEST().
sstring add_string | ( | const char * | str | ) |
This will add 'str' to the hash table. If there's no entry for this string, a copy will be allocated, and a pointer to that is returned.
str | string to share. |
Definition at line 124 of file shstr.c.
References _shared_string::array, GATHER, hash_table, hashstr(), new_shared_string(), _shared_string::next, _shared_string::previous, _shared_string::refcount, make_face_from_files::str, _shared_string::string, TOPBIT, and _shared_string::u.
Referenced by account_char_add(), account_char_load(), account_char_load_from_file(), account_play_cmd(), add_author(), add_book_to_list(), add_exit_to_item(), add_force(), adjust_sign_msg(), alchemy_failure_effect(), animate_weapon(), apply_race_and_class(), become_follower(), cast_bless(), cast_create_town_portal(), cast_word_of_recall(), cctk_set_object_strings(), cfapi_system_add_string(), change_abil(), change_book(), change_treasure(), check_loaded_object(), check_login(), command_follow(), command_reset(), command_summon(), command_teleport(), command_unarmed_skill(), confuse_living(), Treasures::create(), AllAnimations::create(), Faces::create(), Messages::create(), Archetypes::create(), create_singularity(), determine_god(), do_goto(), do_map(), do_throw(), TreasureWrapper::doAddChild(), TreasureListWrapper::drop(), enter_player_savebed(), enter_random_map(), examine_monster(), find_or_create_connection_for_map(), fire_bow(), fix_container_multipart(), fix_generated_item(), fix_stopped_arrow(), generate_quest(), generate_random_list(), generate_random_map(), get_jail_exit(), get_npc(), get_player(), give_artifact_abilities(), god_enchants_weapon(), grant_immunity(), i18n(), i18n_init(), init_book_archive(), init_formulae(), init_globals(), key_change_class(), keyplace(), kill_player(), knowledge_add(), knowledge_read_player_data(), ArtifactLoader::load(), MessageLoader::load(), FaceLoader::load(), QuestLoader::load(), TreasureLoader::load(), load_map_header(), load_materials(), FaceLoader::loadAnimationBlock(), TreasureLoader::loadTreasure(), local_check_loaded_object(), lock_and_hide_doors(), monster_do_talk_npc(), move_marker(), new_text_name(), object_find_by_name(), object_find_by_name_global(), object_fix_multipart(), object_set_msg(), object_set_value(), object_set_value_s(), pets_summon_golem(), place_chest(), place_exits(), place_special_exit(), potion_type_apply(), process_object(), quest_condition_from_string(), quest_create(), quest_read_player_data(), receive_play_again(), set_materialname(), QuestWrapper::setComment(), QuestStepWrapper::setDescription(), QuestWrapper::setDescription(), TreasureWrapper::setList(), QuestWrapper::setTitle(), START_TEST(), stringbuffer_finish_shared(), tailor_god_spell(), town_portal_find_force(), while(), and write_mark().
int buf_overflow | ( | const char * | buf1, |
const char * | buf2, | ||
size_t | bufsize | ||
) |
We don't want to exceed the buffer size of buf1 by adding on buf2!
buf1 | |
buf2 | buffers we plan on concatening. Can be NULL. |
bufsize | size of buf1. Can be NULL. |
Definition at line 398 of file shstr.c.
Referenced by book_overflow(), MessageLoader::load(), and START_TEST().
sstring find_string | ( | const char * | str | ) |
Searches a string in the shared strings.
str | string to search for. |
Definition at line 236 of file shstr.c.
References GATHER, hash_table, hashstr(), _shared_string::next, make_face_from_files::str, and _shared_string::string.
Referenced by cfapi_system_find_string(), find_artifact(), Archetypes::findByObjectName(), object_get_value(), object_set_value(), skill_throw(), and START_TEST().
void free_string | ( | sstring | str | ) |
This will reduce the refcount, and if it has reached 0, str will be freed.
str | string to release, which *must *have been returned from a previous add_string(). |
Definition at line 280 of file shstr.c.
References _shared_string::array, GATHER, _shared_string::next, _shared_string::previous, _shared_string::refcount, SS, make_face_from_files::str, TOPBIT, and _shared_string::u.
Referenced by account_char_add(), account_char_free(), account_char_remove(), add_abilities(), adjust_sign_msg(), alchemy_failure_effect(), animate_bomb(), animate_weapon(), apply_race_and_class(), become_follower(), cast_bless(), cast_change_ability(), cast_curse(), cfapi_system_remove_string(), change_abil(), change_book(), change_treasure(), check_loaded_object(), command_unarmed_skill(), cone_drop(), confuse_living(), create_aura(), Treasures::destroy(), AllAnimations::destroy(), Faces::destroy(), do_symptoms(), do_throw(), dragon_focus_type_apply(), enter_player_savebed(), examine_monster(), fire_bow(), fix_container_multipart(), fix_object(), free_all_readable(), free_all_recipes(), free_arch(), free_knowledge_items(), free_knowledge_player(), free_quest(), free_state(), give_artifact_abilities(), hit_with_arrow(), i18n(), i18n_free(), i18n_init(), identify(), infect_object(), key_change_class(), keyplace(), knowledge_god_add(), FaceLoader::load(), TreasureLoader::loadTreasure(), local_check_loaded_object(), make_formula_book(), mon_info_msg(), monster_communicate(), monster_move(), new_text_name(), object_copy(), object_find_by_name(), object_find_by_name_global(), object_fix_multipart(), object_set_msg(), object_set_value(), pets_summon_golem(), poison_living(), potion_type_apply(), process_object(), quest_clear(), quest_destroy_condition(), AllAnimations::replace(), START_TEST(), tailor_god_spell(), and town_portal_find_force().
|
static |
Hashing-function used by the shared string library.
str | string to hash. |
Definition at line 70 of file shstr.c.
References GATHER, nlohmann::detail::hash(), MAXSTRING, make_face_from_files::str, and TABLESIZE.
Referenced by add_string(), and find_string().
void init_hash_table | ( | void | ) |
Initialises the hash-table used by the shared string library.
Definition at line 55 of file shstr.c.
References hash_table, TABLESIZE, and nlohmann::detail::void().
Referenced by cctk_init_std_archetypes(), init_library(), and setup().
|
static |
Allocates and initialises a new shared_string structure, containing the string str.
str | string to store. |
Definition at line 98 of file shstr.c.
References fatal(), _shared_string::next, OUT_OF_MEMORY, PADDING, _shared_string::previous, _shared_string::refcount, make_face_from_files::str, _shared_string::string, and _shared_string::u.
Referenced by add_string().
int query_refcount | ( | sstring | str | ) |
This will return the refcount of the string str.
str | string which *must *have been returned from a previous add_string(). |
Definition at line 224 of file shstr.c.
References SS, make_face_from_files::str, and TOPBIT.
Referenced by START_TEST().
void ss_dump_statistics | ( | char * | buf, |
size_t | size | ||
) |
A call to this function will cause the statistics to be dumped into specified buffer.
The routines will gather statistics if SS_STATISTICS is defined.
buf | buffer which will contain dumped information. |
size | buf's size. |
Definition at line 323 of file shstr.c.
References buf, and is_valid_types_gen::line.
Referenced by command_strings().
char* ss_dump_table | ( | int | what, |
char * | buf, | ||
size_t | size | ||
) |
Dump the contents of the share string tables.
what | combination of flags:
|
buf | buffer that will contain total information if (what & SS_DUMP_TABLE). Left untouched else. |
size | buffer's size |
Definition at line 354 of file shstr.c.
References buf, hash_table, llevDebug, LOG(), _shared_string::next, _shared_string::refcount, SS_DUMP_TABLE, SS_DUMP_TOTALS, _shared_string::string, TABLESIZE, and TOPBIT.
Referenced by command_ssdumptable(), and command_strings().
|
static |
Hash table to store our string.
Definition at line 50 of file shstr.c.
Referenced by add_ptr_assoc(), add_string(), find_assoc_value(), find_ptr_assoc(), find_string(), free_ptr_assoc(), init_hash_table(), init_ptr_assoc_table(), and ss_dump_table().