summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2011-01-31 00:18:15 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2011-01-31 00:18:15 +0000
commit9fa9b9d104c730ef6d84b19245b61ebc9554b432 (patch)
treefb4f28285283241da6490b482dc61aac731f48a8 /src/utils
parent6ba000db056d7e9b70a7e154a003644046bf7e98 (diff)
downloadlibcss-9fa9b9d104c730ef6d84b19245b61ebc9554b432.tar.gz
libcss-9fa9b9d104c730ef6d84b19245b61ebc9554b432.tar.bz2
CSS3 Selectors
svn path=/trunk/libcss/; revision=11557
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/utils.c25
-rw-r--r--src/utils/utils.h2
2 files changed, 19 insertions, 8 deletions
diff --git a/src/utils/utils.c b/src/utils/utils.c
index 94b15e1..1745ea0 100644
--- a/src/utils/utils.c
+++ b/src/utils/utils.c
@@ -10,20 +10,29 @@
css_fixed css__number_from_lwc_string(lwc_string *string,
bool int_only, size_t *consumed)
{
- size_t len;
- const uint8_t *ptr;
+ if (string == NULL || lwc_string_length(string) == 0 ||
+ consumed == NULL)
+ return 0;
+
+ return css__number_from_string(
+ (uint8_t *)lwc_string_data(string),
+ lwc_string_length(string),
+ int_only,
+ consumed);
+}
+
+css_fixed css__number_from_string(const uint8_t *data, size_t len,
+ bool int_only, size_t *consumed)
+{
+ const uint8_t *ptr = data;
int sign = 1;
int32_t intpart = 0;
int32_t fracpart = 0;
int32_t pwr = 1;
- if (string == NULL || lwc_string_length(string) == 0 ||
- consumed == NULL)
+ if (data == NULL || len == 0 || consumed == NULL)
return 0;
- len = lwc_string_length(string);
- ptr = (uint8_t *)lwc_string_data(string);
-
/* number = [+-]? ([0-9]+ | [0-9]* '.' [0-9]+) */
/* Extract sign, if any */
@@ -92,7 +101,7 @@ css_fixed css__number_from_lwc_string(lwc_string *string,
}
}
- *consumed = (char *)ptr - lwc_string_data(string);
+ *consumed = ptr - data;
if (sign > 0) {
/* If the result is larger than we can represent,
diff --git a/src/utils/utils.h b/src/utils/utils.h
index 4859dea..1f7ed8c 100644
--- a/src/utils/utils.h
+++ b/src/utils/utils.h
@@ -36,6 +36,8 @@
css_fixed css__number_from_lwc_string(lwc_string *string, bool int_only,
size_t *consumed);
+css_fixed css__number_from_string(const uint8_t *data, size_t len,
+ bool int_only, size_t *consumed);
static inline bool isDigit(uint8_t c)
{