---
name: "struct_map"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/struct_map"
---

# struct\_map(3tcl)

Manage key/value maps

```

```

## NAME

struct::map - Manage key/value maps

## SYNOPSIS

package require **struct::map ?1?**

**::struct::map** *mapName*

**mapName** **method** ?*arg arg ...*?

*mapName* **get**

*mapName* **names**

*mapName* **set** *name* ?*value*?

*mapName* **unset** ?*pattern*...?

```

```

## DESCRIPTION

Provides a snit class whose instances manage a key/value map. In other words, an object wrapper around Tcl arrays.

## API

The main command provides construction of maps:

- **::struct::map** *mapName*

  Creates a new, empty map with an associated global Tcl command whose name is *mapName*. It may be used to invoke various operations on the map. It has the following general form:

  - **mapName** **method** ?*arg arg ...*?

    **method** and *arg*uments determine the exact behavior of the command.

-

  If *mapName* is specified as **%AUTO%** a unique name will be generated by the package itself. The result of the command is the fully-qualified name of the instance command.

The following commands are possible for map objects:

- *mapName* **get**

  Returns the entire map as a Tcl dictionary.

- *mapName* **names**

  Returns the list of all keys known to the map, in arbitrary order.

- *mapName* **set** *name* ?*value*?

  Sets key *name* to the specified *value*, if the value specified. Returns the value for the key. Throws an error if the key is not known.

- *mapName* **unset** ?*pattern*...?

  Removes all keys matching at least one of the glob *pattern*s from the map. If no pattern is specified all keys are removed. In other words, the default pattern is **\***. The result of the command is the empty string.

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *struct :: list* of the *Tcllib Trackers* \[http://core.tcl.tk/tcllib/reportlist\]. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide *unified diffs*, i.e the output of **diff -u**.

Note further that *attachments* are strongly preferred over inlined patches. Attachments can be made by going to the **Edit** form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.
