-
Notifications
You must be signed in to change notification settings - Fork 115
structs.scad
This file provides manipulation of "structs". A "struct" is a data structure that associates arbitrary keys with values and allows you to get and set values by key.
To use, add the following lines to the beginning of your file:
include <BOSL2/std.scad>
-
Section: struct operations
-
struct_set()
– Sets one or more key-value pairs in a struct. -
struct_remove()
– Removes one or more keys from a struct. -
struct_val()
– Returns the value for an key in a struct. -
struct_keys()
– Returns a list of keys for a struct. -
echo_struct()
– Echoes the struct to the console in a formatted manner. -
is_struct()
– Returns true if the value is a struct.
-
Synopsis: Sets one or more key-value pairs in a struct.
Topics: Data Structures, Dictionaries
See Also: struct_remove(), struct_val(), struct_keys(), echo_struct(), is_struct()
Usage:
- struct2 = struct_set(struct, key, value, [grow=]);
- struct2 = struct_set(struct, [key1, value1, key2, value2, ...], [grow=]);
Description:
Sets the key(s) in the structure to the specified value(s), returning a new updated structure. If a
key exists its value is changed, otherwise the key is added to the structure. If grow=false
then
it is an error to set a key not already defined in the structure. If you specify the same key twice
that is also an error. Note that key order will change when you change a key's value.
Arguments:
By Position | What it does |
---|---|
struct |
input structure. |
key |
key to set or list of key,value pairs to set |
value |
value to set the key to (when giving a single key and value) |
By Name | What it does |
---|---|
grow |
Set to true to allow structure to grow, or false for new keys to generate an error. Default: true |
Example 1: Create a struct containing just one key-value pair
include <BOSL2/std.scad>
some_struct = struct_set([], "answer", 42);
// 'some_struct' now contains a single value, 42, under one key, "answer".
Example 2: Create a struct containing more than one key-value pair. Note that keys and values need not be the same type.
include <BOSL2/std.scad>
some_struct = struct_set([], ["answer", 42, 2, "two", "quote", "What a nice day"]);
// 'some struct' now contains these key-value pairs:
// answer: 42
// 2: two
// quote: What a nice day
Synopsis: Removes one or more keys from a struct.
Topics: Data Structures, Dictionaries
See Also: struct_set(), struct_val(), struct_keys(), echo_struct(), is_struct()
Usage:
- struct2 = struct_remove(struct, key);
Description:
Remove key or list of keys from a structure. If you want to remove a single key which is a list you must pass it as a singleton list, or struct_remove will attempt to remove the listed items as keys. If you list the same item multiple times for removal it will be removed without error.
Arguments:
By Position | What it does |
---|---|
struct |
input structure |
key |
a single key or list of keys to remove. |
Synopsis: Returns the value for an key in a struct.
Topics: Data Structures, Dictionaries
See Also: struct_set(), struct_remove(), struct_keys(), echo_struct(), is_struct()
Usage:
- val = struct_val(struct, key, default);
Description:
Returns the value for the specified key in the structure, or default value if the key is not present
Arguments:
By Position | What it does |
---|---|
struct |
input structure |
key |
key whose value to return |
default |
default value to return if key is not present. Default: undef |
Synopsis: Returns a list of keys for a struct.
Topics: Data Structures, Dictionaries
See Also: struct_set(), struct_remove(), struct_val(), echo_struct(), is_struct()
Usage:
- keys = struct_keys(struct);
Description:
Returns a list of the keys in a structure
Arguments:
By Position | What it does |
---|---|
struct |
input structure |
Synopsis: Echoes the struct to the console in a formatted manner.
Topics: Data Structures, Dictionaries
See Also: struct_set(), struct_remove(), struct_val(), struct_keys(), is_struct()
Usage:
- echo_struct(struct, [name]);
- foo = echo_struct(struct, [name]);
Description:
Displays a list of structure keys and values, one pair per line, for easier reading.
Arguments:
By Position | What it does |
---|---|
struct |
input structure |
name |
optional structure name to list at the top of the output. Default: "" |
Synopsis: Returns true if the value is a struct.
Topics: Data Structures, Dictionaries
See Also: struct_set(), struct_remove(), struct_val(), struct_keys(), echo_struct()
Usage:
- bool = is_struct(struct);
Description:
Returns true if the input is a list of pairs, false otherwise.
Table of Contents
Function Index
Topics Index
Cheat Sheet
Tutorials
Basic Modeling:
- constants.scad STD
- transforms.scad STD
- attachments.scad STD
- shapes2d.scad STD
- shapes3d.scad STD
- drawing.scad STD
- masks2d.scad STD
- masks3d.scad STD
- distributors.scad STD
- color.scad STD
- partitions.scad STD
- miscellaneous.scad STD
Advanced Modeling:
- paths.scad STD
- regions.scad STD
- skin.scad STD
- vnf.scad STD
- beziers.scad
- nurbs.scad
- rounding.scad
- turtle3d.scad
Math:
- math.scad STD
- linalg.scad STD
- vectors.scad STD
- coords.scad STD
- geometry.scad STD
- trigonometry.scad STD
Data Management:
- version.scad STD
- comparisons.scad STD
- lists.scad STD
- utility.scad STD
- strings.scad STD
- structs.scad STD
- fnliterals.scad
Threaded Parts:
Parts:
- ball_bearings.scad
- cubetruss.scad
- gears.scad
- hinges.scad
- joiners.scad
- linear_bearings.scad
- modular_hose.scad
- nema_steppers.scad
- polyhedra.scad
- sliders.scad
- tripod_mounts.scad
- walls.scad
- wiring.scad
STD = Included in std.scad