/* babl - dynamically extendable universal pixel conversion library. * Copyright (C) 2005-2008, Øyvind Kolås and others. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with this library; if not, see * . */ #ifndef _BABL_CLASS_H #define _BABL_CLASS_H #include "babl.h" typedef struct _BablList BablList; typedef int BablClassType; typedef int (*BablEachFunction) (Babl *entry, void *data); /* All Classes in babl have common functionality like the ability * to be iterated over, common functionality is defined through these * macros. */ #define BABL_CLASS_DECLARE(klass) \ \ BablDb * babl_##klass##_db (void); \ const Babl * babl_##klass##_from_id (int id); \ void babl_##klass##_class_for_each (BablEachFunction each_fun, \ void *user_data) /* common header for any item inserted into database, the actual * implementation of babl-instance is in babl-internal */ typedef struct { BablClassType class_type; int id; /*< a numerical id, look at 'babl-ids.h' for the reserved ones */ void *creator; char *name; /*< the name this type exists under */ } BablInstance; #endif