Files
ANSLibs/chilkat/include/CkStringBuilder.h

706 lines
29 KiB
C++

// CkStringBuilder.h: interface for the CkStringBuilder class.
//
//////////////////////////////////////////////////////////////////////
// This header is generated for Chilkat 11.3.0
#define _CkVersion 11.3.0
#ifndef _CkStringBuilder_H
#define _CkStringBuilder_H
#include "chilkatDefs.h"
#include "CkString.h"
#include "CkMultiByteBase.h"
class CkBinData;
class CkByteData;
class CkJsonObject;
class CkStringTable;
#if !defined(__sun__) && !defined(__sun)
#pragma pack (push, 8)
#endif
#undef Copy
// CLASS: CkStringBuilder
class CK_VISIBLE_PUBLIC CkStringBuilder : public CkMultiByteBase
{
private:
// Don't allow assignment or copying these objects.
CkStringBuilder(const CkStringBuilder &);
CkStringBuilder &operator=(const CkStringBuilder &);
public:
CkStringBuilder(void);
virtual ~CkStringBuilder(void);
static CkStringBuilder *createNew(void);
static CkStringBuilder *createNew2(int progLang);
void CK_VISIBLE_PRIVATE inject(void *impl);
// May be called when finished with the object to free/dispose of any
// internal resources held by the object.
void dispose(void);
// BEGIN PUBLIC INTERFACE
// ----------------------
// Properties
// ----------------------
// Returns true if the content contains one or more emoji characters.
bool get_HasEmojis(void);
// Returns the content of the string converted to an integer.
int get_IntValue(void);
// Returns the content of the string converted to an integer.
void put_IntValue(int newVal);
// Returns true if the content contains only those characters allowed in the
// base64 encoding. A base64 string is composed of characters 'A'..'Z', 'a'..'z',
// '0'..'9', '+', '/' and it is often padded at the end with up to two '=', to make
// the length a multiple of 4. Whitespace is ignored.
bool get_IsBase64(void);
// The number of characters of the string contained within this instance.
int get_Length(void);
// ----------------------
// Methods
// ----------------------
// Appends a copy of the specified string to this instance.
bool Append(const char *value);
// Appends the contents of binData. The charset specifies the character encoding of the
// bytes contained in binData. The charset can be any of the supported encodings listed
// at Chilkat Supported Character Encodings. To append the entire contents of binData,
// set offset and numBytes equal to zero. To append a range of binData, set the offset and
// numBytes to specify the range.
//
// References:
// 1: https://www.chilkatsoft.com/charsets_supported_by_chilkat.asp
bool AppendBd(CkBinData &binData, const char *charset, int offset, int numBytes);
// Appends binary data using the encoding specified by encoding, such as base64 , hex ,
// etc.
bool AppendEncoded(CkByteData &binaryData, const char *encoding);
// Appends the string representation of a specified 32-bit signed integer to this
// instance.
bool AppendInt(int value);
// Appends the string representation of a specified 64-bit signed integer to this
// instance.
bool AppendInt64(__int64 value);
// Appends the value followed by a CRLF or LF to the end of the curent StringBuilder
// object. If crlf is true, then a CRLF line ending is used. Otherwise a LF line
// ending is used.
bool AppendLine(const char *value, bool crlf);
// Append numBytes random bytes encoded according to encoding. encoding can be hex , hex_lower
// , base64 , base64url , or any other encoding supported by Chilkat.
bool AppendRandom(int numBytes, const char *encoding);
// Appends the contents of another StringBuilder to this instance.
bool AppendSb(CkStringBuilder &sb);
// Generates and appends a random GUID/UUID such as
// 63c35f38-2b5f-4600-b3da-3ddee86d62b3. If lowerCase is true, then the hex values use
// lowercase ( a - f ). If lowerCase is false then uppercase is used ( A - F ).
//
// Note: This generates a version 4 UUID.
//
bool AppendUuid(bool lowerCase);
// Generates and appends a random version 7 UUID. If lowerCase is true, then the hex
// values use lowercase ( a - f ). If lowerCase is false then uppercase is used ( A -
// F ).
bool AppendUuid7(bool lowerCase);
// Removes all characters from the current StringBuilder instance.
void Clear(void);
// Returns true if the str is contained within this object. For case sensitive
// matching, set caseSensitive equal to true. For case-insensitive, set caseSensitive equal to
// false.
bool Contains(const char *str, bool caseSensitive);
// Returns true if the word is contained within this object, but only if it is a
// whole word. This method is limited to finding whole words in strings that only
// contains characters in the Latin1 charset (i.e. iso-8859-1 or Windows-1252). A
// whole word can only contain alphanumeric chars where the alpha chars are
// restricted to those of the Latin1 alpha chars. (The underscore character is also
// considered part of a word.)
//
// For case sensitive matching, set caseSensitive equal to true. For case-insensitive, set
// caseSensitive equal to false.
//
bool ContainsWord(const char *word, bool caseSensitive);
// Returns true if the contents of this object equals the str. Returns false
// if unequal. For case insensitive equality, set caseSensitive equal to false.
bool ContentsEqual(const char *str, bool caseSensitive);
// Returns true if the contents of this object equals the sb. Returns false
// if unequal. For case insensitive equality, set caseSensitive equal to false.
bool ContentsEqualSb(CkStringBuilder &sb, bool caseSensitive);
// Decodes and replaces the contents with the decoded string. The encoding can be set
// to any of the following strings: base64 , hex , quoted-printable (or qp ), url ,
// base32 , Q , B , url_rc1738 , url_rfc2396 , url_rfc3986 , url_oauth , uu ,
// modBase64 , or html (for HTML entity encoding). The full up-to-date list of
// supported binary encodings is available at the link entitled Supported Binary
// Encodings below.
//
// Note: This method can only be called if the encoded content decodes to a string.
// The charset indicates the charset to be used in intepreting the decoded bytes. For
// example, the charset can be utf-8 , utf-16 , iso-8859-1 , shift_JIS , etc.
//
bool Decode(const char *encoding, const char *charset);
// Decodes a binary encoded string, where the binary encoding (such as url , hex ,
// base64 , etc.) is specified by encoding, and the underlying charset encoding (such
// as utf-8 , windows-1252 , etc.) is specified by charset. The decoded string is
// appended to this object.
bool DecodeAndAppend(const char *value, const char *encoding, const char *charset);
// Encodes to base64, hex, quoted-printable, URL encoding, etc. The encoding can be set
// to any of the following strings: base64 , hex , quoted-printable (or qp ), url ,
// base32 , Q , B , url_rc1738 , url_rfc2396 , url_rfc3986 , url_oauth , uu ,
// modBase64 , or html (for HTML entity encoding). The full up-to-date list of
// supported binary encodings is available at the link entitled Supported Binary
// Encodings below.
bool Encode(const char *encoding, const char *charset);
// Returns true if the string ends with substr. Otherwise returns false. The
// comparison is case sensitive if caseSensitive is true, and case insensitive if caseSensitive is
// false.
bool EndsWith(const char *substr, bool caseSensitive);
// Decodes HTML entities. See HTML entities for more information about HTML
// entities.
//
// References:
// 1: https://duckduckgo.com/?q=html+entities&bext=wfp&ia=web
bool EntityDecode(void);
// Begin searching after the 1st occurrence of searchAfter is found, and then return the
// substring found between the next occurrence of beginMark and the next occurrence of
// endMark.
bool GetAfterBetween(const char *searchAfter, const char *beginMark, const char *endMark, CkString &outStr);
// Begin searching after the 1st occurrence of searchAfter is found, and then return the
// substring found between the next occurrence of beginMark and the next occurrence of
// endMark.
const char *getAfterBetween(const char *searchAfter, const char *beginMark, const char *endMark);
// Begin searching after the 1st occurrence of searchAfter is found, and then return the
// substring found between the next occurrence of beginMark and the next occurrence of
// endMark.
const char *afterBetween(const char *searchAfter, const char *beginMark, const char *endMark);
// Returns the substring found after the final occurrence of marker. If removeFlag is
// true, the marker and the content that follows is removed from this content.
//
// If the marker is not present, then the entire string is returned. In this case, if
// removeFlag is true, this object is also cleared.
//
bool GetAfterFinal(const char *marker, bool removeFlag, CkString &outStr);
// Returns the substring found after the final occurrence of marker. If removeFlag is
// true, the marker and the content that follows is removed from this content.
//
// If the marker is not present, then the entire string is returned. In this case, if
// removeFlag is true, this object is also cleared.
//
const char *getAfterFinal(const char *marker, bool removeFlag);
// Returns the substring found after the final occurrence of marker. If removeFlag is
// true, the marker and the content that follows is removed from this content.
//
// If the marker is not present, then the entire string is returned. In this case, if
// removeFlag is true, this object is also cleared.
//
const char *afterFinal(const char *marker, bool removeFlag);
// Returns the contents as a string.
bool GetAsString(CkString &outStr);
// Returns the contents as a string.
const char *getAsString(void);
// Returns the contents as a string.
const char *asString(void);
// Returns the substring found before the 1st occurrence of marker. If removeFlag is
// true, the content up to and including the marker is removed from this object's
// contents.
//
// If the marker is not present, then the entire string is returned. In this case, if
// removeFlag is true, this object is also cleared.
//
bool GetBefore(const char *marker, bool removeFlag, CkString &outStr);
// Returns the substring found before the 1st occurrence of marker. If removeFlag is
// true, the content up to and including the marker is removed from this object's
// contents.
//
// If the marker is not present, then the entire string is returned. In this case, if
// removeFlag is true, this object is also cleared.
//
const char *getBefore(const char *marker, bool removeFlag);
// Returns the substring found before the 1st occurrence of marker. If removeFlag is
// true, the content up to and including the marker is removed from this object's
// contents.
//
// If the marker is not present, then the entire string is returned. In this case, if
// removeFlag is true, this object is also cleared.
//
const char *before(const char *marker, bool removeFlag);
// Returns the substring found between the 1st occurrence of beginMark and the next
// occurrence of endMark.
bool GetBetween(const char *beginMark, const char *endMark, CkString &outStr);
// Returns the substring found between the 1st occurrence of beginMark and the next
// occurrence of endMark.
const char *getBetween(const char *beginMark, const char *endMark);
// Returns the substring found between the 1st occurrence of beginMark and the next
// occurrence of endMark.
const char *between(const char *beginMark, const char *endMark);
// Decodes and returns the decoded bytes. The encoding can be set to any of the
// following strings: base64 , hex , quoted-printable (or qp ), url , base32 , Q ,
// B , url_rc1738 , url_rfc2396 , url_rfc3986 , url_oauth , uu , modBase64 , or
// html (for HTML entity encoding). The full up-to-date list of supported binary
// encodings is available at the link entitled Supported Binary Encodings below.
bool GetDecoded(const char *encoding, CkByteData &outBytes);
// Returns the string contents encoded in an encoding such as base64, hex,
// quoted-printable, or URL-encoding. The encoding can be set to any of the following
// strings: base64 , hex , quoted-printable (or qp ), url , base32 , Q , B ,
// url_rc1738 , url_rfc2396 , url_rfc3986 , url_oauth , uu , modBase64 , or html
// (for HTML entity encoding). The full up-to-date list of supported binary
// encodings is available at the link entitled Supported Binary Encodings below.
//
// Note: The Encode method modifies the content of this object. The GetEncoded
// method leaves this object's content unmodified.
//
bool GetEncoded(const char *encoding, const char *charset, CkString &outStr);
// Returns the string contents encoded in an encoding such as base64, hex,
// quoted-printable, or URL-encoding. The encoding can be set to any of the following
// strings: base64 , hex , quoted-printable (or qp ), url , base32 , Q , B ,
// url_rc1738 , url_rfc2396 , url_rfc3986 , url_oauth , uu , modBase64 , or html
// (for HTML entity encoding). The full up-to-date list of supported binary
// encodings is available at the link entitled Supported Binary Encodings below.
//
// Note: The Encode method modifies the content of this object. The GetEncoded
// method leaves this object's content unmodified.
//
const char *getEncoded(const char *encoding, const char *charset);
// Returns the string contents encoded in an encoding such as base64, hex,
// quoted-printable, or URL-encoding. The encoding can be set to any of the following
// strings: base64 , hex , quoted-printable (or qp ), url , base32 , Q , B ,
// url_rc1738 , url_rfc2396 , url_rfc3986 , url_oauth , uu , modBase64 , or html
// (for HTML entity encoding). The full up-to-date list of supported binary
// encodings is available at the link entitled Supported Binary Encodings below.
//
// Note: The Encode method modifies the content of this object. The GetEncoded
// method leaves this object's content unmodified.
//
const char *encoded(const char *encoding, const char *charset);
// Returns the hash of the contents of this object. The algorithm is the hash algorithm,
// and can be sha1 , sha256 , sha384 , sha512 , sha3-224 , sha3-256 , sha3-384 ,
// sha3-512 , md2 , md5 , ripemd128 , ripemd160 , ripemd256 , or ripemd320 . The
// encoding can be base64 , modBase64 , base64Url , base32 , base58 , qp (for
// quoted-printable), url (for url-encoding), hex , hexLower , or any of the
// encodings found at Chilkat Binary Encodings List.
//
// The charset is the character encoding byte representation to hash. It is typically
// utf-8 . It can be any of the chacter encodings listed at Chilkat Character
// Encodings List.
//
//
// References:
// 1: https://www.chilkatsoft.com/binary_encodings.asp
// 2: https://www.chilkatsoft.com/charsets_supported_by_chilkat.asp
bool GetHash(const char *algorithm, const char *encoding, const char *charset, CkString &outStr);
// Returns the hash of the contents of this object. The algorithm is the hash algorithm,
// and can be sha1 , sha256 , sha384 , sha512 , sha3-224 , sha3-256 , sha3-384 ,
// sha3-512 , md2 , md5 , ripemd128 , ripemd160 , ripemd256 , or ripemd320 . The
// encoding can be base64 , modBase64 , base64Url , base32 , base58 , qp (for
// quoted-printable), url (for url-encoding), hex , hexLower , or any of the
// encodings found at Chilkat Binary Encodings List.
//
// The charset is the character encoding byte representation to hash. It is typically
// utf-8 . It can be any of the chacter encodings listed at Chilkat Character
// Encodings List.
//
//
// References:
// 1: https://www.chilkatsoft.com/binary_encodings.asp
// 2: https://www.chilkatsoft.com/charsets_supported_by_chilkat.asp
const char *getHash(const char *algorithm, const char *encoding, const char *charset);
// Returns the hash of the contents of this object. The algorithm is the hash algorithm,
// and can be sha1 , sha256 , sha384 , sha512 , sha3-224 , sha3-256 , sha3-384 ,
// sha3-512 , md2 , md5 , ripemd128 , ripemd160 , ripemd256 , or ripemd320 . The
// encoding can be base64 , modBase64 , base64Url , base32 , base58 , qp (for
// quoted-printable), url (for url-encoding), hex , hexLower , or any of the
// encodings found at Chilkat Binary Encodings List.
//
// The charset is the character encoding byte representation to hash. It is typically
// utf-8 . It can be any of the chacter encodings listed at Chilkat Character
// Encodings List.
//
//
// References:
// 1: https://www.chilkatsoft.com/binary_encodings.asp
// 2: https://www.chilkatsoft.com/charsets_supported_by_chilkat.asp
const char *hash(const char *algorithm, const char *encoding, const char *charset);
// Returns the Nth substring in string that is a list delimted by delimiterChar. The first
// substring is at index 0. If exceptDoubleQuoted is true, then the delimiter char found
// between double quotes is not treated as a delimiter. If exceptEscaped is true, then an
// escaped (with a backslash) delimiter char is not treated as a delimiter.
bool GetNth(int index, const char *delimiterChar, bool exceptDoubleQuoted, bool exceptEscaped, CkString &outStr);
// Returns the Nth substring in string that is a list delimted by delimiterChar. The first
// substring is at index 0. If exceptDoubleQuoted is true, then the delimiter char found
// between double quotes is not treated as a delimiter. If exceptEscaped is true, then an
// escaped (with a backslash) delimiter char is not treated as a delimiter.
const char *getNth(int index, const char *delimiterChar, bool exceptDoubleQuoted, bool exceptEscaped);
// Returns the Nth substring in string that is a list delimted by delimiterChar. The first
// substring is at index 0. If exceptDoubleQuoted is true, then the delimiter char found
// between double quotes is not treated as a delimiter. If exceptEscaped is true, then an
// escaped (with a backslash) delimiter char is not treated as a delimiter.
const char *nth(int index, const char *delimiterChar, bool exceptDoubleQuoted, bool exceptEscaped);
// Returns a string containing the specified range of characters from this
// instance. If removeFlag is true, then the range of chars is removed from this
// instance.
//
// Note: It was discovered that the range of chars was always removed regardless of
// the value of removeFlag. This is fixed in v9.5.0.89.
//
bool GetRange(int startIndex, int numChars, bool removeFlag, CkString &outStr);
// Returns a string containing the specified range of characters from this
// instance. If removeFlag is true, then the range of chars is removed from this
// instance.
//
// Note: It was discovered that the range of chars was always removed regardless of
// the value of removeFlag. This is fixed in v9.5.0.89.
//
const char *getRange(int startIndex, int numChars, bool removeFlag);
// Returns a string containing the specified range of characters from this
// instance. If removeFlag is true, then the range of chars is removed from this
// instance.
//
// Note: It was discovered that the range of chars was always removed regardless of
// the value of removeFlag. This is fixed in v9.5.0.89.
//
const char *range(int startIndex, int numChars, bool removeFlag);
// Appends to startIndex the specified range of characters from this instance. If removeFlag is
// true, then the range of chars is removed from this instance.
bool GetRangeSb(int startIndex, int numChars, bool removeFlag, CkStringBuilder &sb);
// Returns the last N lines of the text. If fewer than numLines lines exists, then all
// of the text is returned. If bCrlf is true, then the line endings of the
// returned string are converted to CRLF, otherwise the line endings are converted
// to LF-only.
bool LastNLines(int numLines, bool bCrlf, CkString &outStr);
// Returns the last N lines of the text. If fewer than numLines lines exists, then all
// of the text is returned. If bCrlf is true, then the line endings of the
// returned string are converted to CRLF, otherwise the line endings are converted
// to LF-only.
const char *lastNLines(int numLines, bool bCrlf);
// Loads the contents of a file.
bool LoadFile(const char *path, const char *charset);
// This method converts the Markdown content of this object to HTML, storing the
// result in sbHtml. It supports both streaming and full document conversion. options
// specifies conversion options, including a key streaming option. In streaming
// mode, generated HTML is appended to sbHtml. In non-streaming mode, sbHtml is fully
// replaced by the generated HTML. For further details, see the examples linked
// below.
//
// In streaming mode, only complete markdown lines are converted to HTML and
// removed from this object, leaving just the final partial line, if present. If
// this object contains only a partial markdown line, no HTML is emitted.
//
bool MarkdownToHtml(CkJsonObject &options, CkStringBuilder &sbHtml);
// This function masks the content inside single and/or double-quoted strings by
// replacing it with a specified mask character (maskChar). The content of each masked
// quoted string is saved to maskedStrings. The contents can be restored by calling
// RestoreMaskedStrings.
//
// quoteType determines which types of quoted strings are masked:
// 1. Both single and double quoted.
// 2. Only single quoted strings.
// 3. Only double quoted strings.
//
bool MaskQuotedStrings(const char *maskChar, int quoteType, CkStringTable &maskedStrings);
// Obfuscates the string. (The Unobfuscate method can be called to reverse the
// obfuscation to restore the original string.)
//
// The Chilkat string obfuscation algorithm works by taking the utf-8 bytes of the
// string, base64 encoding it, and then scrambling the letters of the base64
// encoded string. It is deterministic in that the same string will always
// obfuscate to the same result. It is NOT a secure way of encrypting a string. It
// is only meant to be a simple means of transforming a string into something
// unintelligible.
//
void Obfuscate(void);
// Prepends a copy of the specified string to this instance.
bool Prepend(const char *value);
// In-place decodes the string from punycode.
bool PunyDecode(void);
// In-place encodes the string to punycode.
bool PunyEncode(void);
// Searches the content of this object for substrings that match a regular
// expression pattern and returns the matches in json. Returns the number of
// matches or -1 for failure. timeoutMs is the maximum number of milliseconds of
// processing allowed before giving up. Pass 0 for an infinite amount of time.
// Failure information is also returned in json.
int RegexMatch(const char *pattern, CkJsonObject &json, int timeoutMs);
// Replaces the substrings of capture groups found in a previous call to
// RegexMatch.
bool RegexReplace(CkJsonObject &json);
// Removes the accents (diacritics) from European accented characters. This applies
// only to the accented characters found in the Windows-1252 (Latin alphabet) and
// Windows-1250 (Central European) charsets. Accent marks for characters in other
// languages will not be removed.
bool RemoveAccents(void);
// Removes the substring found after the final occurrence of the marker. Also removes
// the marker. Returns true if the marker was found and content was removed.
// Otherwise returns false.
bool RemoveAfterFinal(const char *marker);
// Removes the substring found before the 1st occurrence of the marker. Also removes
// the marker. Returns true if the marker was found and content was removed.
// Otherwise returns false.
bool RemoveBefore(const char *marker);
// Removes the specified range of characters from this instance.
bool RemoveCharsAt(int startIndex, int numChars);
// Removes all emoji characters from the string.
void RemoveEmojis(void);
// Replaces all occurrences of a specified string in this instance with another
// specified string. Returns the number of replacements.
int Replace(const char *value, const char *replacement);
// Replaces the content found after the final occurrence of marker with replacement.
bool ReplaceAfterFinal(const char *marker, const char *replacement);
// Replaces the first occurrence of ALL the content found between beginMark and endMark
// with replacement. The beginMark and endMark are included in what is replaced if replaceMarks is true.
bool ReplaceAllBetween(const char *beginMark, const char *endMark, const char *replacement, bool replaceMarks);
// Replaces all occurrences of value with replacement, but only where value is found between
// beginMark and endMark. Returns the number of replacements made.
int ReplaceBetween(const char *beginMark, const char *endMark, const char *value, const char *replacement);
// Replaces the first occurrence of a specified string in this instance with
// another string. Returns true if the value was found and replaced. Otherwise
// returns false.
bool ReplaceFirst(const char *value, const char *replacement);
// Replaces all occurrences of value with the decimal integer replacement. Returns the
// number of replacements.
int ReplaceI(const char *value, int replacement);
// Replaces all occurrences of value with replacement (case insensitive). Returns the
// number of replacements.
int ReplaceNoCase(const char *value, const char *replacement);
// Replaces all word occurrences of a specified string in this instance with
// another specified string. Returns the number of replacements made.
//
// Important: This method is limited to replacing whole words in strings that only
// contains characters in the Latin1 charset (i.e. iso-8859-1 or Windows-1252). A
// whole word can only contain alphanumeric chars where the alpha chars are
// restricted to those of the Latin1 alpha chars. (The underscore character is also
// considered part of a word.)
//
int ReplaceWord(const char *value, const char *replacement);
// Restores single and/or double-quoted strings previously masked by
// MaskQuotedStrings.
//
// quoteType determines which types of quoted strings are masked:
// 1. Both single and double quoted.
// 2. Only single quoted strings.
// 3. Only double quoted strings.
//
bool RestoreMaskedStrings(int quoteType, CkStringTable &maskedStrings);
// Removes all characters from the current StringBuilder instance, and write zero
// bytes to the allocated memory before deallocating.
void SecureClear(void);
// Sets the Nth substring in string in a list delimted by delimiterChar. The first substring
// is at index 0. If exceptDoubleQuoted is true, then the delimiter char found between double
// quotes is not treated as a delimiter. If exceptEscaped is true, then an escaped (with a
// backslash) delimiter char is not treated as a delimiter.
bool SetNth(int index, const char *value, const char *delimiterChar, bool exceptDoubleQuoted, bool exceptEscaped);
// Sets this instance to a copy of the specified string.
bool SetString(const char *value);
// Shortens the string by removing the last numChars chars.
bool Shorten(int numChars);
// Returns true if the string starts with substr. Otherwise returns false. The
// comparison is case sensitive if caseSensitive is true, and case insensitive if caseSensitive is
// false.
bool StartsWith(const char *substr, bool caseSensitive);
// Converts line endings to CRLF (Windows) format.
bool ToCRLF(void);
// Converts line endings to LF-only (UNIX) format.
bool ToLF(void);
// Converts the contents to lowercase.
bool ToLowercase(void);
// Converts the contents to uppercase.
bool ToUppercase(void);
// Trims whitespace from both ends of the string.
bool Trim(void);
// Replaces all tabs, CR's, and LF's, with SPACE chars, and removes extra SPACE's
// so there are no occurances of more than one SPACE char in a row.
bool TrimInsideSpaces(void);
// Unobfuscates the string.
//
// The Chilkat string obfuscation algorithm works by taking the utf-8 bytes of the
// string, base64 encoding it, and then scrambling the letters of the base64
// encoded string. It is deterministic in that the same string will always
// obfuscate to the same result. It is not a secure way of encrypting a string. It
// is only meant to be a simple means of transforming a string into something
// unintelligible.
//
void Unobfuscate(void);
// Writes the contents to a file. If emitBom is true, then the BOM (also known as a
// preamble), is emitted for charsets that define a BOM (such as utf-8, utf-16,
// utf-32, etc.)
bool WriteFile(const char *path, const char *charset, bool emitBom);
// Writes the contents to a file, but only if it is a new file or if the contents
// are different than the existing file. If emitBom is true, then the BOM (also
// known as a preamble), is emitted for charsets that define a BOM (such as utf-8,
// utf-16, utf-32, etc.)
bool WriteFileIfModified(const char *path, const char *charset, bool emitBom);
// END PUBLIC INTERFACE
};
#if !defined(__sun__) && !defined(__sun)
#pragma pack (pop)
#endif
#endif