From 69aa6e0ee0ca36bd8ea77135b62c4aac59c30f99 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Wed, 14 Jul 2010 20:14:01 -0600 Subject: Don't expose the contents of struct dmnsn_progress. --- libdimension/Makefile.am | 1 + libdimension/canvas.c | 1 - libdimension/dimension/progress.h | 24 +---------------------- libdimension/dimension_impl.h | 1 + libdimension/progress-struct.h | 40 +++++++++++++++++++++++++++++++++++++++ libdimension/progress.c | 8 +++++++- 6 files changed, 50 insertions(+), 25 deletions(-) create mode 100644 libdimension/progress-struct.h diff --git a/libdimension/Makefile.am b/libdimension/Makefile.am index 905606d..43b3169 100644 --- a/libdimension/Makefile.am +++ b/libdimension/Makefile.am @@ -73,6 +73,7 @@ libdimension_la_SOURCES = $(nobase_include_HEADERS) \ platform.h \ point_light.c \ progress.c \ + progress-struct.h \ prtree.c \ prtree.h \ raytrace.c \ diff --git a/libdimension/canvas.c b/libdimension/canvas.c index 8a32d2a..7da63f8 100644 --- a/libdimension/canvas.c +++ b/libdimension/canvas.c @@ -19,7 +19,6 @@ *************************************************************************/ #include "dimension.h" -#include #include /* For free() */ /* Allocate a new canvas, of width x and height y */ diff --git a/libdimension/dimension/progress.h b/libdimension/dimension/progress.h index 8b20ba0..0a7dce2 100644 --- a/libdimension/dimension/progress.h +++ b/libdimension/dimension/progress.h @@ -28,29 +28,7 @@ #ifndef DIMENSION_PROGRESS_H #define DIMENSION_PROGRESS_H -#include - -/* A single element in an array for dmnsn_progress. Progress of this item is - progress/total. */ -typedef struct { - unsigned int progress, total; -} dmnsn_progress_element; - -typedef struct { - /* Array of progress elements. Progress is given by P(0), where - P(i) = (elements[i].progress + P(i + 1))/elements[i].total. */ - dmnsn_array *elements; - - /* The worker thread */ - pthread_t thread; - - /* Read-write synchronization */ - pthread_rwlock_t *rwlock; - - /* Condition variable for waiting for a particular amount of progress */ - pthread_cond_t *cond; - pthread_mutex_t *mutex; -} dmnsn_progress; +typedef struct dmnsn_progress dmnsn_progress; /* Allocate a new progress object */ dmnsn_progress *dmnsn_new_progress(); diff --git a/libdimension/dimension_impl.h b/libdimension/dimension_impl.h index cf1671e..0329dbc 100644 --- a/libdimension/dimension_impl.h +++ b/libdimension/dimension_impl.h @@ -23,6 +23,7 @@ #define _GNU_SOURCE #include "dimension.h" +#include "progress-struct.h" #include "platform.h" #include "threads.h" #include "prtree.h" diff --git a/libdimension/progress-struct.h b/libdimension/progress-struct.h new file mode 100644 index 0000000..a71cf63 --- /dev/null +++ b/libdimension/progress-struct.h @@ -0,0 +1,40 @@ +/************************************************************************* + * Copyright (C) 2010 Tavian Barnes * + * * + * This file is part of The Dimension Library. * + * * + * The Dimension 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. * + * * + * The Dimension 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 program. If not, see * + * . * + *************************************************************************/ + +#ifndef DIMENSION_IMPL_PROGRESS_STRUCT_H +#define DIMENSION_IMPL_PROGRESS_STRUCT_H + +struct dmnsn_progress { + /* Array of progress elements. Progress is given by P(0), where + P(i) = (elements[i].progress + P(i + 1))/elements[i].total. */ + dmnsn_array *elements; + + /* The worker thread */ + pthread_t thread; + + /* Read-write synchronization */ + pthread_rwlock_t *rwlock; + + /* Condition variable for waiting for a particular amount of progress */ + pthread_cond_t *cond; + pthread_mutex_t *mutex; +}; + +#endif /* DIMENSION_IMPL_PROGRESS_STRUCT_H */ diff --git a/libdimension/progress.c b/libdimension/progress.c index 810920b..9d51d8d 100644 --- a/libdimension/progress.c +++ b/libdimension/progress.c @@ -18,9 +18,15 @@ * . * *************************************************************************/ -#include "dimension.h" +#include "dimension_impl.h" #include +/* A single element in an array for dmnsn_progress. Progress of this item is + progress/total. */ +typedef struct { + unsigned int progress, total; +} dmnsn_progress_element; + /* For thread synchronization */ static void dmnsn_progress_rdlock(const dmnsn_progress *progress); static void dmnsn_progress_wrlock(dmnsn_progress *progress); -- cgit v1.2.3