[Implemented] FillMemory(,, #PB_Character)

Got an idea for enhancing PureBasic? New command(s) you'd like to see?
User avatar
KJ67
Enthusiast
Enthusiast
Posts: 218
Joined: Fri Jun 26, 2009 3:51 pm
Location: Westernmost tip of Norway

[Implemented] FillMemory(,, #PB_Character)

Post by KJ67 »

Please add #PB_Character as a selectable type to FillMemory().
The best preparation for tomorrow is doing your best today.
CSHW89
User
User
Posts: 30
Joined: Thu Sep 09, 2010 2:47 pm

Re: FillMemory(,, #PB_Character)

Post 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
Image Image Image
User avatar
KJ67
Enthusiast
Enthusiast
Posts: 218
Joined: Fri Jun 26, 2009 3:51 pm
Location: Westernmost tip of Norway

Re: FillMemory(,, #PB_Character)

Post 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...
The best preparation for tomorrow is doing your best today.
Post Reply