Blame src/mw_st_list.h

Packit 16808d
Packit 16808d
/*
Packit 16808d
  Meanwhile - Unofficial Lotus Sametime Community Client Library
Packit 16808d
  Copyright (C) 2004  Christopher (siege) O'Brien
Packit 16808d
  
Packit 16808d
  This library is free software; you can redistribute it and/or
Packit 16808d
  modify it under the terms of the GNU Library General Public
Packit 16808d
  License as published by the Free Software Foundation; either
Packit 16808d
  version 2 of the License, or (at your option) any later version.
Packit 16808d
  
Packit 16808d
  This library is distributed in the hope that it will be useful,
Packit 16808d
  but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 16808d
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 16808d
  Library General Public License for more details.
Packit 16808d
  
Packit 16808d
  You should have received a copy of the GNU Library General Public
Packit 16808d
  License along with this library; if not, write to the Free
Packit 16808d
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
Packit 16808d
*/
Packit 16808d
Packit 16808d
#ifndef _MW_ST_LIST_H
Packit 16808d
#define _MW_ST_LIST_H
Packit 16808d
Packit 16808d
Packit 16808d
/** @file mw_st_list.h
Packit 16808d
Packit 16808d
    Parse and compose buddy lists in the format commonly used by Sametime
Packit 16808d
    Connect clients.
Packit 16808d
*/
Packit 16808d
Packit 16808d
Packit 16808d
#include <glib.h>
Packit 16808d
#include "mw_common.h"
Packit 16808d
Packit 16808d
Packit 16808d
#ifdef __cplusplus
Packit 16808d
extern "C" {
Packit 16808d
#endif
Packit 16808d
Packit 16808d
Packit 16808d
#define ST_LIST_MAJOR  3
Packit 16808d
#define ST_LIST_MINOR  1
Packit 16808d
#define ST_LIST_MICRO  3
Packit 16808d
Packit 16808d
Packit 16808d
enum mwSametimeGroupType {
Packit 16808d
  mwSametimeGroup_NORMAL  = 1,  /**< a normal group of users */
Packit 16808d
  mwSametimeGroup_DYNAMIC = 2,  /**< a server-side group */
Packit 16808d
  mwSametimeGroup_UNKNOWN = 0,  /**< error determining group type */
Packit 16808d
};
Packit 16808d
Packit 16808d
Packit 16808d
enum mwSametimeUserType {
Packit 16808d
  mwSametimeUser_NORMAL   = 1,  /**< user on same community */
Packit 16808d
  mwSametimeUser_EXTERNAL = 2,  /**< external user */
Packit 16808d
  mwSametimeUser_UNKNOWN  = 0,  /**< error determining user type */
Packit 16808d
};
Packit 16808d
Packit 16808d
Packit 16808d
/** @struct mwSametimeList
Packit 16808d
Packit 16808d
    Represents a group-based buddy list. */
Packit 16808d
struct mwSametimeList;
Packit 16808d
Packit 16808d
Packit 16808d
/** @struct mwSametimeGroup
Packit 16808d
Packit 16808d
    Represents a group in a buddy list */
Packit 16808d
struct mwSametimeGroup;
Packit 16808d
Packit 16808d
Packit 16808d
/** @struct mwSametimeUser
Packit 16808d
Packit 16808d
    Represents a user in a group in a buddy list */
Packit 16808d
struct mwSametimeUser;
Packit 16808d
Packit 16808d
Packit 16808d
/** Create a new list */
Packit 16808d
struct mwSametimeList *mwSametimeList_new(void);
Packit 16808d
Packit 16808d
Packit 16808d
/** Free the list, all of its groups, and all of the groups' members */
Packit 16808d
void mwSametimeList_free(struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
/** Load a sametime list from a buffer. The list must be encapsulated
Packit 16808d
    as a string (eg, the first two bytes in the buffer should be the
Packit 16808d
    length of the string) */
Packit 16808d
void mwSametimeList_get(struct mwGetBuffer *b, struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
/** Write a sametime list onto a buffer. The list will be encapsulated
Packit 16808d
    in a string (the first two bytes written will be the length of the
Packit 16808d
    rest of the written list data) */
Packit 16808d
void mwSametimeList_put(struct mwPutBuffer *b, struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
/** convert a plain string into a sametime list */
Packit 16808d
struct mwSametimeList *mwSametimeList_load(const char *str);
Packit 16808d
Packit 16808d
Packit 16808d
/** convert a sametime list into a string */
Packit 16808d
char *mwSametimeList_store(struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeList_setMajor(struct mwSametimeList *l, guint v);
Packit 16808d
Packit 16808d
Packit 16808d
guint mwSametimeList_getMajor(struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeList_setMinor(struct mwSametimeList *l, guint v);
Packit 16808d
Packit 16808d
Packit 16808d
guint mwSametimeList_getMinor(struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeList_setMicro(struct mwSametimeList *l, guint v);
Packit 16808d
Packit 16808d
Packit 16808d
guint mwSametimeList_getMicro(struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
/** Get a GList snapshot of the groups in a list */
Packit 16808d
GList *mwSametimeList_getGroups(struct mwSametimeList *l);
Packit 16808d
Packit 16808d
Packit 16808d
struct mwSametimeGroup *
Packit 16808d
mwSametimeList_findGroup(struct mwSametimeList *l,
Packit 16808d
			 const char *name);
Packit 16808d
Packit 16808d
Packit 16808d
/** Create a new group in a list */
Packit 16808d
struct mwSametimeGroup *
Packit 16808d
mwSametimeGroup_new(struct mwSametimeList *l,
Packit 16808d
		    enum mwSametimeGroupType type,
Packit 16808d
		    const char *name);
Packit 16808d
Packit 16808d
Packit 16808d
/** Remove a group from its list, and free it. Also frees all users
Packit 16808d
    contained in the group */
Packit 16808d
void mwSametimeGroup_free(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
enum mwSametimeGroupType mwSametimeGroup_getType(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
const char *mwSametimeGroup_getName(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeGroup_setAlias(struct mwSametimeGroup *g,
Packit 16808d
			      const char *alias);
Packit 16808d
Packit 16808d
Packit 16808d
const char *mwSametimeGroup_getAlias(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeGroup_setOpen(struct mwSametimeGroup *g, gboolean open);
Packit 16808d
Packit 16808d
Packit 16808d
gboolean mwSametimeGroup_isOpen(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
struct mwSametimeList *mwSametimeGroup_getList(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
/** Get a GList snapshot of the users in a list */
Packit 16808d
GList *mwSametimeGroup_getUsers(struct mwSametimeGroup *g);
Packit 16808d
Packit 16808d
Packit 16808d
struct mwSametimeUser *
Packit 16808d
mwSametimeGroup_findUser(struct mwSametimeGroup *g,
Packit 16808d
			 struct mwIdBlock *user);
Packit 16808d
Packit 16808d
Packit 16808d
/** Create a user in a group */
Packit 16808d
struct mwSametimeUser *
Packit 16808d
mwSametimeUser_new(struct mwSametimeGroup *g,
Packit 16808d
		   enum mwSametimeUserType type,
Packit 16808d
		   struct mwIdBlock *user);
Packit 16808d
Packit 16808d
Packit 16808d
/** Remove user from its group, and free it */
Packit 16808d
void mwSametimeUser_free(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
struct mwSametimeGroup *mwSametimeUser_getGroup(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
enum mwSametimeUserType mwSametimeUser_getType(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
const char *mwSametimeUser_getUser(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
const char *mwSametimeUser_getCommunity(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeUser_setShortName(struct mwSametimeUser *u, const char *name);
Packit 16808d
Packit 16808d
Packit 16808d
const char *mwSametimeUser_getShortName(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
void mwSametimeUser_setAlias(struct mwSametimeUser *u, const char *alias);
Packit 16808d
Packit 16808d
Packit 16808d
const char *mwSametimeUser_getAlias(struct mwSametimeUser *u);
Packit 16808d
Packit 16808d
Packit 16808d
Packit 16808d
#ifdef __cplusplus
Packit 16808d
}
Packit 16808d
#endif
Packit 16808d
Packit 16808d
Packit 16808d
#endif /* _MW_ST_LIST_H */