Page 1 of 1

[Implemented] FillMemory(,, #PB_Character)

Posted: Thu Sep 13, 2012 4:02 pm
by KJ67
Please add #PB_Character as a selectable type to FillMemory().

Re: FillMemory(,, #PB_Character)

Posted: Thu Sep 13, 2012 4:44 pm
by CSHW89
Here a workaround:

Code: Select all

Procedure FillMemory_(_memory_, _size_, _value_=0, _type_=#PB_Byte)
  FillMemory(_memory_, _size_, _value_, _type_)
EndProcedure

Macro FillMemory(_memory_, _size_, _value_=0, _type_=#PB_Byte)
  CompilerIf (_type_ = #PB_Character)
    CompilerIf (SizeOf(Character) = 1)
      FillMemory_(_memory_, _size_, _value_, #PB_Byte)
    CompilerElse
      FillMemory_(_memory_, _size_, _value_, #PB_Word)
    CompilerEndIf
  CompilerElse
    FillMemory_(_memory_, _size_, _value_, _type_)
  CompilerEndIf
EndMacro


*mem = AllocateMemory(8)
FillMemory(*mem, 8, 'A', #PB_Character)

For i = 0 To 7 Step SizeOf(Character)
  Debug Chr(PeekC(*mem+i))
Next
lg Kevin

Re: FillMemory(,, #PB_Character)

Posted: Thu Sep 13, 2012 4:56 pm
by KJ67
I've been using things as,

Code: Select all

*Buffer = AllocateMemory((#LLHHX+SizeOf(Character)) * SizeOf(Character))
CompilerIf #PB_Compiler_Unicode
    FillMemory(*Buffer, #LLHHX * SizeOf(Character), PeekC(@""), #PB_Word)
CompilerElse
    FillMemory(*Buffer, #LLHHX * SizeOf(Character), PeekC(@""), #PB_Byte)
CompilerEndIf
but its much clumsier than a native implementation - and as I learnt, this as most workarounds are always potentials error when updating code...