char_ref.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // Copyright 2011 Google Inc. All Rights Reserved.
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. //
  15. // Author: [email protected] (Jonathan Tang)
  16. //
  17. // Internal header for character reference handling; this should not be exposed
  18. // transitively by any public API header. This is why the functions aren't
  19. // namespaced.
  20. #ifndef GUMBO_CHAR_REF_H_
  21. #define GUMBO_CHAR_REF_H_
  22. #include <stdbool.h>
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26. struct GumboInternalParser;
  27. struct GumboInternalUtf8Iterator;
  28. // Value that indicates no character was produced.
  29. extern const int kGumboNoChar;
  30. // Certain named character references generate two codepoints, not one, and so
  31. // the consume_char_ref subroutine needs to return this instead of an int. The
  32. // first field will be kGumboNoChar if no character reference was found; the
  33. // second field will be kGumboNoChar if that is the case or if the character
  34. // reference returns only a single codepoint.
  35. typedef struct {
  36. int first;
  37. int second;
  38. } OneOrTwoCodepoints;
  39. // Implements the "consume a character reference" section of the spec.
  40. // This reads in characters from the input as necessary, and fills in a
  41. // OneOrTwoCodepoints struct containing the characters read. It may add parse
  42. // errors to the GumboParser's errors vector, if the spec calls for it. Pass a
  43. // space for the "additional allowed char" when the spec says "with no
  44. // additional allowed char". Returns false on parse error, true otherwise.
  45. bool consume_char_ref(struct GumboInternalParser* parser,
  46. struct GumboInternalUtf8Iterator* input, int additional_allowed_char,
  47. bool is_in_attribute, OneOrTwoCodepoints* output);
  48. #ifdef __cplusplus
  49. }
  50. #endif
  51. #endif // GUMBO_CHAR_REF_H_