Blame src/mw_st_list.h

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