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_characterdata_h_
  9. #define dom_core_characterdata_h_
  10.  
  11. #include <dom/core/exceptions.h>
  12. #include <dom/core/node.h>
  13.  
  14. typedef struct dom_characterdata dom_characterdata;
  15.  
  16. /* The vtable for characterdata */
  17. typedef struct dom_characterdata_vtable {
  18.         struct dom_node_vtable base;
  19.  
  20.         dom_exception (*dom_characterdata_get_data)(
  21.                         struct dom_characterdata *cdata,
  22.                         dom_string **data);
  23.         dom_exception (*dom_characterdata_set_data)(
  24.                         struct dom_characterdata *cdata,
  25.                         dom_string *data);
  26.         dom_exception (*dom_characterdata_get_length)(
  27.                         struct dom_characterdata *cdata,
  28.                         uint32_t *length);
  29.         dom_exception (*dom_characterdata_substring_data)(
  30.                         struct dom_characterdata *cdata, uint32_t offset,
  31.                         uint32_t count, dom_string **data);
  32.         dom_exception (*dom_characterdata_append_data)(
  33.                         struct dom_characterdata *cdata,
  34.                         dom_string *data);
  35.         dom_exception (*dom_characterdata_insert_data)(
  36.                         struct dom_characterdata *cdata,
  37.                         uint32_t offset, dom_string *data);
  38.         dom_exception (*dom_characterdata_delete_data)(
  39.                         struct dom_characterdata *cdata,
  40.                         uint32_t offset, uint32_t count);
  41.         dom_exception (*dom_characterdata_replace_data)(
  42.                         struct dom_characterdata *cdata, uint32_t offset,
  43.                         uint32_t count, dom_string *data);
  44. } dom_characterdata_vtable;
  45.  
  46.  
  47. static inline dom_exception dom_characterdata_get_data(
  48.                 struct dom_characterdata *cdata, dom_string **data)
  49. {
  50.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  51.                         dom_characterdata_get_data(cdata, data);
  52. }
  53. #define dom_characterdata_get_data(c, d) dom_characterdata_get_data( \
  54.                 (struct dom_characterdata *) (c), (d))
  55.  
  56. static inline dom_exception dom_characterdata_set_data(
  57.                 struct dom_characterdata *cdata, dom_string *data)
  58. {
  59.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  60.                         dom_characterdata_set_data(cdata, data);
  61. }
  62. #define dom_characterdata_set_data(c, d) dom_characterdata_set_data( \
  63.                 (struct dom_characterdata *) (c), (d))
  64.  
  65. static inline dom_exception dom_characterdata_get_length(
  66.                 struct dom_characterdata *cdata, uint32_t *length)
  67. {
  68.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  69.                         dom_characterdata_get_length(cdata, length);
  70. }
  71. #define dom_characterdata_get_length(c, l) dom_characterdata_get_length( \
  72.                 (struct dom_characterdata *) (c), (uint32_t *) (l))
  73.  
  74. static inline dom_exception dom_characterdata_substring_data(
  75.                 struct dom_characterdata *cdata, uint32_t offset,
  76.                 uint32_t count, dom_string **data)
  77. {
  78.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  79.                         dom_characterdata_substring_data(cdata, offset, count,
  80.                         data);
  81. }
  82. #define dom_characterdata_substring_data(c, o, ct, d) \
  83.                 dom_characterdata_substring_data( \
  84.                 (struct dom_characterdata *) (c), (uint32_t) (o), \
  85.                 (uint32_t) (ct), (d))
  86.  
  87. static inline dom_exception dom_characterdata_append_data(
  88.                 struct dom_characterdata *cdata, dom_string *data)
  89. {
  90.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  91.                         dom_characterdata_append_data(cdata, data);
  92. }
  93. #define dom_characterdata_append_data(c, d) dom_characterdata_append_data( \
  94.                 (struct dom_characterdata *) (c), (d))
  95.  
  96. static inline dom_exception dom_characterdata_insert_data(
  97.                 struct dom_characterdata *cdata, uint32_t offset,
  98.                 dom_string *data)
  99. {
  100.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  101.                         dom_characterdata_insert_data(cdata, offset, data);
  102. }
  103. #define dom_characterdata_insert_data(c, o, d) dom_characterdata_insert_data( \
  104.                 (struct dom_characterdata *) (c), (uint32_t) (o), (d))
  105.  
  106. static inline dom_exception dom_characterdata_delete_data(
  107.                 struct dom_characterdata *cdata, uint32_t offset,
  108.                 uint32_t count)
  109. {
  110.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  111.                         dom_characterdata_delete_data(cdata, offset, count);
  112. }
  113. #define dom_characterdata_delete_data(c, o, ct) dom_characterdata_delete_data(\
  114.                 (struct dom_characterdata *) (c), (uint32_t) (o), \
  115.                 (uint32_t) (ct))
  116.  
  117. static inline dom_exception dom_characterdata_replace_data(
  118.                 struct dom_characterdata *cdata, uint32_t offset,
  119.                 uint32_t count, dom_string *data)
  120. {
  121.         return ((dom_characterdata_vtable *) ((dom_node *) cdata)->vtable)->
  122.                         dom_characterdata_replace_data(cdata, offset, count,
  123.                         data);
  124. }
  125. #define dom_characterdata_replace_data(c, o, ct, d) \
  126.                 dom_characterdata_replace_data(\
  127.                 (struct dom_characterdata *) (c), (uint32_t) (o),\
  128.                 (uint32_t) (ct), (d))
  129.  
  130. #endif
  131.