MCPcopy Create free account
hub / github.com/ProgerXP/Notepad2e / IsUnicode

Function IsUnicode

src/Edit.c:883–919  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

881
882
883BOOL IsUnicode ( const char *pBuffer, int cb, LPBOOL lpbBOM, LPBOOL lpbReverse )
884{
885 int i = 0xFFFF;
886 BOOL bIsTextUnicode;
887 BOOL bHasBOM;
888 BOOL bHasRBOM;
889 if ( !pBuffer || cb < 2 ) {
890 return FALSE;
891 }
892 if ( !bSkipUnicodeDetection ) {
893 bIsTextUnicode = IsTextUnicode ( pBuffer, cb, &i );
894 } else {
895 bIsTextUnicode = FALSE;
896 }
897 bHasBOM = ( * ( ( UNALIGNED PWCHAR ) pBuffer ) == 0xFEFF );
898 bHasRBOM = ( * ( ( UNALIGNED PWCHAR ) pBuffer ) == 0xFFFE );
899 if ( i == 0xFFFF ) { // i doesn't seem to have been modified ...
900 i = 0;
901 }
902 if ( bIsTextUnicode || bHasBOM || bHasRBOM ||
903 ( ( i & ( IS_TEXT_UNICODE_UNICODE_MASK | IS_TEXT_UNICODE_REVERSE_MASK ) ) &&
904 ! ( ( i & IS_TEXT_UNICODE_UNICODE_MASK ) && ( i & IS_TEXT_UNICODE_REVERSE_MASK ) ) &&
905 ! ( i & IS_TEXT_UNICODE_ODD_LENGTH ) &&
906 ! ( i & IS_TEXT_UNICODE_ILLEGAL_CHARS && ! ( i & IS_TEXT_UNICODE_REVERSE_SIGNATURE ) ) &&
907 ! ( ( i & IS_TEXT_UNICODE_REVERSE_MASK ) == IS_TEXT_UNICODE_REVERSE_STATISTICS ) ) ) {
908 if ( lpbBOM )
909 *lpbBOM = ( bHasBOM || bHasRBOM ||
910 ( i & ( IS_TEXT_UNICODE_SIGNATURE | IS_TEXT_UNICODE_REVERSE_SIGNATURE ) ) )
911 ? TRUE : FALSE;
912 if ( lpbReverse ) {
913 *lpbReverse = ( bHasRBOM || ( i & IS_TEXT_UNICODE_REVERSE_MASK ) ) ? TRUE : FALSE;
914 }
915 return TRUE;
916 } else {
917 return FALSE;
918 }
919}
920
921
922BOOL IsUTF8 ( const char *pTest, int nLength )

Callers 1

EditLoadFileFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected