Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * This file is part of libdom.
  3.  * Licensed under the MIT License,
  4.  *                http://www.opensource.org/licenses/mit-license.php
  5.  * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org>
  6.  */
  7.  
  8. #ifndef dom_core_text_h_
  9. #define dom_core_text_h_
  10.  
  11. #include <stdbool.h>
  12.  
  13. #include <dom/core/exceptions.h>
  14. #include <dom/core/characterdata.h>
  15.  
  16. struct dom_characterdata;
  17.  
  18. typedef struct dom_text dom_text;
  19.  
  20. typedef struct dom_text_vtable {
  21.         struct dom_characterdata_vtable base;
  22.  
  23.         dom_exception (*dom_text_split_text)(struct dom_text *text,
  24.                         uint32_t offset, struct dom_text **result);
  25.         dom_exception (*dom_text_get_is_element_content_whitespace)(
  26.                         struct dom_text *text, bool *result);
  27.         dom_exception (*dom_text_get_whole_text)(struct dom_text *text,
  28.                         dom_string **result);
  29.         dom_exception (*dom_text_replace_whole_text)(struct dom_text *text,
  30.                         dom_string *content, struct dom_text **result);
  31. } dom_text_vtable;
  32.  
  33. static inline dom_exception dom_text_split_text(struct dom_text *text,
  34.                 uint32_t offset, struct dom_text **result)
  35. {
  36.         return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
  37.                         dom_text_split_text(text, offset, result);
  38. }
  39. #define dom_text_split_text(t, o, r) dom_text_split_text((dom_text *) (t), \
  40.                 (uint32_t) (o), (dom_text **) (r))
  41.  
  42. static inline dom_exception dom_text_get_is_element_content_whitespace(
  43.                 struct dom_text *text, bool *result)
  44. {
  45.         return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
  46.                         dom_text_get_is_element_content_whitespace(text,
  47.                         result);
  48. }
  49. #define dom_text_get_is_element_content_whitespace(t, r) \
  50.                 dom_text_get_is_element_content_whitespace((dom_text *) (t), \
  51.                 (bool *) (r))
  52.  
  53. static inline dom_exception dom_text_get_whole_text(struct dom_text *text,
  54.                 dom_string **result)
  55. {
  56.         return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
  57.                         dom_text_get_whole_text(text, result);
  58. }
  59. #define dom_text_get_whole_text(t, r) dom_text_get_whole_text((dom_text *) (t), (r))
  60.  
  61. static inline dom_exception dom_text_replace_whole_text(struct dom_text *text,
  62.                 dom_string *content, struct dom_text **result)
  63. {
  64.         return ((dom_text_vtable *) ((dom_node *) text)->vtable)->
  65.                         dom_text_replace_whole_text(text, content, result);
  66. }
  67. #define dom_text_replace_whole_text(t, c, r) dom_text_replace_whole_text( \
  68.                 (dom_text *) (t), (c), (dom_text **) (r))
  69.  
  70. #endif
  71.