Utility Classes and Functions
[Support Kit]


Detailed Description

Reference counting, data containers, and other tools.


Files

file  Atom.h
 Basic reference-counting classes, and smart pointer templates for working with them.
file  atomic.h
 Utilities for atomic integer operations.
file  Autolock.h
 Stack-based automatic locking.
file  Bitfield.h
 A nice Bitfield class that provides some inline storage.
file  ByteOrder.h
 Definitions and routines for managing byte order differences.
file  CallStack.h
 Debugging tools for retrieving stack crawls.
file  ConditionVariable.h
 Lightweight condition variable synchronization class.
file  Debug.h
 Common debugging routines, macros, and definitions.
file  Errors.h
 Common error codes (renaming from CmnError.h).
file  EventFlag.h
 Event flag synchronization primitive.
file  Flattenable.h
 Abstract interface for an object that can be flattened into a byte buffer.
file  GenericCache.h
 Helper class for implementing RAM-based caches.
file  Handler.h
 High-level thread dispatching/scheduling class.
file  HashTable.h
 Hash table template class.
file  ITextStream.h
 Abstract interface for a formatted text output stream, with C++ iostream-like operators.
file  KeyedVector.h
 A templatized key/value mapping.
file  List.h
 A list container class.
file  Locker.h
 Lightweight mutex class.
file  Message.h
 Data object that is processed by SHandler.
file  MessageCodes.h
 Common message code constants.
file  MessageList.h
 List of SMessage objects, to implement message queues.
file  RegExp.h
 Regular expression processing classes.
file  SharedBuffer.h
 Standard representation of a block of shared data that supports copy-on-write.
file  SortedVector.h
 An SAbstractVector whose types are kept in a consistent order.
file  StaticValue.h
 Optimized representations of static SValue constants.
file  StopWatch.h
 Debugging tool for measuring time.
file  String.h
 Unicode (UTF-8) string class.
file  StringTokenizer.h
 Helper for parsing strings.
file  support/StringUtils.h
 Additional string utilities.
file  SupportBuild.h
 Build declarations for support framework.
file  SupportDefs.h
 Common Support Kit definitions.
file  SwappedValue.h
 Add data to a value that is tagged with endianness and pull it out and know if you need to swap.
file  TextCoder.h
 Helper classes for converting to and from native UTF-8 text encoding.
file  Thread.h
 Object-oriented thread creation.
file  TypeConstants.h
 Format and standard definitions of SValue type codes.
file  TypeFuncs.h
 Templatized functions for various common type operations.
file  URL.h
 URL manipulation helper class.
file  Value.h
 A general-purpose data container.
file  Vector.h
 Simple array-like container class.
file  VectorIO.h
 A specialized vector for storing an iovec array.

Classes

class  _Iterator
 A companion class to SList that provides iteration over typed list nodes. More...
class  ITextInput
 Abstract interface for streaming in formatted text. More...
class  ITextOutput
 Abstract interface for streaming out formatted text. More...
struct  lock_status_t
 Locking operation status result. More...
struct  regexp
class  SAbstractCache
class  SAbstractKeyedVector
 Abstract type-independent implementation of SKeyedVector. More...
class  SAbstractList
 Generic type-independent implementation of a doubly-linked list. More...
class  SAbstractList::AbstractIterator
 A companion class to SAbstractList that provides iteration over list nodes. More...
class  SAbstractSortedVector
 Abstract implementation for a vector that is sorted. More...
class  SAbstractVector
 Abstract type-independent implementation of a vector (array). More...
class  SAtom
 Base class for a reference-counted object. More...
struct  SAtomicInt32
 Convenience wrapper for an atomic integer. More...
class  SAutolock
 Smart locking class. More...
class  SBitfield
 Vector of bits. More...
class  SCallStack
 Create a stack crawl from the current PC. More...
class  SCallTree
class  SCallTreeNode
class  SConditionAtom
class  SConditionVariable
 Lightweight condition variable synchronization. More...
class  SEventFlag
class  SFlattenable
class  SGenericCache
class  SHandler
 SHandler is an event queue to deliver and process SMessage objects. More...
class  SHasher
class  SHashTable
class  SKeyedVector
 Templatized container of key/value pairs. More...
class  SLightAtom
 A variation of SAtom that only supports strong reference counts. More...
class  SLimAtom
 A minimalistic variation of SAtom/SLightAtom that only supports strong reference counts. More...
class  SList
 A template class providing a doubly-linked list. More...
class  SLocker
 Lightweight mutex. More...
class  SMessage
 Data object that is processed by SHandler. More...
class  SMessageList
 List of SMessage objects, used to implement message queues. More...
class  SNestedLocker
 A version of SLocker that allows nesting of Lock() calls. More...
class  SPerformanceSample
class  SReadWriteLocker
class  SRegExp
class  SSharedBuffer
 A chunk of memory that supports copy-on-write semantics. More...
class  SSimpleStatusValue
 Convenience for creating a value containing a status code. More...
class  SSimpleValue
 Convenience for creating simple data values. More...
class  SSortedVector
 Templatized vector (array) that is kept in sorted order. More...
class  SStackCounter
class  SStopWatch
class  SString
 UTF8 string container. More...
class  SStringTokenizer
struct  static_bool_value
struct  static_float_value
struct  static_int32_value
struct  static_large_string_value
struct  static_large_value
struct  static_small_string_value
struct  static_small_value
class  STextCoderUtils
class  STextDecoder
class  STextEncoder
class  SThread
 Class that creates a new active thread. More...
class  SUrl
class  SValue
 A general-purpose data container, also known as a variant. More...
class  SVector
 Templatized vector (array) container class. More...
class  SVectorIO

Defines

#define B_0_0_FLOAT   B_0_0_FLOAT
#define B_0_1_FLOAT   B_0_1_FLOAT
#define B_0_25_FLOAT   B_0_25_FLOAT
#define B_0_2_FLOAT   B_0_2_FLOAT
#define B_0_3_FLOAT   B_0_3_FLOAT
#define B_0_4_FLOAT   B_0_4_FLOAT
#define B_0_5_FLOAT   B_0_5_FLOAT
#define B_0_6_FLOAT   B_0_6_FLOAT
#define B_0_75_FLOAT   B_0_75_FLOAT
#define B_0_7_FLOAT   B_0_7_FLOAT
#define B_0_8_FLOAT   B_0_8_FLOAT
#define B_0_9_FLOAT   B_0_9_FLOAT
#define B_0_INT32   B_0_INT32
#define B_10_INT32   B_10_INT32
#define B_1_0_FLOAT   B_1_0_FLOAT
#define B_1_INT32   B_1_INT32
#define B_2_INT32   B_2_INT32
#define B_3_INT32   B_3_INT32
#define B_4_INT32   B_4_INT32
#define B_5_INT32   B_5_INT32
#define B_6_INT32   B_6_INT32
#define B_7_INT32   B_7_INT32
#define B_8_INT32   B_8_INT32
#define B_9_INT32   B_9_INT32
#define B_CONST_FLOAT_VALUE(ident, val, prefix)
 Convenience macro for making a static SValue containing a float.
#define B_CONST_INT32_VALUE(ident, val, prefix)
 Convenience macro for making a static SValue containing an int32_t.
#define B_CONST_STRING_VALUE_LARGE(ident, string, prefix)
 Convenience macro for making a static SValue containing a string of 5 or more (including the terminating \0) characters.
#define B_CONST_STRING_VALUE_SMALL(ident, string, prefix)
 Convenience macro for making a static SValue containing a string of 4 or fewer (including the terminating \0) characters.
#define B_DISPLAY_PRIORITY   B_DISPLAY_PRIORITY
#define B_FORMAT_INT64   "I64"
#define B_INFINITE_TIMEOUT   B_INFINITE_TIMEOUT
#define B_JPARKS_BROKE_IT   B_BROKEN_PIPE
#define B_LOW_PRIORITY   B_LOW_PRIORITY
#define B_MAKE_INT64(_x)   _x##LL
#define B_MAKE_UINT64(_x)   _x##ULL
#define B_NORMAL_PRIORITY   B_NORMAL_PRIORITY
#define B_OS_NAME_LENGTH   B_OS_NAME_LENGTH
#define B_PERFORMANCE_NODE(weight, name)
#define B_REAL_TIME_DISPLAY_PRIORITY   B_REAL_TIME_DISPLAY_PRIORITY
#define B_REAL_TIME_PRIORITY   B_REAL_TIME_PRIORITY
#define B_STATIC_FLOAT_VALUE(ident, val, prefix)
 Convenience macro for making a static SValue containing a float.
#define B_STATIC_INT32_VALUE(ident, val, prefix)
 Convenience macro for making a static SValue containing an int32_t.
#define B_STATIC_STRING_VALUE_LARGE(ident, string, prefix)
 Convenience macro for making a static SValue containing a string of 5 or more (including the terminating \0) characters.
#define B_STATIC_STRING_VALUE_SMALL(ident, string, prefix)
 Convenience macro for making a static SValue containing a string of 4 or fewer (including the terminating \0) characters.
#define B_TRANSACTION_PRIORITY   B_NORMAL_PRIORITY
#define B_URGENT_DISPLAY_PRIORITY   B_URGENT_DISPLAY_PRIORITY
#define B_URGENT_PRIORITY   B_URGENT_PRIORITY
#define B_UTF8_BULLET   "\xE2\x80\xA2"
#define B_UTF8_COPYRIGHT   "\xC2\xA9"
#define B_UTF8_DOUBLE_CLOSE_QUOTE   "\xE2\x80\x9D"
#define B_UTF8_DOUBLE_OPEN_QUOTE   "\xE2\x80\x9C"
#define B_UTF8_ELLIPSIS   "\xE2\x80\xA6"
#define B_UTF8_HIROSHI   "\xE5\xBC\x98"
#define B_UTF8_REGISTERED   "\xC2\xAE"
#define B_UTF8_SINGLE_CLOSE_QUOTE   "\xE2\x80\x99"
#define B_UTF8_SINGLE_OPEN_QUOTE   "\xE2\x80\x98"
#define B_UTF8_SMILING_FACE_BLACK   "\xE2\x98\xBB"
#define B_UTF8_SMILING_FACE_WHITE   "\xE2\x98\xBA"
#define B_UTF8_TRADEMARK   "\xE2\x84\xA2"
#define LIBBE2   1
#define PADDED_STRING_LENGTH(string)   sizeof(string)+((4-(sizeof(string)%4)) & 0x3)
#define STRING_ASSERT(x)   inline void string_assert() { STATIC_ASSERT(x); }
#define SUPPORTS_ATOM_DEBUG   1

Typedefs

typedef int32_t(* b_demangle_func )(const char *mangled_name, char *unmangled_name, size_t buffersize)
typedef SHandler BHandler
typedef const static_bool_value value_cbool
typedef const static_float_value value_cfloat
typedef const static_int32_value value_cint32
typedef const static_large_string_value value_clrg
typedef const static_small_string_value value_csml

Enumerations

enum  { B_NO_VALUE_FLATTEN = 0x00000001, B_NO_VALUE_RECURSION = 0x00000002 }
 Flags for SValue operations. More...
enum  { B_PRINT_STREAM_HEADER = 0x00000001 }
 Standard PrintToStream() flags. More...
enum  {
  B_UTF32_ELLIPSIS = 0x2026, B_UTF32_BULLET = 0x2022, B_UTF32_SINGLE_OPEN_QUOTE = 0x2018, B_UTF32_SINGLE_CLOSE_QUOTE = 0x2019,
  B_UTF32_DOUBLE_OPEN_QUOTE = 0x201C, B_UTF32_DOUBLE_CLOSE_QUOTE = 0x201D, B_UTF32_COPYRIGHT = 0x00A9, B_UTF32_REGISTERED = 0x00AE,
  B_UTF32_TRADEMARK = 0x2122, B_UTF32_SMILING_FACE_WHITE = 0x263A, B_UTF32_SMILING_FACE_BLACK = 0x263B
}
enum  {
  B_STOP_WATCH_SILENT = (1<<0), B_STOP_WATCH_NESTING = (1<<1), B_STOP_WATCH_CLEAR_CACHE = (1<<2), B_STOP_WATCH_RAW = (1<<3),
  B_STOP_WATCH_HIGH_PRIORITY = (1<<4), B_STOP_WATCH_QUANTIFY = (1<<5), B_STOP_WATCH_NO_TIME = (1<<6)
}
enum  {
  B_BUFFER_USERS_SHIFT = 4, B_BUFFER_LENGTH_SHIFT = 1, B_STATIC_USERS = 0x00000001, B_POOLED_USERS = 0x00000002,
  B_EXTENDED_BUFFER = 0x00000001
}
 Special bits in the SSharedBuffer user count and length fields. More...
enum  { B_ANY_WHAT = 0 }
enum  {
  B_KEY_DOWN = 'keyd', B_KEY_UP = 'keyu', B_KEY_HELD = 'keyh', B_STRING_INPUT = 'stri',
  B_UNMAPPED_KEY_DOWN = 'ukyd', B_UNMAPPED_KEY_UP = 'ukyu', B_FIND_HAPPENING_SOMEWHERE = 'find', B_INVALIDATE = 'invl',
  B_MODIFIERS_CHANGED = 'mdch', B_PEN_DOWN = 'pndn', B_PEN_MOVED = 'pnmv', B_PEN_UP = 'pnup',
  B_PEN_MOVED_WHILE_UP = 'pnmu', B_PEN_DRAGGED = 'pndg', B_PEN_EXITED = 'pnex', B_PEN_DROPPED = 'pndp',
  B_MOUSE_WHEEL_CHANGED = 'whel', B_NULL_EVENT = 'null', B_DEBUG_EVENT = 'debg', B_SPY_EVENT = 'spye',
  B_SET_TIMEOUTS_EVENT = 'stim', B_PLAYBACK_EVENT = 'play', B_HIGHLEVEL_EVENT = 'hlvl', B_DISCOVER = 'disc',
  B_STOP_DISCOVERY = 'ndsc', B_VIEW_PROPERTIES = 'prop', B_STOP_LISTENING = 'nlst', bmsgEnqueuePointerEvent = '_ENP',
  bmsgEnqueueKeyEvent = '_ENK'
}
enum  { B_POST_REMOVE_DUPLICATES = SHandler::POST_REMOVE_DUPLICATES, B_POST_KEEP_UNIQUE = SHandler::POST_KEEP_UNIQUE, B_POST_UNIQUE_MESSAGE = B_POST_REMOVE_DUPLICATES }
enum  { B_GENERIC_CACHE_SIZE_UNLIMITED = 0 }
enum  { B_FLATTEN_FORM_ACTIVE = 0, B_FLATTEN_FORM_PERSISTENT = 1 }
enum  { B_CALLSTACK_DEPTH = 32 }
enum  {
  B_ATOM_REPORT_FORCE_LONG = 0x0001, B_ATOM_REPORT_FORCE_SHORT = 0x0002, B_ATOM_REPORT_FORCE_SUMMARY = 0x0003, B_ATOM_REPORT_FORCE_MASK = 0x000f,
  B_ATOM_REPORT_REMOVE_HEADER = 0x0010
}
 Flags for SAtom debugging reports. More...
enum  { B_EDIT_VALUE_DATA = 0x00000001 }
 Flags for SValue::LockData(). More...
enum  { B_PROFILE_KEEP_SAMPLES = (1<<0), B_PROFILE_UPLOAD_SAMPLES = (1<<1) }
enum  { B_FILTER_REVERSE_FLAG = SHandler::FILTER_REVERSE_FLAG, B_FILTER_FUTURE_FLAG = SHandler::FILTER_FUTURE_FLAG }
 Flags for SHandler::FilterMessages() and SHandler::RemoveMessages(). More...
enum  { B_GENERIC_CACHE_NEVER_PURGE = 0x00000001, B_GENERIC_CACHE_DONT_ADD = 0x00000002, B_GENERIC_CACHE_DONT_PURGE = 0x00000004 }
enum  { B_ATOM_FIRST_STRONG = 0x0001 }
 Flags passed to SAtom::IncStrongAttempted(). More...
enum  { B_PRINT_VALUE_TYPES = 0x00010000, B_PRINT_CATALOG_CONTENTS = 0x00020000, B_PRINT_BINDER_INTERFACES = 0x00040000, B_PRINT_BINDER_CONTENTS = 0x00080000 }
 Additional flags for PrintToStream(). More...
enum  { B_COUNT_HIGH_PRECISION = (1<<0) }
enum  { B_PERFORMANCE_WEIGHT_EMPTY = 100, B_PERFORMANCE_WEIGHT_LIGHT = 200, B_PERFORMANCE_WEIGHT_MEDIUM = 300, B_PERFORMANCE_WEIGHT_HEAVY = 400 }
enum  binder_error_codes_enum {
  B_BINDER_MISSING_ARG = bndErrMissingArg, B_BINDER_BAD_TYPE = bndErrBadType, B_BINDER_DEAD = bndErrDead, B_BINDER_UNKNOWN_TRANSACT = bndErrUnknownTransact,
  B_BINDER_BAD_TRANSACT = bndErrBadTransact, B_BINDER_TOO_MANY_LOOPERS = bndErrTooManyLoopers, B_BINDER_BAD_INTERFACE = bndErrBadInterface, B_BINDER_UNKNOWN_METHOD = bndErrUnknownMethod,
  B_BINDER_UNKNOWN_PROPERTY = bndErrUnknownProperty, B_BINDER_OUT_OF_STACK = bndErrOutOfStack, B_BINDER_INC_STRONG_FAILED = bndErrIncStrongFailed, B_BINDER_READ_NULL_VALUE = bndErrReadNullValue
}
 Binder error codes. More...
enum  general_error_codes_enum {
  B_NO_MEMORY = sysErrNoFreeRAM, B_BAD_VALUE = sysErrParamErr, B_NOT_ALLOWED = sysErrNotAllowed, B_TIMED_OUT = sysErrTimeout,
  B_BAD_INDEX = sysErrBadIndex, B_BAD_TYPE = sysErrBadType, B_MISMATCHED_VALUES = sysErrMismatchedValues, B_NAME_NOT_FOUND = sysErrNameNotFound,
  B_NAME_IN_USE = sysErrNameInUse, B_CANCELED = sysErrCanceled, B_NO_INIT = sysErrNoInit, B_PERMISSION_DENIED = sysErrPermissionDenied,
  B_BAD_DATA = sysErrBadData, B_DATA_TRUNCATED = sysErrDataTruncated, B_UNSUPPORTED = sysErrUnsupported, B_WOULD_BLOCK = sysErrWouldBlock,
  B_BUSY = sysErrBusy, B_IO_ERROR = sysErrIO, B_DONT_DO_THAT = sysErrDontDoThat, B_BAD_DESIGN_ENCOUNTERED = sysErrBadDesignEncountered,
  B_WEAK_REF_GONE = sysErrWeakRefGone, B_END_OF_DATA = sysErrEndOfData, B_INTERRUPTED = sysErrInterrupted, B_BROKEN_PIPE = sysErrBrokenPipe,
  B_ENTRY_NOT_FOUND = sysErrEntryNotFound, B_ENTRY_EXISTS = sysErrEntryExists, B_NAME_TOO_LONG = sysErrNameTooLong, B_OUT_OF_RANGE = sysErrOutOfRange,
  B_ERROR = -1, B_OK = errNone, B_NO_ERROR = errNone
}
 General error codes. More...
enum  media_error_codes_enum {
  B_MEDIA_FORMAT_MISMATCH = mediaErrFormatMismatch, B_MEDIA_ALREADY_VISITED = mediaErrAlreadyVisited, B_MEDIA_STREAM_EXHAUSTED = mediaErrStreamExhausted, B_MEDIA_ALREADY_CONNECTED = mediaErrAlreadyConnected,
  B_MEDIA_NOT_CONNECTED = mediaErrNotConnected, B_MEDIA_NO_BUFFER_SOURCE = mediaErrNoBufferSource, B_MEDIA_BUFFER_FLOW_MISMATCH = mediaErrBufferFlowMismatch
}
 Media Kit error codes. More...
enum  no_init_t { B_DO_NOT_INITIALIZE = 1 }
 Standard constructor flag to not initialize an object. More...
enum  perf_counter_reg_t { B_COUNT_REGISTER_CYCLES = 0, B_COUNT_REGISTER_A = 1, B_COUNT_REGISTER_B = 2 }
enum  perf_counter_t {
  B_COUNT_ICACHE_MISS = 0, B_COUNT_DATA_STALL = 2, B_COUNT_ITLB_MISS = 3, B_COUNT_DTLB_MISS = 4,
  B_COUNT_BRANCH_INSTRUCTION = 5, B_COUNT_BRANCH_MISPREDICTED = 6, B_COUNT_INSTRUCTION = 7, B_COUNT_DBUFFER_STALL_DURATION = 8,
  B_COUNT_DBUFFER_STALL = 9, B_COUNT_DCACHE_ACCESS = 10, B_COUNT_DCACHE_MISS = 11, B_COUNT_DCACHE_WRITEBACK = 12,
  B_COUNT_PC_CHANGE = 13
}
enum  regexp_error_codes_enum {
  B_REGEXP_UNMATCHED_PARENTHESIS = regexpErrUnmatchedParenthesis, B_REGEXP_TOO_BIG = regexpErrTooBig, B_REGEXP_TOO_MANY_PARENTHESIS = regexpErrTooManyParenthesis, B_REGEXP_JUNK_ON_END = regexpErrJunkOnEnd,
  B_REGEXP_STAR_PLUS_OPERAND_EMPTY = regexpErrStarPlusOneOperandEmpty, B_REGEXP_NESTED_STAR_QUESTION_PLUS = regexpErrNestedStarQuestionPlus, B_REGEXP_INVALID_BRACKET_RANGE = regexpErrInvalidBracketRange, B_REGEXP_UNMATCHED_BRACKET = regexpErrUnmatchedBracket,
  B_REGEXP_INTERNAL_ERROR = regexpErrInternalError, B_REGEXP_QUESTION_PLUS_STAR_FOLLOWS_NOTHING = regexpErrQuestionPlusStarFollowsNothing, B_REGEXP_TRAILING_BACKSLASH = regexpErrTrailingBackslash, B_REGEXP_CORRUPTED_PROGRAM = regexpErrCorruptedProgram,
  B_REGEXP_MEMORY_CORRUPTION = regexpErrMemoryCorruption, B_REGEXP_CORRUPTED_POINTERS = regexpErrCorruptedPointers, B_REGEXP_CORRUPTED_OPCODE = regexpErrCorruptedOpcode
}
 Regular Expression error codes. More...
enum  www_error_codes_enum { B_INVALID_URL = exgErrInvalidURL, B_INVALID_SCHEME = exgErrInvalidScheme }
 WWW error codes. More...

Functions

nsecs_t approx_SysGetRunTime ()
 Optimization for retrieving the current time.
 B_CONST_FLOAT_VALUE (B_1_0_FLOAT, 1.0f,)
 B_CONST_FLOAT_VALUE (B_0_9_FLOAT, 0.9f,)
 B_CONST_FLOAT_VALUE (B_0_8_FLOAT, 0.8f,)
 B_CONST_FLOAT_VALUE (B_0_75_FLOAT, 0.75f,)
 B_CONST_FLOAT_VALUE (B_0_7_FLOAT, 0.7f,)
 B_CONST_FLOAT_VALUE (B_0_6_FLOAT, 0.6f,)
 B_CONST_FLOAT_VALUE (B_0_5_FLOAT, 0.5f,)
 B_CONST_FLOAT_VALUE (B_0_4_FLOAT, 0.4f,)
 B_CONST_FLOAT_VALUE (B_0_3_FLOAT, 0.3f,)
 B_CONST_FLOAT_VALUE (B_0_25_FLOAT, 0.25f,)
 B_CONST_FLOAT_VALUE (B_0_2_FLOAT, 0.2f,)
 B_CONST_FLOAT_VALUE (B_0_1_FLOAT, 0.1f,)
 B_CONST_FLOAT_VALUE (B_0_0_FLOAT, 0.0f,)
 B_CONST_INT32_VALUE (B_10_INT32, 10,)
 B_CONST_INT32_VALUE (B_9_INT32, 9,)
 B_CONST_INT32_VALUE (B_8_INT32, 8,)
 B_CONST_INT32_VALUE (B_7_INT32, 7,)
 B_CONST_INT32_VALUE (B_6_INT32, 6,)
 B_CONST_INT32_VALUE (B_5_INT32, 5,)
 B_CONST_INT32_VALUE (B_4_INT32, 4,)
 B_CONST_INT32_VALUE (B_3_INT32, 3,)
 B_CONST_INT32_VALUE (B_2_INT32, 2,)
 B_CONST_INT32_VALUE (B_1_INT32, 1,)
 B_CONST_INT32_VALUE (B_0_INT32, 0,)
 B_CONST_STRING_VALUE_LARGE (B_VALUE_VALUE,"value",)
 B_CONST_STRING_VALUE_SMALL (B_EMPTY_STRING,"",)
int32_t BCompare (const SValue &v1, const SValue &v2)
int32_t BCompare (const SString &v1, const SString &v2)
template<class TYPE>
void BMoveAfter (SVector< TYPE > *to, SVector< TYPE > *from, size_t count=1)
void BMoveAfter (SAbstractVector *to, SAbstractVector *from, size_t count)
void BMoveAfter (SValue *to, SValue *from, size_t count)
_IMPEXP_SUPPORT void BMoveAfter (SString *to, SString *from, size_t count)
template<class TYPE>
void BMoveAfter (SSortedVector< TYPE > *to, SSortedVector< TYPE > *from, size_t count=1)
void BMoveAfter (SAbstractSortedVector *to, SAbstractSortedVector *from, size_t count)
template<class TYPE>
void BMoveBefore (SVector< TYPE > *to, SVector< TYPE > *from, size_t count=1)
void BMoveBefore (SAbstractVector *to, SAbstractVector *from, size_t count)
void BMoveBefore (SValue *to, SValue *from, size_t count)
_IMPEXP_SUPPORT void BMoveBefore (SString *to, SString *from, size_t count)
template<class TYPE>
void BMoveBefore (SSortedVector< TYPE > *to, SSortedVector< TYPE > *from, size_t count=1)
void BMoveBefore (SAbstractSortedVector *to, SAbstractSortedVector *from, size_t count)
template<class TYPE>
void BSwap (SVector< TYPE > &v1, SVector< TYPE > &v2)
void BSwap (SAbstractVector &v1, SAbstractVector &v2)
void BSwap (SValue &v1, SValue &v2)
void BSwap (SString &v1, SString &v2)
template<class TYPE>
void BSwap (SSortedVector< TYPE > &v1, SSortedVector< TYPE > &v2)
void BSwap (SAbstractSortedVector &v1, SAbstractSortedVector &v2)
template<class KEY, class VALUE>
void BSwap (SKeyedVector< KEY, VALUE > &v1, SKeyedVector< KEY, VALUE > &v2)
INLINE_FNC int cmpxchg32 (volatile int32_t *atom, int32_t *value, int32_t newValue)
 Perform a 32-bit atomic compare and swap.
INLINE_FNC int cmpxchg64 (volatile int64_t *atom, int64_t *value, int64_t newValue)
 Perform a 64-bit atomic compare and swap.
int Compare (const SString *, const SString *)
int Compare (const SString &, const SString &)
status_t create_swappable_value (uint32_t typeCode, void *data, size_t size, SValue *value)
nsecs_t exact_SysGetRunTime ()
 Retrieves exact time and updates approx_SysGetRunTime().
bool get_swappable_data (const SValue &value, void **data, size_t *size)
int ICompare (const SString *, const SString *)
int ICompare (const SString &, const SString &)
void * inplace_realloc (void *, size_t)
 Perform a realloc, but only if it won't change the location of the memory.
bool operator!= (const char *, const SString &)
bool operator< (const char *, const SString &)
_IMPEXP_SUPPORT const sptr<
ITextOutput > & 
operator<< (const sptr< ITextOutput > &io, const SValue &value)
_IMPEXP_SUPPORT const sptr<
ITextOutput > & 
operator<< (const sptr< ITextOutput > &io, const SString &string)
_IMPEXP_SUPPORT const sptr<
ITextOutput > & 
operator<< (const sptr< ITextOutput > &io, const SMessageList &list)
_IMPEXP_SUPPORT const sptr<
ITextOutput > & 
operator<< (const sptr< ITextOutput > &io, const SMessage &message)
const sptr< ITextOutput > & operator<< (const sptr< ITextOutput > &io, const SCallStack &stack)
bool operator<= (const char *, const SString &)
bool operator== (const char *, const SString &)
bool operator> (const char *, const SString &)
bool operator>= (const char *, const SString &)
void palmsource_dec_package_ref ()
void palmsource_inc_package_ref ()
void swap (SValue &x, SValue &y)
void swap (SString &x, SString &y)

Variables

const static_bool_value B_FALSE_BOOL = { B_PACK_SMALL_TYPE(B_BOOL_TYPE, sizeof(int8_t)), false }
const static_small_value B_NULL_VALUE = { B_PACK_SMALL_TYPE(B_NULL_TYPE, 0), "" }
const static_bool_value B_TRUE_BOOL = { B_PACK_SMALL_TYPE(B_BOOL_TYPE, sizeof(int8_t)), true }
const static_small_value B_UNDEFINED_VALUE = { B_UNDEFINED_TYPE, "" }
const static_small_value B_WILD_VALUE = { B_PACK_SMALL_TYPE(B_WILD_TYPE, 0), "" }
const int32_t kSubExpressionMax = 10


Define Documentation

#define B_0_0_FLOAT   B_0_0_FLOAT
 

#define B_0_1_FLOAT   B_0_1_FLOAT
 

#define B_0_25_FLOAT   B_0_25_FLOAT
 

#define B_0_2_FLOAT   B_0_2_FLOAT
 

#define B_0_3_FLOAT   B_0_3_FLOAT
 

#define B_0_4_FLOAT   B_0_4_FLOAT
 

#define B_0_5_FLOAT   B_0_5_FLOAT
 

#define B_0_6_FLOAT   B_0_6_FLOAT
 

#define B_0_75_FLOAT   B_0_75_FLOAT
 

#define B_0_7_FLOAT   B_0_7_FLOAT
 

#define B_0_8_FLOAT   B_0_8_FLOAT
 

#define B_0_9_FLOAT   B_0_9_FLOAT
 

#define B_0_INT32   B_0_INT32
 

#define B_10_INT32   B_10_INT32
 

#define B_1_0_FLOAT   B_1_0_FLOAT
 

#define B_1_INT32   B_1_INT32
 

#define B_2_INT32   B_2_INT32
 

#define B_3_INT32   B_3_INT32
 

#define B_4_INT32   B_4_INT32
 

#define B_5_INT32   B_5_INT32
 

#define B_6_INT32   B_6_INT32
 

#define B_7_INT32   B_7_INT32
 

#define B_8_INT32   B_8_INT32
 

#define B_9_INT32   B_9_INT32
 

#define B_CONST_FLOAT_VALUE ident,
val,
prefix   ) 
 

Value:

const static_float_value prefix##ident = {                          \
        B_PACK_SMALL_TYPE(B_FLOAT_TYPE, sizeof(float)), val         \
    };                                                                  \
Convenience macro for making a static SValue containing a float.

#define B_CONST_INT32_VALUE ident,
val,
prefix   ) 
 

Value:

const static_int32_value prefix##ident = {                          \
        B_PACK_SMALL_TYPE(B_INT32_TYPE, sizeof(int32_t)), val           \
    };                                                                  \
Convenience macro for making a static SValue containing an int32_t.

#define B_CONST_STRING_VALUE_LARGE ident,
string,
prefix   ) 
 

Value:

const struct {                                                      \
        STRING_ASSERT(sizeof(string)>4);                                \
        SSharedBuffer::inc_ref_func incFunc;                            \
        SSharedBuffer::dec_ref_func decFunc;                            \
        int32_t     users;                                              \
        size_t      length;                                             \
        char        data[PADDED_STRING_LENGTH(string)];                 \
    } ident##str = {                                                    \
        &palmsource_inc_package_ref,                                    \
        &palmsource_dec_package_ref,                                    \
        B_STATIC_USERS,                                                 \
        sizeof(string)<<B_BUFFER_LENGTH_SHIFT, string                   \
    };                                                                  \
    const static_large_string_value prefix##ident = {                   \
        B_PACK_LARGE_TYPE(B_STRING_TYPE), &ident##str.users,            \
        &ident##str.data                                                \
    };                                                                  \
Convenience macro for making a static SValue containing a string of 5 or more (including the terminating \0) characters.

#define B_CONST_STRING_VALUE_SMALL ident,
string,
prefix   ) 
 

Value:

const struct {                                                      \
        STRING_ASSERT(sizeof(string)<=4);                               \
        SSharedBuffer::inc_ref_func incFunc;                            \
        SSharedBuffer::dec_ref_func decFunc;                            \
        int32_t     users;                                              \
        size_t      length;                                             \
        char        data[PADDED_STRING_LENGTH(string)];                 \
    } ident##str = {                                                    \
        &palmsource_inc_package_ref,                                    \
        &palmsource_dec_package_ref,                                    \
        B_STATIC_USERS,                                                 \
        sizeof(string)<<B_BUFFER_LENGTH_SHIFT, string                   \
    };                                                                  \
    const static_small_string_value prefix##ident = {                   \
        B_PACK_SMALL_TYPE(B_STRING_TYPE, sizeof(string)), string,       \
        &ident##str.data                                                \
    };                                                                  \
Convenience macro for making a static SValue containing a string of 4 or fewer (including the terminating \0) characters.

#define B_DISPLAY_PRIORITY   B_DISPLAY_PRIORITY
 

#define B_FORMAT_INT64   "I64"
 

#define B_INFINITE_TIMEOUT   B_INFINITE_TIMEOUT
 

#define B_JPARKS_BROKE_IT   B_BROKEN_PIPE
 

#define B_LOW_PRIORITY   B_LOW_PRIORITY
 

#define B_MAKE_INT64 _x   )     _x##LL
 

#define B_MAKE_UINT64 _x   )     _x##ULL
 

#define B_NORMAL_PRIORITY  &nb