Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,89 @@
' FB 1.05.0 Win64
' queue_rosetta.bi
' simple generic Queue type
#Define Queue(T) Queue_##T
#Macro Declare_Queue(T)
Type Queue(T)
Public:
Declare Constructor()
Declare Destructor()
Declare Property capacity As Integer
Declare Property count As Integer
Declare Property empty As Boolean
Declare Property front As T
Declare Function pop() As T
Declare Sub push(item As T)
Private:
a(any) As T
count_ As Integer = 0
Declare Function resize(size As Integer) As Integer
End Type
Constructor Queue(T)()
Redim a(0 To 0) '' create a default T instance for various purposes
End Constructor
Destructor Queue(T)()
Erase a
End Destructor
Property Queue(T).capacity As Integer
Return UBound(a)
End Property
Property Queue(T).count As Integer
Return count_
End Property
Property Queue(T).empty As Boolean
Return count_ = 0
End Property
Property Queue(T).front As T
If count_ > 0 Then
Return a(1)
End If
Print "Error: Attempted to access 'front' element of an empty queue"
Return a(0) '' return default element
End Property
Function Queue(T).pop() As T
If count_ > 0 Then
Dim value As T = a(1)
If count_ > 1 Then '' move remaining elements to fill space vacated
For i As Integer = 2 To count_
a(i - 1) = a(i)
Next
End If
a(count_) = a(0) '' zero last element
count_ -= 1
Return value
End If
Print "Error: Attempted to remove 'front' element of an empty queue"
Return a(0) '' return default element
End Function
Sub Queue(T).push(item As T)
Dim size As Integer = UBound(a)
count_ += 1
If count_ > size Then
size = resize(size)
Redim Preserve a(0 to size)
End If
a(count_) = item
End Sub
Function Queue(T).resize(size As Integer) As Integer
If size = 0 Then
size = 4
ElseIf size <= 32 Then
size = 2 * size
Else
size += 32
End If
Return size
End Function
#EndMacro

View file

@ -0,0 +1,53 @@
' FB 1.05.0 Win64
#Include "queue_rosetta.bi"
Type Cat
name As String
age As Integer
Declare Constructor
Declare Constructor(name_ As string, age_ As integer)
Declare Operator Cast() As String
end type
Constructor Cat '' default constructor
End Constructor
Constructor Cat(name_ As String, age_ As Integer)
name = name_
age = age_
End Constructor
Operator Cat.Cast() As String
Return "[" + name + ", " + Str(age) + "]"
End Operator
Declare_Queue(Cat) '' expand Queue type for Cat instances
Dim CatQueue As Queue(Cat)
Var felix = Cat("Felix", 8)
Var sheba = Cat("Sheba", 4)
Var fluffy = Cat("Fluffy", 2)
With CatQueue '' push these Cat instances into the Queue
.push(felix)
.push(sheba)
.push(fluffy)
End With
Print "Number of Cats in the Queue :" ; CatQueue.count
Print "Capacity of Cat Queue :" ; CatQueue.capacity
Print "Front Cat : "; CatQueue.front
CatQueue.pop()
Print "Front Cat now : "; CatQueue.front
Print "Number of Cats in the Queue :" ; CatQueue.count
CatQueue.pop()
Print "Front Cat now : "; CatQueue.front
Print "Number of Cats in the Queue :" ; CatQueue.count
Print "Is Queue empty now : "; CatQueue.empty
catQueue.pop()
Print "Number of Cats in the Queue :" ; CatQueue.count
Print "Is Queue empty now : "; CatQueue.empty
catQueue.pop()
Print
Print "Press any key to quit"
Sleep