Pepper_31_C_interfaces
ppb_char_set_dev.h
Go to the documentation of this file.
1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  */
5 #ifndef PPAPI_C_DEV_PPB_CHAR_SET_DEV_H_
6 #define PPAPI_C_DEV_PPB_CHAR_SET_DEV_H_
7 
8 #include "ppapi/c/pp_instance.h"
9 #include "ppapi/c/pp_macros.h"
10 #include "ppapi/c/pp_stdint.h"
11 #include "ppapi/c/pp_var.h"
12 
13 #define PPB_CHAR_SET_DEV_INTERFACE_0_4 "PPB_CharSet(Dev);0.4"
14 #define PPB_CHAR_SET_DEV_INTERFACE PPB_CHAR_SET_DEV_INTERFACE_0_4
15 
16 // Specifies the error behavior for the character set conversion functions.
17 // This will affect two cases: where the input is not encoded correctly, and
18 // when the requested character can not be converted to the destination
19 // character set.
21  // Causes the entire conversion to fail if an error is encountered. The
22  // conversion function will return NULL.
24 
25  // Silently skips over errors. Unrepresentable characters and input encoding
26  // errors will be removed from the output.
28 
29  // Replaces the error or unrepresentable character with a substitution
30  // character. When converting to a Unicode character set (UTF-8 or UTF-16)
31  // it will use the unicode "substitution character" U+FFFD. When converting
32  // to another character set, the character will be charset-specific. For
33  // many languages this will be the representation of the '?' character.
35 };
37 
39  // Converts the UTF-16 string pointed to in |*utf16| to an 8-bit string in the
40  // specified code page. |utf16_len| is measured in UTF-16 units, not bytes.
41  // This value may not be NULL.
42  //
43  // The return value is a NULL-terminated 8-bit string corresponding to the
44  // new character set, or NULL on failure. THIS STRING MUST BE FREED USING
45  // PPB_Core::MemFree(). The length of the returned string, not including the
46  // terminating NULL, will be placed into *output_length. When there is no
47  // error, the result will always be non-NULL, even if the output is 0-length.
48  // In this case, it will only contain the terminator. You must still call
49  // MemFree any time the return value is non-NULL.
50  //
51  // This function will return NULL if there was an error converting the string
52  // and you requested PP_CHARSET_CONVERSIONERROR_FAIL, or the output character
53  // set was unknown.
54  char* (*UTF16ToCharSet)(PP_Instance instance,
55  const uint16_t* utf16, uint32_t utf16_len,
56  const char* output_char_set,
57  enum PP_CharSet_ConversionError on_error,
58  uint32_t* output_length);
59 
60  // Same as UTF16ToCharSet except converts in the other direction. The input
61  // is in the given charset, and the |input_len| is the number of bytes in
62  // the |input| string. |*output_length| is the number of 16-bit values in
63  // the output not counting the terminating NULL.
64  //
65  // Since UTF16 can represent every Unicode character, the only time the
66  // replacement character will be used is if the encoding in the input string
67  // is incorrect.
68  uint16_t* (*CharSetToUTF16)(PP_Instance instance,
69  const char* input, uint32_t input_len,
70  const char* input_char_set,
71  enum PP_CharSet_ConversionError on_error,
72  uint32_t* output_length);
73 
74  // Returns a string var representing the current multi-byte character set of
75  // the current system.
76  //
77  // WARNING: You really shouldn't be using this function unless you're dealing
78  // with legacy data. You should be using UTF-8 or UTF-16 and you don't have
79  // to worry about the character sets.
80  struct PP_Var (*GetDefaultCharSet)(PP_Instance instance);
81 };
82 
84 
85 #endif /* PPAPI_C_DEV_PPB_CHAR_SET_DEV_H_ */
PP_CharSet_ConversionError
struct PP_Var(* GetDefaultCharSet)(PP_Instance instance)
Definition: pp_var.h:155
int32_t PP_Instance
Definition: pp_instance.h:34
PP_COMPILE_ASSERT_ENUM_SIZE_IN_BYTES(PP_CharSet_ConversionError, 4)