Contents
Syntax
									The syntax for 
struct{options}(name)
{
	//struct block
}
				
@struct{options}(name)
{
	//struct block
}
				Description
									The 
									Note: 
@struct(s)
{
	# struct block
}!
				Options
									The following options are available for 
| option | description | 
|---|---|
| struct block uses  | 
											|
| struct block uses  | 
											|
| parse struct block at definition time | |
| option | description | 
f++ example
									Examples of 
struct(circle)
{
	if(params.size() != 2)
		error("circle: expected 2 parameters, got $[params.size]")
	:=(int, $[params.name].radius = params.at(0))
	:=(string, $[params.name].colour = params.at(1))
}
:=(circle, c(2, "fluro green"))
console("radius: ", c.radius)
console("colour: ", c.colour)
				
struct(pair)
{
	if(types.size() != 2)
		error("pair: expected 2 types, got types.size()")
	if(params.size() != 2)
		error("pair: expected 2 parameters, got params.size()")
	:=(types.at(0), $[params.name].first = params.at(0))
	:=(types.at(1), $[params.name].second = params.at(1))
}
:=(pair<int, string>, p(10, "hello, world!"))
console("p.first: ", p.first)
console("p.second: ", p.second)
				
struct(vector)
	if(params.size() != 2)
		error("vector: expected 2 parameters, got ", params.size())
	int $[params.name].size = params.at(0)
	for{!s}(int i=0; i<$[params.name].size; i+=1; forget(i))
		"types.at(0)" $[params.name][$[i]](params.at(1))
	function{pb}($[params.name].str)
		join($[params.name], " ")
	function{pb}($[params.name].print)
		console($[params.name].str())
	function{pb, !s}($[params.name].push_back)
		"@types.at(0)" $[params.name][\$[$[params.name].size]](params.at(0))
		++($[params.name].size)
	function{pb}($[params.name].pop_back)
		--($[params.name].size)
		forget($[params.name][\$[$[params.name].size]])
			
vector<int> v(5, 4);
v.push_back(32);
console(v.str())
console(v.size)
v.pop_back();
console(v.str())
console(v.size)
				n++ example
									Examples of 
@struct(circle)
{
	if(params.size() != 2)
		error("circle: expected 2 parameters, got $[params.size]")
	:=(int, $[params.name].radius = params.at(0))
	:=(string, $[params.name].colour = params.at(1))
}
@:=(circle, c(2, "fluro green"))
@console("radius: ", c.radius)
@console("colour: ", c.colour)
				
@struct(pair)
{
	if(types.size() != 2)
		error("pair: expected 2 types, got types.size()")
	if(params.size() != 2)
		error("pair: expected 2 parameters, got params.size()")
	:=(types.at(0), $[params.name].first = params.at(0))
	:=(types.at(1), $[params.name].second = params.at(1))
}
@:=(pair<int, string>, p(10, "hello, world!"))
@console("p.first: ", p.first)
@console("p.second: ", p.second)
				
![[ports] (FreeBSD) Get it from the FreeBSD [ports]](../../images/freebsd.webp)
