зеркало из https://github.com/mozilla/pjs.git
90 строки
3.0 KiB
C
90 строки
3.0 KiB
C
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
/*
|
|
This file is no longer used and should be removed.
|
|
*/
|
|
|
|
#ifndef _THREADS_H_
|
|
#define _THREADS_H_
|
|
|
|
#include "msg.h"
|
|
#include "xp_hash.h"
|
|
|
|
struct msg_thread_state; /* opaque */
|
|
|
|
/* When we need to create/destry a synthetic ThreadEntry, we call these. */
|
|
typedef MSG_ThreadEntry * (*msg_DummyThreadEntryCreator) (void *arg);
|
|
typedef void (*msg_DummyThreadEntryDestroyer) (struct MSG_ThreadEntry *dummy,
|
|
void *arg);
|
|
|
|
XP_BEGIN_PROTOS
|
|
|
|
/* Creates and initializes a state object to hold the thread data.
|
|
The first argument should be the caller's best guess as to how
|
|
many messages there will be; it is used for the initial size of
|
|
the hash tables, so it's ok for it to be too small. The other
|
|
arguments specify the sorting behavior.
|
|
*/
|
|
extern struct msg_thread_state *
|
|
msg_BeginThreading (MWContext* context,
|
|
uint32 message_count_guess,
|
|
XP_Bool news_p,
|
|
MSG_SORT_KEY sort_key,
|
|
XP_Bool sort_forward_p,
|
|
XP_Bool thread_p,
|
|
msg_DummyThreadEntryCreator dummy_creator,
|
|
void *dummy_creator_arg);
|
|
|
|
/* Add a message to the thread data.
|
|
The msg->next slot will be ignored (and not modified.)
|
|
*/
|
|
extern int
|
|
msg_ThreadMessage (struct msg_thread_state *state,
|
|
char **string_table,
|
|
struct MSG_ThreadEntry *msg);
|
|
|
|
/* Threads the messages, discards the state object, and returns a
|
|
tree of MSG_ThreadEntry objects.
|
|
The msg->next and msg->first_child slots of all messages will
|
|
be overwritten.
|
|
*/
|
|
extern struct MSG_ThreadEntry *
|
|
msg_DoneThreading (struct msg_thread_state *state,
|
|
char **string_table);
|
|
|
|
/* Given an existing tree of MSG_ThreadEntry structures, re-sorts them.
|
|
This changes the `next' and `first_child' links, and may create or
|
|
destroy "dummy" thread entries (those with the EXPIRED flag set.)
|
|
The new root of the tree is returned.
|
|
*/
|
|
extern struct MSG_ThreadEntry *
|
|
msg_RethreadMessages (MWContext* context,
|
|
struct MSG_ThreadEntry *tree,
|
|
uint32 approximate_message_count,
|
|
char **string_table,
|
|
XP_Bool news_p,
|
|
MSG_SORT_KEY sort_key, XP_Bool sort_forward_p,
|
|
XP_Bool thread_p,
|
|
msg_DummyThreadEntryCreator dummy_creator,
|
|
msg_DummyThreadEntryDestroyer dummy_destroyer,
|
|
void *dummy_arg);
|
|
|
|
XP_END_PROTOS
|
|
|
|
#endif /* _THREADS_H_ */
|