e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* Copyright (c) 2001, Stanford University
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * All rights reserved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync *
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * See the file LICENSE.txt for information on redistributing this software.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#ifndef CR_STRING_H
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#define CR_STRING_H
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include <iprt/cdefs.h>
8047c446a7fcabbed23c975bae98e1206ab18591vboxsync#include <iprt/types.h>
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsyncRT_C_DECLS_BEGIN
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrdup( const char *str );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrndup( const char *str, unsigned int len );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(int) crStrlen( const char *str );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(int) crStrcmp( const char *str1, const char *str2 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(int) crStrncmp( const char *str1, const char *str2, int n );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(int) crStrcasecmp( const char *str1, const char *str2 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crStrcpy( char *dst, const char *src );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crStrncpy( char *dst, const char *src, unsigned int len );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crStrcat( char *dst, const char *src );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrjoin( const char *src1, const char *src2 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrjoin3( const char *src1, const char *src2, const char *src3 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrstr( const char *str, const char *pat );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrchr( const char *str, char c );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrrchr( const char *str, char c );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(int) crStrToInt( const char *str );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(float) crStrToFloat( const char *str );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char **) crStrSplit( const char *str, const char *splitstr );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char **) crStrSplitn( const char *str, const char *splitstr, int n );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crFreeStrings( char **strings );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(char *) crStrIntersect( const char *s1, const char *s2 );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(int) crIsDigit( char c );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crBytesToString( char *string, int nstring, void *data, int ndata );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncDECLEXPORT(void) crWordsToString( char *string, int nstring, void *data, int ndata );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_OFFSET_MAJOR (24)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_OFFSET_MINOR (16)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_OFFSET_BUILD (0)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_MAX_MAJOR (0x7f)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_MAX_MINOR (0xff)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_MAX_BUILD (0xffff)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_MASK_MAJOR (CR_GLVERSION_MAX_MAJOR << CR_GLVERSION_OFFSET_MAJOR)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_MASK_MINOR (CR_GLVERSION_MAX_MINOR << CR_GLVERSION_OFFSET_MINOR)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_MASK_BUILD (CR_GLVERSION_MAX_BUILD << CR_GLVERSION_OFFSET_BUILD)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_COMPOSE_EL(_val, _type) (((_val) << CR_GLVERSION_OFFSET_##_type) & CR_GLVERSION_MASK_##_type)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_COMPOSE(_maj, _min, _build) (CR_GLVERSION_COMPOSE_EL((_maj), MAJOR) \
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync + CR_GLVERSION_COMPOSE_EL((_min), MINOR) \
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync + CR_GLVERSION_COMPOSE_EL((_build), BUILD))
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_GET_EL(_val, _type) (((_val) & CR_GLVERSION_MASK_##_type) >> CR_GLVERSION_OFFSET_##_type)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_GET_MAJOR(_val) CR_GLVERSION_GET_EL((_val), MAJOR)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_GET_MINOR(_val) CR_GLVERSION_GET_EL((_val), MINOR)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync#define CR_GLVERSION_GET_BUILD(_val) CR_GLVERSION_GET_EL((_val), BUILD)
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsync
1161a5c2b6f7f91fce7d3649f06fc27a07b2714evboxsyncDECLEXPORT(int) crStrParseGlVersion(const char * ver);
8047c446a7fcabbed23c975bae98e1206ab18591vboxsyncDECLEXPORT(int32_t) crStrParseI32(const char *pszStr, const int32_t defaultVal);
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsyncRT_C_DECLS_END
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#endif /* CR_STRING_H */