summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-08-22 00:20:13 +0000
committerLennart Poettering <lennart@poettering.net>2007-08-22 00:20:13 +0000
commitb7b119ae00090074ec0bc48da7a0c4b689efa55c (patch)
treeef67518a6e52beb215afd67c29b08f16b9ddfaf9
parenta0ad42a35f73a9bdc0751cbb902f01da2c3c4b05 (diff)
add pa_is_power_of_two() and pa_make_power_of_two() functions
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1684 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/pulsecore/core-util.c18
-rw-r--r--src/pulsecore/core-util.h3
2 files changed, 21 insertions, 0 deletions
diff --git a/src/pulsecore/core-util.c b/src/pulsecore/core-util.c
index 2c5a32e9..0005e220 100644
--- a/src/pulsecore/core-util.c
+++ b/src/pulsecore/core-util.c
@@ -1208,3 +1208,21 @@ char *pa_truncate_utf8(char *c, size_t l) {
return c;
}
+
+int pa_is_power_of_two(unsigned n) {
+ return !(n & (n - 1));
+}
+
+unsigned pa_make_power_of_two(unsigned n) {
+ unsigned j = n;
+
+ if (pa_is_power_of_two(n))
+ return n;
+
+ while (j) {
+ j = j >> 1;
+ n = n | j;
+ }
+
+ return n + 1;
+}
diff --git a/src/pulsecore/core-util.h b/src/pulsecore/core-util.h
index cb78d32d..29dc2fb1 100644
--- a/src/pulsecore/core-util.h
+++ b/src/pulsecore/core-util.h
@@ -97,4 +97,7 @@ int pa_snprintf(char *str, size_t size, const char *format, ...);
char *pa_truncate_utf8(char *c, size_t l);
+int pa_is_power_of_two(unsigned n);
+unsigned pa_make_power_of_two(unsigned n);
+
#endif