| #ifndef _NGX_STRING_H_INCLUDED_ | 
 | #define _NGX_STRING_H_INCLUDED_ | 
 |  | 
 |  | 
 | #include <ngx_config.h> | 
 | #include <ngx_core.h> | 
 |  | 
 |  | 
 | typedef struct { | 
 |     size_t  len; | 
 |     char   *data; | 
 | } ngx_str_t; | 
 |  | 
 |  | 
 | #define ngx_string(str)  { sizeof(str) - 1, str } | 
 | #define ngx_null_string  { 0, NULL } | 
 |  | 
 |  | 
 | #if (WIN32) | 
 |  | 
 | #define ngx_strncasecmp           strnicmp | 
 | #define ngx_strcasecmp            stricmp | 
 | #define ngx_strncmp               strncmp | 
 | #define ngx_strcmp                strcmp | 
 |  | 
 | #define ngx_strlen                strlen | 
 |  | 
 | #define ngx_snprintf              _snprintf | 
 | #define ngx_vsnprintf             _vsnprintf | 
 |  | 
 | #else | 
 |  | 
 | #define ngx_strncasecmp           strncasecmp | 
 | #define ngx_strcasecmp            strcasecmp | 
 | #define ngx_strncmp               strncmp | 
 | #define ngx_strcmp                strcmp | 
 |  | 
 | #define ngx_strlen                strlen | 
 |  | 
 | #define ngx_snprintf              snprintf | 
 | #define ngx_vsnprintf             vsnprintf | 
 |  | 
 | #endif | 
 |  | 
 | /* | 
 |  * msvc and icc compile memset() to inline "rep stos" | 
 |  * while ZeroMemory and bzero are calls. | 
 |  */ | 
 | #define ngx_memzero(buf, n)       memset(buf, 0, n) | 
 |  | 
 | /* msvc and icc compile memcpy() to inline "rep movs" */ | 
 | #define ngx_memcpy(dst, src, n)   memcpy(dst, src, n) | 
 | #define ngx_cpymem(dst, src, n)   ((char *) memcpy(dst, src, n)) + n | 
 |  | 
 | /* msvc and icc compile memcmp() to inline loop */ | 
 | #define ngx_memcmp                memcmp | 
 |  | 
 | char *ngx_cpystrn(char *dst, char *src, size_t n); | 
 | int ngx_rstrncmp(char *s1, char *s2, size_t n); | 
 | int ngx_atoi(char *line, size_t n); | 
 |  | 
 | #define  ngx_qsort                qsort | 
 |  | 
 |  | 
 | #define  ngx_value_helper(n)      #n | 
 | #define  ngx_value(n)             ngx_value_helper(n) | 
 |  | 
 |  | 
 | #endif /* _NGX_STRING_H_INCLUDED_ */ |