浏览代码

added bytes_compare16

Nicolas Cannasse 6 年之前
父节点
当前提交
74d5d07164
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      src/std/bytes.c

+ 11 - 0
src/std/bytes.c

@@ -39,6 +39,16 @@ HL_PRIM int hl_bytes_compare( vbyte *a, int apos, vbyte *b, int bpos, int len )
 	return memcmp(a+apos,b+bpos,len);
 }
 
+HL_PRIM int hl_bytes_compare16( vbyte *a, vbyte *b, int len ) {
+	unsigned short *s1 = (unsigned short *)a;
+	unsigned short *s2 = (unsigned short *)b;
+	int i;
+	for(i=0;i<len;i++)
+		if( s1[i] != s2[i] )
+			return ((int)s1[i]) - ((int)s2[i]);
+	return 0;
+}
+
 typedef unsigned char byte;
 static void *
 memfind_rb (const void  *in_block,      /*  Block containing data            */
@@ -236,6 +246,7 @@ HL_PRIM int hl_string_compare( vbyte *a, vbyte *b, int len ) {
 DEFINE_PRIM(_BYTES,alloc_bytes,_I32);
 DEFINE_PRIM(_VOID,bytes_blit,_BYTES _I32 _BYTES _I32 _I32);
 DEFINE_PRIM(_I32,bytes_compare,_BYTES _I32 _BYTES _I32 _I32);
+DEFINE_PRIM(_I32,bytes_compare16,_BYTES _BYTES _I32);
 DEFINE_PRIM(_I32,string_compare,_BYTES _BYTES _I32);
 DEFINE_PRIM(_I32,bytes_find,_BYTES _I32 _I32 _BYTES _I32 _I32);
 DEFINE_PRIM(_I32,bytes_rfind,_BYTES _I32 _BYTES _I32);