Blame src/mw_st_list.h.fix-glib-headers

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