blitz_string.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #ifndef BLITZ_STRING_H
  2. #define BLITZ_STRING_H
  3. #include "blitz_types.h"
  4. #ifdef __cplusplus
  5. extern "C"{
  6. #endif
  7. #define BBNULLSTRING (&bbEmptyString)
  8. struct BBString{
  9. BBClass* clas;
  10. int length;
  11. BBChar buf[];
  12. };
  13. extern BBClass bbStringClass;
  14. extern BBString bbEmptyString;
  15. BBString*bbStringNew( int len );
  16. BBString*bbStringFromChar( int c );
  17. BBString* bbStringFromInt( int n );
  18. BBString* bbStringFromUInt( unsigned int n );
  19. BBString* bbStringFromLong( BBInt64 n );
  20. BBString* bbStringFromULong( BBUInt64 n );
  21. BBString* bbStringFromSizet( BBSIZET n );
  22. BBString*bbStringFromFloat( float n );
  23. BBString* bbStringFromDouble( double n );
  24. BBString* bbStringFromBytes( const char *p,int n );
  25. BBString* bbStringFromShorts( const unsigned short *p,int n );
  26. BBString* bbStringFromInts( const int *p,int n );
  27. BBString* bbStringFromUInts( const unsigned int *p,int n );
  28. BBString*bbStringFromArray( BBArray *arr );
  29. BBString* bbStringFromCString( const char *p );
  30. BBString*bbStringFromWString( const BBChar *p );
  31. BBString*bbStringFromUTF8String( const char *p );
  32. BBString *bbStringFromUTF8Bytes( const char *p,int n );
  33. BBString* bbStringToString( BBString *t );
  34. int bbStringCompare( BBString *x,BBString *y );
  35. int bbStringStartsWith( BBString *x,BBString *y );
  36. int bbStringEndsWith( BBString *x,BBString *y );
  37. int bbStringContains( BBString *x,BBString *y );
  38. BBString*bbStringConcat( BBString *x,BBString *y );
  39. BBString* bbStringTrim( BBString *t );
  40. BBString* bbStringSlice( BBString *t,int beg,int end );
  41. BBString* bbStringReplace( BBString *str,BBString *sub,BBString *rep );
  42. int bbStringAsc( BBString *t );
  43. int bbStringFind( BBString *x,BBString *y,int i );
  44. int bbStringFindLast( BBString *x,BBString *y,int i );
  45. BBString* bbStringToLower( BBString *str );
  46. BBString* bbStringToUpper( BBString *str );
  47. int bbStringToInt( BBString *str );
  48. unsigned int bbStringToUInt( BBString *str );
  49. float bbStringToFloat( BBString *str );
  50. double bbStringToDouble( BBString *str );
  51. BBInt64 bbStringToLong( BBString *str );
  52. BBUInt64 bbStringToULong( BBString *str );
  53. BBSIZET bbStringToSizet( BBString *str );
  54. char* bbStringToCString( BBString *str );
  55. BBChar* bbStringToWString( BBString *str );
  56. char* bbStringToUTF8String( BBString *str );
  57. #ifdef _WIN32
  58. WPARAM bbStringToWParam( BBString *str );
  59. LPARAM bbStringToLParam( BBString *str );
  60. BBString* bbStringFromWParam( WPARAM n );
  61. BBString* bbStringFromLParam( LPARAM n );
  62. #endif
  63. BBArray* bbStringSplit( BBString *str,BBString *sep );
  64. BBString* bbStringJoin( BBString *sep,BBArray *bits );
  65. char* bbTmpCString( BBString *str );
  66. BBChar* bbTmpWString( BBString *str );
  67. char* bbTmpUTF8String( BBString *str );
  68. #if __STDC_VERSION__ >= 199901L
  69. inline int bbStringEquals( BBString *x,BBString *y ){
  70. if (x->length-y->length != 0) return 0;
  71. return memcmp(x->buf, y->buf, x->length * sizeof(BBChar)) == 0;
  72. }
  73. inline int bbObjectIsEmptyString(BBObject * o) {
  74. return (BBString*)o == &bbEmptyString;
  75. }
  76. #else
  77. int bbStringEquals( BBString *x,BBString *y );
  78. int bbObjectIsEmptyString(BBObject * o);
  79. #endif
  80. char *bbStringToUTF8StringBuffer( BBString *str, char * buf, size_t * length );
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84. #endif