/*
 * QBool Module
 *
 * Copyright IBM, Corp. 2009
 *
 * Authors:
 *  Anthony Liguori   <aliguori@us.ibm.com>
 *
 * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
 * See the COPYING.LIB file in the top-level directory.
 *
 */

#ifndef QBOOL_H
#define QBOOL_H

#include "qobject/qobject.h"

struct QBool {
    struct QObjectBase_ base;
    bool value;
};

void qbool_unref(QBool *q);

G_DEFINE_AUTOPTR_CLEANUP_FUNC(QBool, qbool_unref)

QBool *qbool_from_bool(bool value);
bool qbool_get_bool(const QBool *qb);

#endif /* QBOOL_H */
