gecko/xpcom/glue/nsCRTGlue.h
Carsten "Tomcat" Book 150d4d1475 Backed out 19 changesets (bug 1149397, bug 1065657, bug 1024774) for fixing Linux PGO xpcshell bustage on a CLOSED TREE
Backed out changeset 53058615e7a3 (bug 1024774)
Backed out changeset 68fe0894bb09 (bug 1065657)
Backed out changeset 1b9620d674df (bug 1024774)
Backed out changeset a31c514b59da (bug 1024774)
Backed out changeset 0fcf8757f6c2 (bug 1024774)
Backed out changeset 9a3c71b925d4 (bug 1024774)
Backed out changeset 783acc92af04 (bug 1024774)
Backed out changeset ad71c9a3446b (bug 1024774)
Backed out changeset 4f37e72e70f6 (bug 1024774)
Backed out changeset ec869578cc0a (bug 1024774)
Backed out changeset 3c1d306c8a3d (bug 1024774)
Backed out changeset b3a90f30892d (bug 1024774)
Backed out changeset cf7bbb3774c0 (bug 1024774)
Backed out changeset 2522eb4d3cf2 (bug 1024774)
Backed out changeset 89a502d88f9c (bug 1024774)
Backed out changeset 61046ad3161f (bug 1024774)
Backed out changeset 36706aaa2f06 (bug 1024774)
Backed out changeset ba8e68e05149 (bug 1149397)
Backed out changeset 532169437c2f (bug 1065657)
2015-04-23 08:37:24 +02:00

139 lines
4.3 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef nsCRTGlue_h__
#define nsCRTGlue_h__
#include "nscore.h"
/**
* Scan a string for the first character that is *not* in a set of
* delimiters. If the string is only delimiter characters, the end of the
* string is returned.
*
* @param aDelims The set of delimiters (null-terminated)
* @param aStr The string to search (null-terminated)
*/
const char* NS_strspnp(const char* aDelims, const char* aStr);
/**
* Tokenize a string. This function is similar to the strtok function in the
* C standard library, but it does not use static variables to maintain state
* and is therefore thread and reentrancy-safe.
*
* Any leading delimiters in str are skipped. Then the string is scanned
* until an additional delimiter or end-of-string is found. The final
* delimiter is set to '\0'.
*
* @param aDelims The set of delimiters.
* @param aStr The string to search. This is an in-out parameter; it is
* reset to the end of the found token + 1, or to the
* end-of-string if there are no more tokens.
* @return The token. If no token is found (the string is only
* delimiter characters), nullptr is returned.
*/
char* NS_strtok(const char* aDelims, char** aStr);
/**
* "strlen" for char16_t strings
*/
uint32_t NS_strlen(const char16_t* aString);
/**
* "strcmp" for char16_t strings
*/
int NS_strcmp(const char16_t* aStrA, const char16_t* aStrB);
/**
* "strdup" for char16_t strings, uses the NS_Alloc allocator.
*/
char16_t* NS_strdup(const char16_t* aString);
/**
* "strdup", but using the NS_Alloc allocator.
*/
char* NS_strdup(const char* aString);
/**
* strndup for char16_t strings... this function will ensure that the
* new string is null-terminated. Uses the NS_Alloc allocator.
*/
char16_t* NS_strndup(const char16_t* aString, uint32_t aLen);
// The following case-conversion methods only deal in the ascii repertoire
// A-Z and a-z
// semi-private data declarations... don't use these directly.
class nsLowerUpperUtils
{
public:
static const unsigned char kLower2Upper[256];
static const unsigned char kUpper2Lower[256];
};
inline char
NS_ToUpper(char aChar)
{
return (char)nsLowerUpperUtils::kLower2Upper[(unsigned char)aChar];
}
inline char
NS_ToLower(char aChar)
{
return (char)nsLowerUpperUtils::kUpper2Lower[(unsigned char)aChar];
}
bool NS_IsUpper(char aChar);
bool NS_IsLower(char aChar);
bool NS_IsAscii(char16_t aChar);
bool NS_IsAscii(const char16_t* aString);
bool NS_IsAsciiAlpha(char16_t aChar);
bool NS_IsAsciiDigit(char16_t aChar);
bool NS_IsAsciiWhitespace(char16_t aChar);
bool NS_IsAscii(const char* aString);
bool NS_IsAscii(const char* aString, uint32_t aLength);
#ifndef XPCOM_GLUE_AVOID_NSPR
void NS_MakeRandomString(char* aBuf, int32_t aBufLen);
#endif
#define FF '\f'
#define TAB '\t'
#define CRSTR "\015"
#define LFSTR "\012"
#define CRLF "\015\012" /* A CR LF equivalent string */
// We use the most restrictive filesystem as our default set of illegal filename
// characters. This is currently Windows.
#define OS_FILE_ILLEGAL_CHARACTERS "/:*?\"<>|"
// We also provide a list of all known file path separators for all filesystems.
// This can be used in replacement of FILE_PATH_SEPARATOR when you need to
// identify or replace all known path separators.
#define KNOWN_PATH_SEPARATORS "\\/"
#if defined(XP_MACOSX)
#define FILE_PATH_SEPARATOR "/"
#elif defined(XP_WIN)
#define FILE_PATH_SEPARATOR "\\"
#elif defined(XP_UNIX)
#define FILE_PATH_SEPARATOR "/"
#else
#error need_to_define_your_file_path_separator_and_maybe_illegal_characters
#endif
// Not all these control characters are illegal in all OSs, but we don't really
// want them appearing in filenames
#define CONTROL_CHARACTERS "\001\002\003\004\005\006\007" \
"\010\011\012\013\014\015\016\017" \
"\020\021\022\023\024\025\026\027" \
"\030\031\032\033\034\035\036\037"
#define FILE_ILLEGAL_CHARACTERS CONTROL_CHARACTERS OS_FILE_ILLEGAL_CHARACTERS
#endif // nsCRTGlue_h__