⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 array-of-strings.zc

📁 实现树形结构
💻 ZC
字号:
//[of]:description
//[c]Same as vector, but the string is owned by the array 
//[c](copied when added, deleted when removed)
//[cf]
//[of]:imports
public import "base/types"
public import "base/memory-allocator"
public import "collection/vector"
public import "text/vector-of-strings"
public import "text/string"
//[cf]
//[of]:structures
public struct array of strings : local vector of strings
end
//[cf]
//[c]
//[of]:instance creation
//[of]:new array of strings (initial allocated)
public equ new array of strings (initial allocated: size) =
	new vector (initial allocated) : array of strings
//[cf]
//[of]:new array of strings (vector of strings)
public equ new array of strings (src: vector of strings) = 
	new vector (src) : array of strings
//[cf]
//[of]:delete (v)
//[c]
public func delete (v: array of strings)
	release (v)
	free memory (v)
end
//[cf]
//[cf]
//[of]:intialize - release
//[of]:array of strings (initial allocated)
//[c]
public func array of strings (initial allocated: size, return v: array of strings)
	initialize (v, initial allocated)
end
//[cf]
//[of]:release (v)
//[c]
public func release (v: array of strings)

	each (v) ? s
		delete (s)
	end
	
	release (super (v))

end
//[cf]
//[cf]
//[of]:accessing
//[of]:set (a, index, value)
//[c]Changes the value at index
//[c]
public func set (a: array of strings, index: dword, value: string)

	// return if unchanged
	if value : mem  == a[index]
		return
	end
	
	delete (a[index])
	set (super (a), index, new string (value))

end
//[cf]
//[cf]
//[of]:adding - removing
//[of]:add (a, value, index)
//[c]Adds an element at index
//[c]
public func add (a: array of strings, value: string, index: dword)
	add (super (a), new string (value), index)
end
//[cf]
//[of]:add first (a, value)
//[c]Adds an element at the beginning
//[c]
public func add first (a: array of strings, value: string)

	add (a, value, 0)

end
//[cf]
//[of]:add (a, value)
//[c]
public equ add (a: array of strings, value: string) = append (a, value)
//[cf]
//[of]:append (a, value)
//[c]Appends an element
//[c]
public func append (a: array of strings, value: string)

	append (super (a), new string (value))

end
//[cf]
//[c]
//[of]:add substring (a, value, size, index)
//[c]Adds an element at index
//[c]
public func add substring (a: array of strings, value: string, size: size, index: dword)
	add (super (a), new string (value, size), index)
end
//[cf]
//[of]:add first substring (a, value, size)
//[c]Adds an element at the beginning
//[c]
public func add first substring (a: array of strings, value: string, size: size)

	add substring (a, value, size, 0)

end
//[cf]
//[of]:add substring (a, value, size)
//[c]
public equ add substring (a: array of strings, value: string, size: size) = append substring (a, value, size)
//[cf]
//[of]:append substring (a, value, size)
//[c]Appends an element
//[c]
public func append substring (a: array of strings, value: string, size: size)

	append (super (a), new string (value, size))

end
//[cf]
//[c]
//[of]:remove (a, index)
//[c]Removes an element at index
//[c]
public func remove (a: array of strings, index: dword)

	delete (a[index])
	remove (super (a), index)

end
//[cf]
//[of]:remove (a, value)
//[c]Removes an element
//[c]
public func remove (a: array of strings, value: string)

	def i = 0:d
	def n = size (a)
	while i < n
		if is equal (a[i], value)
			remove (a, i)
			return
		end
		++i
	end

end
//[cf]
//[of]:remove all (a)
//[c]Removes all elements
//[c]
public func remove all (a: array of strings)

	each (a) ? s
		delete (s)
	end
	size (a) = 0

end
//[cf]
//[cf]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -