MPD

- Main Page
- Data Structures
- Files

- File List
- Globals

# src/refcount.h

Go to the documentation of this file.

    00001 /*
    00002  * Copyright (C) 2003-2010 The Music Player Daemon Project
    00003  * http://www.musicpd.org
    00004  *
    00005  * Redistribution and use in source and binary forms, with or without
    00006  * modification, are permitted provided that the following conditions
    00007  * are met:
    00008  *
    00009  * - Redistributions of source code must retain the above copyright
    00010  * notice, this list of conditions and the following disclaimer.
    00011  *
    00012  * - Redistributions in binary form must reproduce the above copyright
    00013  * notice, this list of conditions and the following disclaimer in the
    00014  * documentation and/or other materials provided with the
    00015  * distribution.
    00016  *
    00017  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    00018  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
    00019  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
    00020  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
    00021  * FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
    00022  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    00023  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
    00024  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    00025  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    00026  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    00027  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
    00028  * OF THE POSSIBILITY OF SUCH DAMAGE.
    00029  */
    00030
    00036 #ifndef MPD_REFCOUNT_H
    00037 #define MPD_REFCOUNT_H
    00038
    00039 #include <glib.h>
    00040
    00041 struct refcount {
    00042         gint n;
    00043 };
    00044
    00045 static inline void
    00046 refcount_init(struct refcount *r)
    00047 {
    00048         r->n = 1;
    00049 }
    00050
    00051 static inline void
    00052 refcount_inc(struct refcount *r)
    00053 {
    00054         g_atomic_int_inc(&r->n);
    00055 }
    00056
    00060 static inline bool
    00061 refcount_dec(struct refcount *r)
    00062 {
    00063         return g_atomic_int_dec_and_test(&r->n);
    00064 }
    00065
    00066 #endif