diff --git a/lib/skin_parser/skin_buffer.c b/lib/skin_parser/skin_buffer.c index b0910976e2..05cdc0ce03 100644 --- a/lib/skin_parser/skin_buffer.c +++ b/lib/skin_parser/skin_buffer.c @@ -56,3 +56,16 @@ void* skin_buffer_alloc(size_t size) #endif return retval; } + + +#ifdef ROCKBOX +/* get the number of bytes currently being used */ +size_t skin_buffer_usage(void) +{ + return buffer_front - buffer; +} +size_t skin_buffer_freespace(void) +{ + return SKIN_BUFFER_SIZE - skin_buffer_usage(); +} +#endif diff --git a/lib/skin_parser/skin_buffer.h b/lib/skin_parser/skin_buffer.h index fa8f149c71..ff477da539 100644 --- a/lib/skin_parser/skin_buffer.h +++ b/lib/skin_parser/skin_buffer.h @@ -28,4 +28,8 @@ void skin_buffer_init(size_t size); /* Allocate size bytes from the buffer */ void* skin_buffer_alloc(size_t size); + +/* get the number of bytes currently being used */ +size_t skin_buffer_usage(void); +size_t skin_buffer_freespace(void); #endif diff --git a/lib/skin_parser/skin_parser.c b/lib/skin_parser/skin_parser.c index f7ff4ad693..9c360231e1 100644 --- a/lib/skin_parser/skin_parser.c +++ b/lib/skin_parser/skin_parser.c @@ -51,6 +51,8 @@ static int skin_parse_conditional(struct skin_element* element, static int skin_parse_comment(struct skin_element* element, char** document); static struct skin_element* skin_parse_code_as_arg(char** document); + + struct skin_element* skin_parse(const char* document) { @@ -836,15 +838,10 @@ static struct skin_element* skin_parse_code_as_arg(char** document) /* Memory management */ -char* skin_alloc(size_t size) -{ - return skin_buffer_alloc(size); -} - struct skin_element* skin_alloc_element() { struct skin_element* retval = (struct skin_element*) - skin_alloc(sizeof(struct skin_element)); + skin_buffer_alloc(sizeof(struct skin_element)); retval->type = UNKNOWN; retval->next = NULL; retval->tag = NULL; @@ -858,19 +855,19 @@ struct skin_element* skin_alloc_element() struct skin_tag_parameter* skin_alloc_params(int count) { size_t size = sizeof(struct skin_tag_parameter) * count; - return (struct skin_tag_parameter*)skin_alloc(size); + return (struct skin_tag_parameter*)skin_buffer_alloc(size); } char* skin_alloc_string(int length) { - return (char*)skin_alloc(sizeof(char) * (length + 1)); + return (char*)skin_buffer_alloc(sizeof(char) * (length + 1)); } struct skin_element** skin_alloc_children(int count) { return (struct skin_element**) - skin_alloc(sizeof(struct skin_element*) * count); + skin_buffer_alloc(sizeof(struct skin_element*) * count); } void skin_free_tree(struct skin_element* root) diff --git a/lib/skin_parser/skin_parser.h b/lib/skin_parser/skin_parser.h index ec0f3b9bfc..95a22a6d53 100644 --- a/lib/skin_parser/skin_parser.h +++ b/lib/skin_parser/skin_parser.h @@ -122,7 +122,6 @@ struct skin_element struct skin_element* skin_parse(const char* document); /* Memory management functions */ -char *skin_alloc(size_t size); struct skin_element* skin_alloc_element(void); struct skin_element** skin_alloc_children(int count); struct skin_tag_parameter* skin_alloc_params(int count);