forked from KolibriOS/kolibrios
370da47fa0
git-svn-id: svn://kolibrios.org@3584 a494cfbc-eb01-0410-851d-a64ba20cac60
117 lines
3.6 KiB
C
117 lines
3.6 KiB
C
/*
|
|
* This file is part of libdom.
|
|
* Licensed under the MIT License,
|
|
* http://www.opensource.org/licenses/mit-license.php
|
|
* Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org>
|
|
*/
|
|
|
|
#ifndef dom_string_h_
|
|
#define dom_string_h_
|
|
|
|
#include <inttypes.h>
|
|
#include <stddef.h>
|
|
#include <libwapcaplet/libwapcaplet.h>
|
|
|
|
#include <dom/functypes.h>
|
|
#include <dom/core/exceptions.h>
|
|
|
|
typedef struct dom_string dom_string;
|
|
extern struct dom_string {
|
|
uint32_t refcnt;
|
|
} _ALIGNED;
|
|
|
|
|
|
/* Claim a reference on a DOM string */
|
|
static inline dom_string *dom_string_ref(dom_string *str)
|
|
{
|
|
if (str != NULL)
|
|
str->refcnt++;
|
|
return str;
|
|
}
|
|
|
|
/* Destroy a DOM string */
|
|
void dom_string_destroy(dom_string *str);
|
|
|
|
/* Release a reference on a DOM string */
|
|
static inline void dom_string_unref(dom_string *str)
|
|
{
|
|
if ((str != NULL) && (--(str->refcnt) == 0)) {
|
|
dom_string_destroy(str);
|
|
}
|
|
}
|
|
|
|
/* Create a DOM string from a string of characters */
|
|
dom_exception dom_string_create(const uint8_t *ptr, size_t len,
|
|
dom_string **str);
|
|
dom_exception dom_string_create_interned(const uint8_t *ptr, size_t len,
|
|
dom_string **str);
|
|
|
|
/* Obtain an interned representation of a dom string */
|
|
dom_exception dom_string_intern(dom_string *str,
|
|
struct lwc_string_s **lwcstr);
|
|
|
|
/* Case sensitively compare two DOM strings */
|
|
bool dom_string_isequal(const dom_string *s1, const dom_string *s2);
|
|
/* Case insensitively compare two DOM strings */
|
|
bool dom_string_caseless_isequal(const dom_string *s1, const dom_string *s2);
|
|
|
|
/* Case sensitively compare DOM string and lwc_string */
|
|
bool dom_string_lwc_isequal(const dom_string *s1, lwc_string *s2);
|
|
/* Case insensitively compare DOM string and lwc_string */
|
|
bool dom_string_caseless_lwc_isequal(const dom_string *s1, lwc_string *s2);
|
|
|
|
/* Get the index of the first occurrence of a character in a dom string */
|
|
uint32_t dom_string_index(dom_string *str, uint32_t chr);
|
|
/* Get the index of the last occurrence of a character in a dom string */
|
|
uint32_t dom_string_rindex(dom_string *str, uint32_t chr);
|
|
|
|
/* Get the length, in characters, of a dom string */
|
|
uint32_t dom_string_length(dom_string *str);
|
|
|
|
/**
|
|
* Get the raw character data of the dom_string.
|
|
* @note: This function is just provided for the convenience of accessing the
|
|
* raw C string character, no change on the result string is allowed.
|
|
*/
|
|
const char *dom_string_data(const dom_string *str);
|
|
|
|
/* Get the byte length of this dom_string */
|
|
size_t dom_string_byte_length(const dom_string *str);
|
|
|
|
/* Get the UCS-4 character at position index, the index should be in
|
|
* [0, length), and length can be get by calling dom_string_length
|
|
*/
|
|
dom_exception dom_string_at(dom_string *str, uint32_t index,
|
|
uint32_t *ch);
|
|
|
|
/* Concatenate two dom strings */
|
|
dom_exception dom_string_concat(dom_string *s1, dom_string *s2,
|
|
dom_string **result);
|
|
|
|
/* Extract a substring from a dom string */
|
|
dom_exception dom_string_substr(dom_string *str,
|
|
uint32_t i1, uint32_t i2, dom_string **result);
|
|
|
|
/* Insert data into a dom string at the given location */
|
|
dom_exception dom_string_insert(dom_string *target,
|
|
dom_string *source, uint32_t offset,
|
|
dom_string **result);
|
|
|
|
/* Replace a section of a dom string */
|
|
dom_exception dom_string_replace(dom_string *target,
|
|
dom_string *source, uint32_t i1, uint32_t i2,
|
|
dom_string **result);
|
|
|
|
/* Generate an uppercase version of the given string */
|
|
dom_exception dom_string_toupper(dom_string *source, bool ascii_only,
|
|
dom_string **upper);
|
|
|
|
/* Generate an lowercase version of the given string */
|
|
dom_exception dom_string_tolower(dom_string *source, bool ascii_only,
|
|
dom_string **lower);
|
|
|
|
/* Calculate a hash value from a dom string */
|
|
uint32_t dom_string_hash(dom_string *str);
|
|
|
|
#endif
|