From 379d69c653fd9c6920ab56d0b8ded7e00b8d6efb Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 31 May 2014 05:56:33 +0200 Subject: add libgamma_name_of_error and libgamma_value_of_error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- Makefile | 7 ++++ src/libgamma-error.c | 35 ------------------- src/libgamma-error.c.gpp | 88 ++++++++++++++++++++++++++++++++++++++++++++++++ src/libgamma-error.h | 21 ++++++++++++ 4 files changed, 116 insertions(+), 35 deletions(-) delete mode 100644 src/libgamma-error.c create mode 100644 src/libgamma-error.c.gpp diff --git a/Makefile b/Makefile index 377d98e..bb4dfb2 100644 --- a/Makefile +++ b/Makefile @@ -124,6 +124,13 @@ obj/%.o: src/%.c src/*.h mkdir -p $(shell dirname $@) $(CC) $(LIB_FLAGS) $(LIBS_C) -fPIC -c -o $@ $< +obj/%.o: obj/%.c src/*.h + $(CC) $(LIB_FLAGS) $(LIBS_C) -fPIC -iquote"src" -c -o $@ $< + +obj/%: src/%.gpp + mkdir -p $(shell dirname $@) + $(GPP) --symbol '£' --input $< --output $@ + .PHONY: test test: bin/test diff --git a/src/libgamma-error.c b/src/libgamma-error.c deleted file mode 100644 index 9374f8b..0000000 --- a/src/libgamma-error.c +++ /dev/null @@ -1,35 +0,0 @@ -/** - * libgamma — Display server abstraction layer for gamma ramp adjustments - * Copyright © 2014 Mattias Andrée (maandree@member.fsf.org) - * - * This library is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this library. If not, see . - */ -#include "libgamma-error.h" - - -#include -#include - - -/** - * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned. - */ -gid_t libgamma_group_gid = 0; - -/** - * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned, - * `NULL` if the name of the group `libgamma_group_gid` cannot be determined. - */ -const char* libgamma_group_name = NULL; - diff --git a/src/libgamma-error.c.gpp b/src/libgamma-error.c.gpp new file mode 100644 index 0000000..93f8542 --- /dev/null +++ b/src/libgamma-error.c.gpp @@ -0,0 +1,88 @@ +/* -*- c -*- */ +/** + * libgamma — Display server abstraction layer for gamma ramp adjustments + * Copyright © 2014 Mattias Andrée (maandree@member.fsf.org) + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this library. If not, see . + */ +#include "libgamma-error.h" + + +#include +#include +#include + + + +/** + * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned. + */ +gid_t libgamma_group_gid = 0; + +/** + * Group that the user needs to be a member of if `LIBGAMMA_DEVICE_REQUIRE_GROUP` is returned, + * `NULL` if the name of the group `libgamma_group_gid` cannot be determined. + */ +const char* libgamma_group_name = NULL; + + + +£>set -u +£>cd info +£>export PATH=".:${PATH}" + + +/** + * Returns the name of the definition associated with a libgamma error code. + * + * @param value The error code. + * @return The name of the definition associated with the error code, + * `NULL` if the error code does not exist. The return string + * should not be `free`:d. + */ +const char* libgamma_name_of_error(int value) +{ + static const char* error_names[] = + { +£>for error in $(libgamma-error-extract --list); do + "£{error}", +£>done + }; + + if ((value < LIBGAMMA_ERROR_MIN) || (value >= 0)) + return NULL; + + return error_names[-value - 1]; +} + + +/** + * Return the value of a libgamma error definition refered to by name. + * + * @param name The name of the definition associated with the error code. + * @return The error code, zero if the name does is `NULL` + * or does not refer to an libgamma error. + */ +int libgamma_value_of_error(const char* name) +{ + if (name == NULL) + return 0; + +£>for error in $(libgamma-error-extract --list); do + if (!strcmp(name, "£{error}")) return £{error}; +£>done + + return 0; +} + diff --git a/src/libgamma-error.h b/src/libgamma-error.h index 1698e5f..fac5276 100644 --- a/src/libgamma-error.h +++ b/src/libgamma-error.h @@ -288,5 +288,26 @@ extern const char* libgamma_group_name; +/** + * Returns the name of the definition associated with a libgamma error code. + * + * @param value The error code. + * @return The name of the definition associated with the error code, + * `NULL` if the error code does not exist. The return string + * should not be `free`:d. + */ +const char* libgamma_name_of_error(int value) __attribute__((const)); + +/** + * Return the value of a libgamma error definition refered to by name. + * + * @param name The name of the definition associated with the error code. + * @return The error code, zero if the name does is `NULL` + * or does not refer to an libgamma error. + */ +int libgamma_value_of_error(const char* name) __attribute__((const)); + + + #endif -- cgit v1.2.3-70-g09d2