Page 1 of 2

PureBasic Recycle Library

Posted: Sun Jul 31, 2011 10:26 pm
by Env
This project aims at providing PureBasic programmers with a library of source code in which they may find useful for developing a range of projects with.

Specification

The source code included must adhere to the following standard:
  • All source code must be Cross-Platform compatible. Any use of OS-Specific code is prohibited UNLESS alternatives for Windows, Linux and Mac are present, and do not effect the usability of the code.
  • All source code must be cleanly-written, containing comments where required.
  • All source code must contain a copyright block as a header providing the particular piece of source codes title, description, revision number, author, and any applicable notes. This block must not be altered/removed.
  • Any source code derived from third-party works must be clearly identified as a derivative, and the original author must be fully credited.
  • Any source code adapted from third-party works must be clearly identified as an adaptation, and the original author must be fully credited.
  • Any adjustments to the library must be clearly labelled.
  • Any third-party dependencies (i.e. Shared Libraries) must be included in compiled form for each of the operating systems and processor architectures.
  • Requiring the use of third-party source code libraries is not prohibited, but highly discouraged.
  • Source code must be explicitly written.
  • Libraries requiring global variables should have the variables stored within a structure, and a global object of that structure being defined. Naming convention: Structure: '_(prefix)_GlobalData'. Object: '_prefix_Global'.
  • Any memory allocations must be safe, and stored within a list, or table. A single function call must exist to free all memory within the library.
Usage Terms

Anyone is permitted to use this source code library in their own projects of any license. No credit is required, but is highly appreciated.

Library Contents
  • String Macros Library - Library for parsing strings for macros, and replacing the macros with the relevant values.
  • Trigger Zone Library - Library for defining 2D zones, and checking if a specified point is inside a zone.
  • Advanced Window Event Handling - Library enabling programmer to poll window events, process custom events, and redirect events to event handlers.
  • Image Batch Library - Library for creating and storing batches of images in a single object. Used for the Animated components.
  • Animated Image Gadget* - Library that can create an animated image gadget, with various loop modes.
  • Color Swatch Gadget* - Library that can create a colour-swatch gadget that can display a colour, and allow the end-user to change the colour.
  • Maths Library - Library containing a plethora of routines for solving mathematical problems.
  • Color Library - Library containing prefabricated colour constants, as well as functions for converting between colour models, and applying filters.
  • Cipher Library - Library for encrypting/decrypting strings and memory allocations with single functions. Supporting multiple algorithms.
  • Guimauve's Complex Number routines (Included as part of the Math Library)
  • PureBasic Source Code Parser - Parse PureBasic source code files, and query all elements such as Procedures, Macros etc.
* - Requires PureBasic 4.60 and above.



This library can be found - Here -.


A quick run down of the current functions (Some may not be available until the next revision release.)
  • Types
  • [list]
  • Point2D
  • Point3D
  • Area2D
  • Area3D
  • bool (Derived from Ascii (.a))
  • ptr (Derived from Integer (.i))
  • hsl (Included in Colour Library)
  • cmy (Included in Colour Library)
[*]Animated Image Gadget[/*]
  • AnimGadget(Gadget, X, Y, Width, Height, *ImageBatch, [Mode])
  • AnimGadget_Play(Gadget)
  • AnimGadget_SetCycleFreq(Gadget, CycleDelay)
  • AnimGadget_Loop(Gadget, [State])
  • AnimGadget_LoopMode(Gadget, Mode)
  • AnimGadget_GetFrame(Gadget)
  • AnimGadget_FrameCount(Gadget)
  • AnimGadget_IsPlaying(Gadget)
  • AnimGadget_IsLooping(Gadget)
[*]Cipher Library[/*]
  • CIP_EncryptString(String, Key, [Algorithm])
  • CIP_DecryptString(String, Key, [Algorithm])
  • CIP_EncryptMemory(*Memory, MemSize, Key, [Algorithm])
  • CIP_DecryptMemory(*Memory, MemSize, Key, [Algorithm])
[*]Colour Library[/*]
  • Color_RGB2HSL(Color, *Output.hsl)
  • Color_RGB2CMY(Color, *Output.cmy)
  • Color_CMY(Cyan, Magenta, Yellow, [Alpha])
  • Color_HSL(Hue, Sat, Light, [Alpha])
  • Color_Hue(Color)
  • Color_Saturation(Color)
  • Color_Lightness(Color)
  • Color_Cyan(Color)
  • Color_Yellow(Color)
  • Color_Magenta(Color)
  • Color_Gray(Color)
  • Color_Grayscale(Color)
  • Color_GrayscaleA(Color)
  • Color_Sepia(Color)
  • Color_SepiaA(Color)
  • Color_InvertColor(Color)
  • Color_InvertColorA(Color)
  • Color_BrightenColor(Color, Amount)
  • Color_BrightenColorA(Color, Amount)
  • Color_MixColor(ColorA, ColorB, Slide)
  • Color_MixColorA(ColorA, ColorB, Slide)
[*]Image Batch Library[/*]
  • ImageBatch_Create())
  • ImageBatch_CreateFromStrip(Image, FrameWidth))
  • ImageBatch_IsValid(*ImageBatch))
  • ImageBatch_Free(*ImageBatch))
  • ImageBatch_FreeAll())
  • ImageBatch_AddImage(*ImageBatch, Image))
  • ImageBatch_CountImages(*ImageBatch))
  • ImageBatch_GetImage(*ImageBatch, Index))
  • ImageBatch_Check(*Imagebatch))
[*]Maths Library[/*]
  • Math_Min(ValueA, ValueB)
  • Math_Max(ValueA, ValueB)
  • Math_Min3(ValueA, ValueB, ValueC)
  • Math_Max3(ValueA, ValueB, ValueC)
  • Math_MinF(ValueA, ValueB)
  • Math_MaxF(ValueA, ValueB)
  • Math_MinF3(ValueA, ValueB, ValueC)
  • Math_MaxF3(ValueA, ValueB, ValueC)
  • Math_ClampValue(Value, Min, Max)
  • Math_ClampValueF(Value, Min, Max)
  • Math_Bool(Value)
  • Math_StepValue(ValueA, ValueB, Slide)
  • Math_StepValueF(ValueA, ValueB, Slide)
  • Math_Inc(Variable, [Amount])
  • Math_Dec(Variable, [Amount])
  • Math_IsEven(Number)
  • Math_IsOdd(Number)
  • Math_Percentage(Value, Maximum)
  • Math_LowerQuart(Value)
  • Math_UpperQuart(Value)
  • Math_SinH(Angle)
  • Math_CosH(Angle)
  • Math_GetComplexX(Complex)
  • Math_GetComplexY(Complex)
  • Math_SetComplexX(Complex, X)
  • Math_SetComplexY(Complex, Y)
  • Math_UpdateComplex(Complex, X, Y)
  • Math_ResetComplex(Complex)
  • Math_CopyComplex(ComplexA, ComplexB)
  • Math_CompareComplex(ComplexA, ComplexB)
  • Math_SwapComplex(ComplexA, ComplexB)
  • Math_PlusComplex(ComplexR, ComplexA, ComplexB)
  • Math_MinuxComplex(ComplexR, ComplexA, ComplexB)
  • Math_ProductByScalarComplex(ComplexR, ComplexA, Scalar)
  • Math_DivideByScalarComplex(ComplexR, ComplexA, Scalar)
  • Math_ZeroComplex(Complex)
  • Math_DebugComplex(Complex)
  • Math_ProductComplex(ComplexR, ComplexA, ComplexB)
  • Math_SquareComplex(ComplexR, ComplexA, ComplexB)
  • Math_SumSquareComplex(Complex)
  • Math_MagnitudeComplex(Complex)
  • Math_SinusComplex(Complex)
  • Math_CosinusComplex(Complex)
  • Math_SinusHyperbolicComplex(Complex)
  • Math_CosinusHyperbolicComplex(ComplexR, ComplexA)
  • Math_LnComplex(ComplexR, ComplexA)
  • Math_DivideComplex(ComplexR, ComplexA, ComplexB)
  • Math_TangentComplex(ComplexR, Complex)
  • Math_TangentHyperbolicCompliex(ComplexR, Complex)
  • Math_ExponentialComplex(ComplexR, Complex)
[*]String Macros Library[/*]
  • SCM_IsKeyLegal(Key)
  • SCM_FormatKey(Key)
  • SCM_AddMacro(Name, Value)
  • SCM_GetMacro(Name)
  • SCM_Parse(String)
  • SCM_RemoveMacro(Name)
  • SCM_RemoveAll()
  • SCM_RemoveGroup(Name)
[*]Swatch Gadget[/*]
  • SwatchGadget(X, Y, Width, Height, [DefaultColor], [EnableRequester])
  • SwatchGadget_GetColor(Gadget)
  • SwatchGadget_SetColor(Gadget, Color)
[*]Trigger Zone Library[/*]
  • TRZ_CreateZone(Left, Top, Right, Bottom)
  • TRZ_PointInZone(X, Y, *Zone)
  • TRZ_GetZone(X, Y)
  • TRZ_RemoveAll()
[*]Window Events Library[/*]
  • WEH_WindowEvent([Wait], [Timeout])
  • WEH_PostWindowEvent(EventType, [EventWindow])
  • WEH_PostGadgetEvent(EventGadget, [EventType])
  • WEH_PostMenuEvent(EventMenu, EventType)
  • WEH_PostTimerEvent(EventTimer)
  • WEH_EventGadget()
  • WEH_EventMenu()
  • WEH_EventTimer()
  • WEH_EventType()
  • WEH_EventWindow()
  • WEH_RemoveEventHandler(*Function)
  • WEH_AddEventHandler(*Function)
  • Ability to override PureBasic native event functions. View file for info.
[/list]

Re: PureBasic Recycle Library

Posted: Mon Aug 01, 2011 11:24 am
by DoubleDutch
You can add my DBin if you like from the pbosl set of libs...

Re: PureBasic Recycle Library

Posted: Mon Aug 01, 2011 2:07 pm
by Env
DoubleDutch wrote:You can add my DBin if you like from the pbosl set of libs...
Thanks :) - If you don't mind, may I add it as an adaptation? You (and ts-soft) will receive full credit within the Copyright Block of course :)

Re: PureBasic Recycle Library

Posted: Mon Aug 01, 2011 2:20 pm
by DoubleDutch
Yes, no problem. I've also done a new version (not released) that is unicode compatible and loads the files if they are included as a file (rather than copied to the end of an exe). Did you want that?

Re: PureBasic Recycle Library

Posted: Mon Aug 01, 2011 2:44 pm
by Env
DoubleDutch wrote:Yes, no problem. I've also done a new version (not released) that is unicode compatible and loads the files if they are included as a file (rather than copied to the end of an exe). Did you want that?

Sure, that would be great :)

Re: PureBasic Recycle Library

Posted: Wed Aug 03, 2011 10:10 am
by Env
Revision 2 is under development....

Thing's already included.
  • Colour routines (RGB<->HSL<->CYMK, Effects like Sepia, Mixing colours etc etc.)
  • Cipher Library core for quick encrypting/decrypting of memory allocations and strings. RC4 currently implemented.
  • Mathematics Library (Functions such as Step, Clamp)
  • Image Batching (One object that contains a list of images)
  • Animated Image Gadget now takes an Image Batch, as opposed to an Image strip.
  • DBin providing DoubleDutch can provide the new release code.
Thing's I'm looking to implement. (All those who want to help, please do to make this a resourceful library)...
  • Memory/String Encryption/Decryption algorithms (RC4 already implemented).
  • Useful libraries people would like to see implemented.
  • Additional Mathematics Algorithms/Routines.
  • Animates Sprites using ImageBatch.
  • System for Documentation generation.
If you want to get involved, send me a PM with what you would like to contribute with, and I'll appreciate the effort.

Re: PureBasic Recycle Library

Posted: Wed Aug 03, 2011 1:41 pm
by kernadec
yessss!
Excellent work... thanks for sharing

Good Day

Re: PureBasic Recycle Library

Posted: Wed Aug 03, 2011 2:50 pm
by Env
Thanks :)

I've used Purebasic for a long time, and I thought it would be nice to give something useful back to the community... And with something like this, everyone can benefit in some way...

Re: PureBasic Recycle Library

Posted: Wed Aug 03, 2011 3:42 pm
by DoubleDutch
Here is the dbin code:

Code: Select all

Global vDBin_Size,vDBin_Compressed,vDBin_CRC

#DBin_Header=$dbab0002

Procedure iDBin_Header(file,string$,size,compressed,crc)
	len=Len(string$)
	If len
		WriteString(file,string$,#PB_Ascii)
	EndIf
	WriteByte(file,len)	; filename len
	WriteLong(file,size)	; no size
	WriteLong(file,compressed)	; no pack
	WriteLong(file,crc)	; crc of data
	WriteLong(file,#DBin_Header) ; id string
EndProcedure

Procedure iDBin_CheckHeader(file,pos)
	result=0
	If pos>17
		FileSeek(file,pos-4)
		header=ReadLong(file)
		If header=#DBin_Header Or header=$dbdbdbdb
			FileSeek(file,pos-17)
			len=ReadByte(file)&$ff
			size=ReadLong(file)
			compressed=ReadLong(file)
			stringpos=pos-17-len
			If compressed
				result=stringpos-compressed
			Else
				result=stringpos-size
			EndIf
			FileSeek(file,pos-17)
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure iDBin_MemCheckHeader(pos)
	result=0
	If pos>17
		addr=pos-4
		header=PeekL(addr)
		If header=#DBin_Header Or header=$dbdbdbdb
			addr=pos-17
			len=PeekB(addr)&$ff
			addr+1
			size=PeekL(addr)
			addr+4
			compressed=PeekL(addr)
			addr+4
			stringpos=pos-17-len
			If compressed
				result=stringpos-compressed
			Else
				result=stringpos-size
			EndIf
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_Create(string$,append=#False)
	If append
		size=FileSize(string$)
		If size>0
			file=OpenFile(#PB_Any,string$)
			If file
				FileSeek(file,size)
			EndIf
		EndIf
	Else
		file=CreateFile(#PB_Any,string$)
	EndIf
	If file
		iDBin_Header(file,"",0,0,0)
		CloseFile(file)
	EndIf
	ProcedureReturn file
EndProcedure

Procedure DBin_AddFile(dest$,string$,comp=-1)
	result=#False
	endoffile=FileSize(dest$)
	If endoffile>0
		string$=LCase(ReplaceString(string$,"/","\"))
		size=FileSize(string$)
		If size>0
			source=AllocateMemory(size)
			If source
				dest=AllocateMemory(size+8)
				If dest
					file=ReadFile(#PB_Any,string$)
					If file
						If ReadData(file,source,size)=size
							If comp>=0
								compressed=PackMemory(source,dest,size,comp)
							Else
								compressed=PackMemory(source,dest,size)
							EndIf
							file2=OpenFile(#PB_Any,dest$)
							If file2
								FileSeek(file2,endoffile)
								If compressed
									WriteData(file2,dest,compressed)
								Else
									WriteData(file2,source,size)
								EndIf
								iDBin_Header(file2,string$,size,compressed,CRC32Fingerprint(source,size))
								CloseFile(file2)
								result=#True
							EndIf					
						EndIf
						CloseFile(file)
					EndIf
					FreeMemory(dest)
				EndIf
				FreeMemory(source)
			EndIf
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_TotalFiles(string$)
	result=0
	endoffile=FileSize(string$)
	If endoffile>16
		file=ReadFile(#PB_Any,string$)
		If file
			Repeat
				endoffile=iDBin_CheckHeader(file,endoffile)
				If endoffile
					result+1
				EndIf
			Until Not endoffile
			CloseFile(file)
		Else
			Debug("Unable to read file!!!")
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_MemTotalFiles(memory)
	result=0
	endoffile=memory
	If endoffile>16
		Repeat
			endoffile=iDBin_MemCheckHeader(endoffile)
			If endoffile
				result+1
			EndIf
		Until Not endoffile
	EndIf
	ProcedureReturn result
EndProcedure


Procedure.s DBin_Dir(string$,pos)
	atfile=0
	result$=""
	endoffile=FileSize(string$)
	If endoffile>16
		file=ReadFile(#PB_Any,string$)
		If file
			Repeat
				endoffile2=endoffile
				endoffile=iDBin_CheckHeader(file,endoffile)
				If endoffile
					atfile+1
					If atfile>=pos
						len=ReadByte(file)&$ff
						If len
							result2$=Space(len+1)
							FileSeek(file,endoffile2-17-len)
							ReadData(file,@result2$,len)
							ReadByte(file) ; skip string len
							vDBin_Size=ReadLong(file)
							vDBin_Compressed=ReadLong(file)
							vDBin_CRC=ReadLong(file)
							result$=PeekS(@result2$,len,#PB_Ascii)
						EndIf
						Break
					EndIf
				EndIf
			Until Not endoffile
			CloseFile(file)
		EndIf
	EndIf
	ProcedureReturn result$
EndProcedure

Procedure.s DBin_MemDir(memory,pos)
	atfile=0
	result$=""
	If memory>16

		Repeat
			addr=memory
			memory=iDBin_MemCheckHeader(memory)
			If memory
				atfile+1
				If atfile>=pos
					len=PeekB(addr-17)&$ff

					If len
						addr=addr-17-len
						result$=PeekS(addr,len,#PB_Ascii)
						addr+Len(result$)
						addr+1 ; skip string len
						vDBin_Size=PeekL(addr)
						addr+4
						vDBin_Compressed=PeekL(addr)
						addr+4
						vDBin_CRC=PeekL(addr)
					EndIf
					Break
				EndIf
			EndIf
		Until Not memory

	EndIf
	ProcedureReturn result$
EndProcedure

Procedure DBin_FindFile(string$,file$)
	file$=LCase(ReplaceString(file$,"/","\"))
	result=#False
	endoffile=FileSize(string$)
	string2$=GetFilePart(string$)
	If endoffile>16
		file=ReadFile(#PB_Any,string$)
		If file
			Repeat
				endoffile2=endoffile
				endoffile=iDBin_CheckHeader(file,endoffile)
				If endoffile
					len=ReadByte(file)&$ff
					If len
						compare2$=Space(len)
						FileSeek(file,endoffile2-17-len)
						ReadData(file,@compare2$,len)
						compare$=Trim(PeekS(@compare2$,-1,#PB_Ascii))
						If file$=compare$
							ReadByte(file) ; skip string len
							vDBin_Size=ReadLong(file)
							vDBin_Compressed=ReadLong(file)
							vDBin_CRC=ReadLong(file)
							result=endoffile
							Break
						EndIf
					EndIf
				EndIf
			Until Not endoffile
			CloseFile(file)
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_MemFindFile(memory,file$)
	CompilerIf #PB_Compiler_OS = #PB_OS_Windows
		file$=LCase(ReplaceString(file$,"/","\"))
	CompilerElse
		file$=LCase(ReplaceString(file$,"\","/"))
	CompilerEndIf
	result=#False
	If memory>16
	
		Repeat
			addr=memory
			memory=iDBin_MemCheckHeader(memory)
			If memory
				len=PeekB(addr-17)&$ff
				If len
					addr=addr-17-len
					compare$=PeekS(addr,len,#PB_Ascii)
					addr+Len(compare$)
					
					If file$=compare$
						addr+1 ; skip string len
						vDBin_Size=PeekL(addr)
						addr+4
						vDBin_Compressed=PeekL(addr)
						addr+4
						vDBin_CRC=PeekL(addr)
						addr+4
						result=memory
						Break
					EndIf
				EndIf
			EndIf
		Until Not memory
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_OriginalSize(string$,file$)
	If DBin_FindFile(string$,file$)
		ProcedureReturn vDBin_Size
	Else
		ProcedureReturn 0
	EndIf
EndProcedure

Procedure DBin_MemOriginalSize(memory,file$)
	If DBin_MemFindFile(memory,file$)
		ProcedureReturn vDBin_Size
	Else
		ProcedureReturn 0
	EndIf
EndProcedure

Procedure DBin_CompressedSize(string$,file$)
	If DBin_FindFile(string$,file$)
		ProcedureReturn vDBin_Compressed
	Else
		ProcedureReturn 0
	EndIf
EndProcedure

Procedure DBin_MemCompressedSize(memory,file$)
	If DBin_MemFindFile(memory,file$)
		ProcedureReturn vDBin_Compressed
	Else
		ProcedureReturn 0
	EndIf
EndProcedure

Procedure DBin_SaveFile(string$,file$,save$)
	result=#False
	pos=DBin_FindFile(string$,file$)
	If pos
		dest=AllocateMemory(vDBin_Size)
		If dest
			file=ReadFile(#PB_Any,string$)
			If file
				FileSeek(file,pos)
				If vDBin_Compressed
					source=AllocateMemory(vDBin_Compressed)
					If source
						If ReadData(file,source,vDBin_Compressed)=vDBin_Compressed
							UnpackMemory(source,dest)
							FreeMemory(source)
							result=#True
						EndIf
					EndIf
				Else
					If ReadData(file,dest,vDBin_Size)=vDBin_Size
						result=#True
					EndIf
				EndIf
				CloseFile(file)
				If result
					result=#False
					file=CreateFile(#PB_Any,save$)
					If file
						WriteData(file,dest,vDBin_Size)
						CloseFile(file)
						result=#True
					EndIf
				EndIf
			EndIf
			FreeMemory(dest)
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_MemSaveFile(memory,file$,save$)
	result=#False
	pos=DBin_MemFindFile(memory,file$)
	If pos
		dest=AllocateMemory(vDBin_Size)
		If dest
			If vDBin_Compressed
				UnpackMemory(pos,dest)
			Else
				CopyMemory(pos,dest,vDBin_Size)
			EndIf
			result=#False
			file=CreateFile(#PB_Any,save$)
			If file
				WriteData(file,dest,vDBin_Size)
				CloseFile(file)
				result=#True
			EndIf
			FreeMemory(dest)
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_(string$,file$)
	result=#False
	pos=DBin_FindFile(string$,file$)
	If pos
		dest=AllocateMemory(vDBin_Size)
		If dest
			file=ReadFile(#PB_Any,string$)
			If file
				FileSeek(file,pos)
				If vDBin_Compressed
					source=AllocateMemory(vDBin_Compressed)
					If source
						If ReadData(file,source,vDBin_Compressed)=vDBin_Compressed
							UnpackMemory(source,dest)
							FreeMemory(source)
							result=dest
						EndIf
					EndIf
				Else
					If ReadData(file,dest,vDBin_Size)=vDBin_Size
						result=dest
					EndIf
				EndIf
				CloseFile(file)
			EndIf
			If result=#False
				FreeMemory(dest)
			EndIf
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_Mem(memory,file$)
	result=#False
	pos=DBin_MemFindFile(memory,file$)
	If pos
		result=AllocateMemory(vDBin_Size)
		If result
			If vDBin_Compressed
				UnpackMemory(pos,result)
			Else
				CopyMemory(pos,result,vDBin_Size)
			EndIf
		EndIf
	EndIf
	ProcedureReturn result
EndProcedure

Procedure DBin_Free(mem)
	ProcedureReturn FreeMemory(mem)
EndProcedure

You make a dbin file, then either keep it seperate, copy to the end of an exe or if you use the new memory commands then you can includebinary it (very useful).

You can find a help file with the pbosl stuff. The new commands are the same as the old ones, but put 'DBin_Mem' in front rather than 'DBin_' - it has been tested on unicode and normal compiles.

Re: PureBasic Recycle Library

Posted: Wed Aug 03, 2011 3:50 pm
by Env
DoubleDutch wrote:Here is the dbin code:
You make a dbin file, then either keep it seperate, copy to the end of an exe or if you use the new memory commands then you can includebinary it (very useful).

You can find a help file with the pbosl stuff. The new commands are the same as the old ones, but put 'DBin_Mem' in front rather than 'DBin_' - it has been tested on unicode and normal compiles.

Thanks :), I will have to adapt it to ensure it follows guidelines on explicit declarations etc etc, if that's ok with you?

Re: PureBasic Recycle Library

Posted: Wed Aug 03, 2011 6:15 pm
by DoubleDutch
Yep, no problem.

Re: PureBasic Recycle Library

Posted: Thu Aug 04, 2011 3:08 pm
by Env
Ok.. Revision 2 is starting to get very big, and is taking up a lot of my free time... Any more contributions would be much appreciated!

Focus is currently on routines for processing File System Paths (i.e. Making a path relevant, etc.)

Re: PureBasic Recycle Library

Posted: Tue Aug 09, 2011 1:46 am
by Env
Progress a little slow after I have been seriously ill the past week, but rest assure it, it'll continue soon.


On that note, if anyone is interested in assisting with the development and maintenance.. please do get in contact.

Re: PureBasic Recycle Library

Posted: Wed Aug 10, 2011 6:20 pm
by Zach
I just wanted to say I like the idea of this project.. It sounds like building a library Similar to STL for C/C++ and such languages.

Having a Standard Library like that would be nice, especially for tasks that are either repetitive, or perhaps some of the more complex tasks that some people are really skilled at, but the rest of us suck at trying to do :P

Re: PureBasic Recycle Library

Posted: Thu Aug 11, 2011 8:47 pm
by Env
Zach wrote:I just wanted to say I like the idea of this project.. It sounds like building a library Similar to STL for C/C++ and such languages.

Having a Standard Library like that would be nice, especially for tasks that are either repetitive, or perhaps some of the more complex tasks that some people are really skilled at, but the rest of us suck at trying to do :P
Thanks, and yeah this was heavily inspired by such libraries as Boost for C++, which contains a plethora of reusable libraries... and with all the bits of source code floating around such places as this forum, and CodeArchiv, I figured it would be quite useful to people if a singular library of source code which can be dumped in the PureBasic directory exists, containing standardised code in which they can use in any project without making adjustments.

Either way, progress is slowly beginning to pick up again as I get back to normal health... Revision 2 should be along soon..