Add function : MemCompare

BlitzMax Forums/BlitzMax Module Tweaks/Add function : MemCompare

seyhajin(Posted 2007) [#1]
MemCompare function is usefull to compare memory blocks, ex : Matrix class, array with a Object, etc...

in brl.blitz module :

in blitz_memory.h, add
int bbMemCompare( const void *src,const void *with,int size );


in blitz_memory.c, add
int bbMemCompare( const void *src,const void *with,int size ){
	return memcmp( src,with,size );
}


in blitz.bmx, add
Rem
bbdoc: Compares the relation ship between the content of the memory blocks
returns: A zero integer value if equal, a greater integer value if first @src byte value as greater than @with and less integer 

value if first @src byte value as less then @with.
EndRem
Function MemCompare%( src:Byte ptr,with:Byte Ptr,size )="bbMemCompare"


in command line, recompile a brl.blitz module, and update doc with docmods.

example:
Type Matrix
       Field _00#,_01#,_02#,_03#
       Field _10#,_11#,_12#,_13#
       Field _20#,_21#,_22#,_23#
       Field _30#,_31#,_32#,_33#

       Method Compare%(with:Object)
              Local T:Matrix = Matrix(with)
              If (T <> Null) Return MemCompare(Self, with , SizeOf(Matrix)
              Return False
       EndMethod
EndType

Local m1:Matrix = new Matrix
Local m2:Matrix = new Matrix

' Change attributes of matrix if you want testing MemCompare return value.

If Not(m1 = m2)
      Print "m1 = m2"
Else
      Print "m1 <> m2"
EndIf



For more informations, see a memcmp function from C function reference.


JoshK(Posted 2008) [#2]
This would be a useful addition for the official module.