Napis Konwersja i formatowanie ciągów znaków
********************************************

funkcja do konwersji liczb i formatowania napis wyjście.

int PyOS_snprintf(char *str, size_t size, const char *format, ...)
    * Część stabilnego ABI.*

   Wyjście nie więcej niż *size* bajtów do *str* zgodnie z format
   napis *format* i ekstra argument. Zobacz stronę podręcznika Unix
   *snprintf(3)*.

int PyOS_vsnprintf(char *str, size_t size, const char *format, va_list va)
    * Część stabilnego ABI.*

   Wyprowadzaj nie więcej niż *size* bajtów do *str* zgodnie z ciągiem
   format napis ującym *format* i listą argument ów zmiennych *va*.
   Strona podręcznika systemu Unix *vsnprintf(3)*.

"PyOS_snprintf()" I "PyOS_vsnprintf()" owinąć Standardowe C biblioteka
funkcja "snprintf()" I "vsnprintf()". Ich cel jest zagwarantowanie
spójnego zachowanie w skrajnych przypadkach, czego nie zapewniają
Standardowe C funkcje języka C.

Wraptory zapewniają, że "str[size-1]" zawsze jest to  "'\0'" wartość
zwracać. Nigdy nie zapisują więcej niż *size* bajtów (wliczając
końcowy``'0'`` ) do str. Obie  funkcja wymagają  aby "str != NULL",
"size > 0", "format != NULL" i  "size < INT_MAX". Należy pamiętać, że
oznacza to brak odpowiednika C99 "n = snprintf(NULL, 0, ...)", który
określałby wymagany rozmiar bufor size.

The zwracana wartość  (*rv*) dla tych funkcja należy interpretować je
następująco:

* Gdy "0 <= rv < size", konwersja danych wyjściowych zakończyła się
  powodzeniem, a znaki *rv* znak zapisane w *str* (z wyłączeniem
  końcowego "'\0'" bajt o godz "str[rv]")

* Gdy "rv >= size", konwersja wyjściowa została skrócona, a bufor z
  "rv + 1" bajtów byłoby potrzebnych do osiągnięcia sukcesu.
  "str[size-1]" w "'\0'" tym przypadku.

* Gdy "rv < 0", konwersja wyjściowa nie powiodła się i "str[size-1]" w
  "'\0'" W tym przypadku również, ale reszta *str* jest
  niezdefiniowana. Dokładna przyczyna błędu zależy od platformy
  bazowej.

Poniższe funkcje umożliwiają niezależną od ustawień regionalnych napis
konwersję ciągów znaków na liczby.

unsigned long PyOS_strtoul(const char *str, char **ptr, int base)
    * Część stabilnego ABI.*

   Konwertuj początkową część ciągu napis na "str" do wartości
   unsigned long zgodnie z podanym "base" , który musi zawierać się
   pomiędzy "2" i "36" inkluzywny lub będący szczególną wartość, "0" .

   Spacje wiodące i wielkość liter są znak ignorowane. Jeśli "base"
   jest zero, szuka wiodącego "0b", "0o" lub "0x" aby wskazać bazę.
   Jeżeli ich brakuje, domyślnie "10".  Podstawa musi wynosić 0 lub
   mieścić się w przedziale od 2 do 36 (włącznie). Jeśli "ptr" jest
   różna od 0 "NULL", będzie zawierać wskaźnik do końca skanowania.

   Jeśli przekonwertowana wartość wykracza poza zakres odpowiedniego
   typu zwracać zwracanego, występuje błąd zakresu ("errno" jest
   ustawiony na "ERANGE") i "ULONG_MAX" zwracana jest wartość. Jeśli
   nie można wykonać konwersji, "0" zwracana jest wartość .

   patrz również the Unix man page *strtoul(3)*.

    Dodane w wersji 3.2.

long PyOS_strtol(const char *str, char **ptr, int base)
    * Część stabilnego ABI.*

   Konwertuj początkową część napis ciągu na "str" do long wartość
   zgodnie z podanym "base", która musi być pomiędzy "2" i "36"
   włącznie, lub być wartość specjalną "0".

   Taki sam jak "PyOS_strtoul()", Ale zwracać A long wartość zamiast i
   "LONG_MAX" na przepełnieniach.

   patrz również the Unix man page *strtol(3)*.

    Dodane w wersji 3.2.

double PyOS_string_to_double(const char *s, char **endptr, PyObject *overflow_exception)
    * Część stabilnego ABI.*

   Konwertuj ciąg napis "s" a double, rzucić a Python Wyjątek w
   przypadku błędu. Zestaw akceptowanych ciągów napis znaków odpowiada
   zestawowi ciągów znaków akceptowanych "float`przez konstruktor
   Python ``s`()", z tym wyjątkiem, że nie mogą one zawierać spacji na
   początku ani na końcu. Konwersja jest niezależna od bieżącej
   lokalizacji.

   Jeśli "endptr" jest "NULL", przekonwertować cały napis. Rzucić
   "ValueError" I zwracać "-1.0" jeśli napis nie jest ważny prawidłową
   reprezentacją liczby zmiennoprzecinkowej.

   Jeśli endptr jest różny od "NULL" , konwertuj tak dużą część napis
   jak to możliwe "*endptr", i ustaw wskaźnik na pierwszy
   nieprzekonwertowany znak. Jeżeli żaden początkowy segment  napis
   nie jest ważny prawidłową reprezentacją liczby zmiennoprzecinkowej,
   ustaw go tak "*endptr", aby wskazywał na początek napis, rzucić
   zgłoś wyjątek ValueError i zwracać "-1.0" .

   Jeśli "s" reprezentować wartość który jest zbyt duży, aby go
   przechowywać w obiekcie typu float (na przykład,  jest takim
   ciągiem napis na wielu platformach) to jeśli "overflow_exception"
   jest "NULL" zwracać "INFINITY`(z odpowiednim znakiem) i nie
   ustawiaj żadnego wyjątku. W, ``overflow_exception`" przeciwnym
   razie musi wskazywać na obiekt wyjątku Pythona; zgłoś ten rzucić
   wyjątek i zwracać "-1.0". W obu przypadkach ustaw tak "*endptr",
   aby wskazywał na pierwszy znak po przekonwertowanej wartośc.

   Jeżeli podczas konwersji wystąpi jakikolwiek inny błąd (na przykład
   błąd braku pamięci), ustaw odpowiedni wyjątek Pythona i zwracać
   "-1.0".

    Dodane w wersji 3.1.

char *PyOS_double_to_string(double val, char format_code, int precision, int flags, int *ptype)
    * Część stabilnego ABI.*

   Konwertuje double *val* na  napis ciąg znaków przy użyciu
   dostarczonych *format_code*, *precision* i *flags*.

   *format_code* must be one of "'e'", "'E'", "'f'", "'F'", "'g'",
   "'G'" or "'r'".  For "'r'", the supplied *precision* must be 0 and
   is ignored.  The "'r'" format code specifies the standard "repr()"
   format.

   *flags* can be zero or more of the following values or-ed together:

   Py_DTSF_SIGN

      Always precede the returned string with a sign character, even
      if *val* is non-negative.

   Py_DTSF_ADD_DOT_0

      Ensure that the returned string will not look like an integer.

   Py_DTSF_ALT

      Apply "alternate" formatting rules. See the documentation for
      the "PyOS_snprintf()" "'#'" specifier for details.

   Py_DTSF_NO_NEG_0

      Negative zero is converted to positive zero.

       Dodane w wersji 3.11.

   If *ptype* is non-"NULL", then the value it points to will be set
   to one of the following constants depending on the type of *val*:

   +----------------------------------------------------+----------------------------------------------------+
   | **ptype*                                           | type of *val*                                      |
   |====================================================|====================================================|
   | Py_DTST_FINITE                                     | finite number                                      |
   +----------------------------------------------------+----------------------------------------------------+
   | Py_DTST_INFINITE                                   | infinite number                                    |
   +----------------------------------------------------+----------------------------------------------------+
   | Py_DTST_NAN                                        | not a number                                       |
   +----------------------------------------------------+----------------------------------------------------+

   The return value is a pointer to *buffer* with the converted string
   or "NULL" if the conversion failed. The caller is responsible for
   freeing the returned string by calling "PyMem_Free()".

    Dodane w wersji 3.1.

int PyOS_mystricmp(const char *str1, const char *str2)
int PyOS_mystrnicmp(const char *str1, const char *str2, Py_ssize_t size)
    * Część stabilnego ABI.*

   Porównywanie ciągów znaków bez uwzględniania wielkości napis liter.
   Funkcja te działają niemal identycznie "strcmp()" I "strncmp()"
   (odpowiednio), z tą różnicą, że ignorują wielkość liter znak ASCII.

   Return "0" if the strings are equal, a negative value if *str1*
   sorts lexicographically before *str2*, or a positive value if it
   sorts after.

   W argumentach *str1* lub *str2* bajt NUL oznacza koniec napis. For
   "PyOS_mystrnicmp()", Argument *size* podaje maksymalny rozmiar
   napis ciągu, tak jakby pod indeks określonym przez *size*
   znajdowała się wartość NUL.

   These functions do not use the locale.

int PyOS_stricmp(const char *str1, const char *str2)
int PyOS_strnicmp(const char *str1, const char *str2, Py_ssize_t size)

   Porównywanie ciągów znaków bez uwzględniania wielkości napis.

   W systemie Windows są to odpowiednio alias "stricmp()" i
   "strnicmp()", .

   Na innych platformach są to odpowiednio alias "PyOS_mystricmp()" i
   "PyOS_mystrnicmp()" .


Klasyfikacja i znak konwersja postaci
*************************************

Poniższe makro zapewniają niezależną od ustawień regionalnych (w
przeciwieństwie do biblioteka standardowa C "ctype.h") klasyfikację i
konwersję znak. Argument musi być znakiem lub znakiem char.

Py_ISALNUM(c)

   Return true if the character *c* is an alphanumeric character.

Py_ISALPHA(c)

   Return true if the character *c* is an alphabetic character ("a-z"
   and "A-Z").

Py_ISDIGIT(c)

   Return true if the character *c* is a decimal digit ("0-9").

Py_ISLOWER(c)

   Zwraca prawda wartość true, jeśli znak *c* jest małą literą ASCII
   ("a-z").

Py_ISUPPER(c)

   Zwraca prawda jeśli znak *c* to wielka litera ASCII ("A-Z").

Py_ISSPACE(c)

   Return true if the character *c* is a whitespace character (space,
   tab, carriage return, newline, vertical tab, or form feed).

Py_ISXDIGIT(c)

   Return true if the character *c* is a hexadecimal digit ("0-9",
   "a-f", and "A-F").

Py_TOLOWER(c)

   Zwraca odpowiednik małej litery znak *c*.

Py_TOUPPER(c)

   Zwraca odpowiednik wielkiej litery znak *c*.
