Mercurial > pidgin
comparison src/log.h @ 11177:3924db2b1ca8
[gaim-migrate @ 13285]
Performance optimizing the log set and screenname autocompletion code.
committer: Tailor Script <tailor@pidgin.im>
| author | Richard Laager <rlaager@wiktel.com> |
|---|---|
| date | Mon, 01 Aug 2005 04:08:27 +0000 |
| parents | 11e465b55fe6 |
| children | ef9280fdc511 |
comparison
equal
deleted
inserted
replaced
| 11176:6932df31225f | 11177:3924db2b1ca8 |
|---|---|
| 47 GAIM_LOG_READ_NO_NEWLINE = 1 | 47 GAIM_LOG_READ_NO_NEWLINE = 1 |
| 48 } GaimLogReadFlags; | 48 } GaimLogReadFlags; |
| 49 | 49 |
| 50 #include "account.h" | 50 #include "account.h" |
| 51 #include "conversation.h" | 51 #include "conversation.h" |
| 52 | |
| 53 typedef void (*GaimLogSetCallback) (GHashTable *sets, GaimLogSet *set); | |
| 52 | 54 |
| 53 /** | 55 /** |
| 54 * A log logger. | 56 * A log logger. |
| 55 * | 57 * |
| 56 * This struct gets filled out and is included in the GaimLog. It contains everything | 58 * This struct gets filled out and is included in the GaimLog. It contains everything |
| 90 int (*total_size)(GaimLogType type, const char *name, GaimAccount *account); | 92 int (*total_size)(GaimLogType type, const char *name, GaimAccount *account); |
| 91 | 93 |
| 92 /** This function returns a sorted GList of available system GaimLogs */ | 94 /** This function returns a sorted GList of available system GaimLogs */ |
| 93 GList *(*list_syslog)(GaimAccount *account); | 95 GList *(*list_syslog)(GaimAccount *account); |
| 94 | 96 |
| 95 /** Returns a list of GaimLogSets. By passing the data in the GaimLogSets | 97 /** Adds GaimLogSets to a GHashTable. By passing the data in the GaimLogSets |
| 96 * to list, the caller can get every available GaimLog from the logger. | 98 * to list, the caller can get every available GaimLog from the logger. |
| 97 * Loggers using gaim_log_common_writer() (or otherwise storing their | 99 * Loggers using gaim_log_common_writer() (or otherwise storing their |
| 98 * logs in the same directory structure as the stock loggers) do not | 100 * logs in the same directory structure as the stock loggers) do not |
| 99 * need to implement this function. */ | 101 * need to implement this function. |
| 100 GList *(*get_log_sets)(void); | 102 * |
| 103 * Loggers which implement this function must create a GaimLogSet, | |
| 104 * then call @a cb with @a sets and the newly created GaimLogSet. */ | |
| 105 void (*get_log_sets)(GaimLogSetCallback cb, GHashTable *sets); | |
| 101 }; | 106 }; |
| 102 | 107 |
| 103 /** | 108 /** |
| 104 * A log. Not the wooden type. | 109 * A log. Not the wooden type. |
| 105 */ | 110 */ |
| 141 logger's implementation of | 146 logger's implementation of |
| 142 list, it may not be possible | 147 list, it may not be possible |
| 143 to load such logs.) */ | 148 to load such logs.) */ |
| 144 gboolean buddy; /**< Is this (account, name) a buddy | 149 gboolean buddy; /**< Is this (account, name) a buddy |
| 145 on the buddy list? */ | 150 on the buddy list? */ |
| 151 char *normalized_name; /**< The normalized version of | |
| 152 @a name. It must be set, and | |
| 153 may be set to the same pointer | |
| 154 value as @a name. */ | |
| 146 }; | 155 }; |
| 147 | 156 |
| 148 #ifdef __cplusplus | 157 #ifdef __cplusplus |
| 149 extern "C" { | 158 extern "C" { |
| 150 #endif | 159 #endif |
| 209 * @return A sorted list of GaimLogs | 218 * @return A sorted list of GaimLogs |
| 210 */ | 219 */ |
| 211 GList *gaim_log_get_logs(GaimLogType type, const char *name, GaimAccount *account); | 220 GList *gaim_log_get_logs(GaimLogType type, const char *name, GaimAccount *account); |
| 212 | 221 |
| 213 /** | 222 /** |
| 214 * Returns a list of GaimLogSets. | 223 * Returns a GHashTable of GaimLogSets. |
| 215 * | 224 * |
| 216 * A "log set" here means the information necessary to gather the | 225 * A "log set" here means the information necessary to gather the |
| 217 * GaimLogs for a given buddy/chat. This information would be passed | 226 * GaimLogs for a given buddy/chat. This information would be passed |
| 218 * to gaim_log_list to get a list of GaimLogs. | 227 * to gaim_log_list to get a list of GaimLogs. |
| 219 * | 228 * |
| 220 * The primary use of this function is to get a list of everyone the | 229 * The primary use of this function is to get a list of everyone the |
| 221 * user has ever talked to (assuming he or she uses logging). | 230 * user has ever talked to (assuming he or she uses logging). |
| 222 * | 231 * |
| 223 * @return A sorted list of all available unique GaimLogSets | 232 * The GHashTable that's returned will free all log sets in it when |
| 224 */ | 233 * destroyed. If a GaimLogSet is removed from the GHashTable, it |
| 225 GList *gaim_log_get_log_sets(void); | 234 * must be freed with gaim_log_set_free(). |
| 235 * | |
| 236 * @return A GHashTable of all available unique GaimLogSets | |
| 237 */ | |
| 238 GHashTable *gaim_log_get_log_sets(void); | |
| 226 | 239 |
| 227 /** | 240 /** |
| 228 * Returns a list of all available system logs | 241 * Returns a list of all available system logs |
| 229 * | 242 * |
| 230 * @param account The account | 243 * @param account The account |
| 231 * @return A sorted list of GaimLogs | 244 * @return A sorted list of GaimLogs |
| 232 */ | 245 */ |
| 233 GList *gaim_log_get_system_logs(GaimAccount *account); | 246 GList *gaim_log_get_system_logs(GaimAccount *account); |
| 234 | 247 |
| 235 /** | 248 /** |
| 236 * Returns the size of a log | 249 * Returns the size of a log |
| 263 char *gaim_log_get_log_dir(GaimLogType type, const char *name, GaimAccount *account); | 276 char *gaim_log_get_log_dir(GaimLogType type, const char *name, GaimAccount *account); |
| 264 | 277 |
| 265 /** | 278 /** |
| 266 * Implements GCompareFunc for GaimLogs | 279 * Implements GCompareFunc for GaimLogs |
| 267 * | 280 * |
| 268 * @param y A GaimLog | 281 * @param y A GaimLog |
| 269 * @param z Another GaimLog | 282 * @param z Another GaimLog |
| 270 * @return A value as specified by GCompareFunc | 283 * @return A value as specified by GCompareFunc |
| 271 */ | 284 */ |
| 272 gint gaim_log_compare(gconstpointer y, gconstpointer z); | 285 gint gaim_log_compare(gconstpointer y, gconstpointer z); |
| 273 | 286 |
| 274 /** | 287 /** |
| 275 * Implements GCompareFunc for GaimLogSets | 288 * Implements GCompareFunc for GaimLogSets |
| 277 * @param y A GaimLogSet | 290 * @param y A GaimLogSet |
| 278 * @param z Another GaimLogSet | 291 * @param z Another GaimLogSet |
| 279 * @return A value as specified by GCompareFunc | 292 * @return A value as specified by GCompareFunc |
| 280 */ | 293 */ |
| 281 gint gaim_log_set_compare(gconstpointer y, gconstpointer z); | 294 gint gaim_log_set_compare(gconstpointer y, gconstpointer z); |
| 295 | |
| 296 /** | |
| 297 * Frees a log set | |
| 298 * | |
| 299 * @param set The log set to destroy | |
| 300 */ | |
| 301 void gaim_log_set_free(GaimLogSet *set); | |
| 282 | 302 |
| 283 /*@}*/ | 303 /*@}*/ |
| 284 | 304 |
| 285 /******************************************/ | 305 /******************************************/ |
| 286 /** @name Common Logger Functions */ | 306 /** @name Common Logger Functions */ |
| 357 GList*(*list)(GaimLogType type, const char*, GaimAccount*), | 377 GList*(*list)(GaimLogType type, const char*, GaimAccount*), |
| 358 char*(*read)(GaimLog*, GaimLogReadFlags*), | 378 char*(*read)(GaimLog*, GaimLogReadFlags*), |
| 359 int(*size)(GaimLog*), | 379 int(*size)(GaimLog*), |
| 360 int(*total_size)(GaimLogType type, const char *name, GaimAccount *account), | 380 int(*total_size)(GaimLogType type, const char *name, GaimAccount *account), |
| 361 GList*(*list_syslog)(GaimAccount *account), | 381 GList*(*list_syslog)(GaimAccount *account), |
| 362 GList*(*get_log_sets)(void)); | 382 void(*get_log_sets)(GaimLogSetCallback cb, GHashTable *sets)); |
| 363 | 383 |
| 364 /** | 384 /** |
| 365 * Frees a logger | 385 * Frees a logger |
| 366 * | 386 * |
| 367 * @param logger The logger to free | 387 * @param logger The logger to free |
