---
name: "VistaIOInsertAttr"
section: "3"
platform: "linux"
package: "libvistaio-dev"
version: "1.2.19-3+b2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/VistaIOInsertAttr"
---

# VistaIOInsertAttr(3)

add an attribute to a list

## NAME

VistaIOInsertAttr, VistaIOAppendAttr, VistaIOPrependAttr - add an attribute to a list

## SYNOPSIS

```
void VistaIOInsertAttr (posn, after, name, dict, repn, value)
VistaIOAttrListPosn *posn;
VistaIOBoolean after;
VistaIOStringConst name;
VistaIODictEntry *dict;
VistaIORepnKind repn;
type value;
```

**void VistaIOAppendAttr (***list***,** *name***,** *dict***,** *repn***,** *value***)**

**VistaIOAttrList** *list***;** **VistaIOStringConst** *name***;** **VistaIODictEntry \****dict***;** **VistaIORepnKind** *repn***;** *type value***;**

**void VistaIOPrependAttr (***list***,** *name***,** *dict***,** *repn***,** *value***)**

**VistaIOAttrList** *list***;** **VistaIOStringConst** *name***;** **VistaIODictEntry \****dict***;** **VistaIORepnKind** *repn***;** *type value***;**

**where** *type* **is VistaIOBit, VistaIOUByte, VistaIOSByte, VistaIOShort,** **VistaIOLong, VistaIOFloat, VistaIODouble, VistaIOAttrList, VistaIOBoolean,** **VistaIOBundle, VistaIOList, VistaIOPointer, VistaIOString, VistaIOEdges,** **VistaIOImage, etc.**

## ARGUMENTS

- *posn*

  **Specifies the attribute list position at which a new attribute is to be**  **inserted.**

- *after*

  **Specifies whether a new attribute is to be inserted before** *posn* **(****FALSE** **) or after** *posn* **(****TRUE** **).**

- *list*

  **Specifies the attribute list to which a new attribute is to be appended**  **or prepended.**

- *name*

  **Specifies a name for the new attribute.**

- *dict*

  **May specify a dictionary to be used in translating the value supplied** **to a keyword that should be stored as the attribute's value, or it may be** **NULL**

- *repn*

  **Specifies the representation of the new attribute value.**

- *value*

  **Specifies the new attribute value.**

## DESCRIPTION

**These routines provide three ways of adding a new attribute to an**  **attribute list:**

- •

  **VistaIOInsertAttr inserts the new attribute immediately before or after the** **existing attribute specified by** *posn***.**

- •

  **VistaIOAppendAttr places the new attribute at the end of** *list***.**

- •

  **VistaIOPrependAttr places the new attribute at the beginning of** *list***.**

**With the** *dict* **argument you can provide a dictionary for mapping**  *value* **to a keyword that will be stored as the attribute's value (see**  **[VistaIOdictionary(3)](/VistaIOdictionary/3.md)). For example, if you pass an attribute value of 1**  **and a dictionary that associates the value 1 with the keyword ubyte**  **(as the dictionaryVistaIORepnDict does), then the string ubyte will**  **be stored as the attribute's value. Dictionaries may be used to map both**  **numeric values and strings to keywords. If you supply a dictionary but**  *value* **is not mentioned in that dictionary, then** *value* **itself**  **will be stored with the attribute.**

**If** *value* **is a number or a character string, the routine makes its own** **copy of the value as a character string for storing in the attribute. If,** **on the other hand,** *value* **is an attribute list, pointer, image, edge** **set, etc., then the routine stores a pointer in the attribute but it does** **not make a copy of the object pointed to.**

## RETURN VALUES

**As a side effect, these routines modify the attribute list referred to by** *list* **or** *posn***.**

## SEE ALSO

[**VistaIOSetAttr**(3)](/VistaIOSetAttr/3.md), **VistaIOSetAttrValue**(3),\
 [**VistaIOattribute**(3)](/VistaIOattribute/3.md), [**VistaIOdictionary**(3)](/VistaIOdictionary/3.md),

## AUTHOR

**Art Pope \<pope@cs.ubc.ca\>**

**Adaption to vistaio: Gert Wollny \<gw.fossdev@gmail.com\>**
