# typedef MetaAccess

#### package haxe.macro

#### import haxe.macro.Type

Available on Neko

MetaAccess is a wrapper for the `Metadata` array. It can be used to add metadata to and remove metadata from its origin.

### Properties

###

`add (name:String, params:Array<Expr>, pos:Position):Void`

Adds the metadata specified by `name`, `params` and `pos` to the origin of `this` MetaAccess.

Metadata names are not unique during compilation, so this method never overwrites a previous metadata.

If a `Metadata` array is obtained through a call to `get`, a subsequent call to `add` has no effect on that array.

If any argument is null, compilation fails with an error.

###

`extract (name:String):Array<MetadataEntry>`

Extract metadata entries by given `name`.

If there's no metadata with such name, empty array `[]` is returned.

If `name` is null, compilation fails with an error.

###

`get ():Metadata`

Return the wrapped `Metadata` array.

Modifying this array has no effect on the origin of `this` MetaAccess. The `add` and `remove` methods can be used for that.

###

`has (name:String):Bool`

Tells if the origin of `this` MetaAccess has a `name` metadata entry.

If `name` is null, compilation fails with an error.

###

`remove (name:String):Void`

Removes all `name` metadata entries from the origin of `this` MetaAccess.

This method might clear several metadata entries of the same name.

If a `Metadata` array is obtained through a call to `get`, a subsequent call to `remove` has no effect on that array.

If `name` is null, compilation fails with an error.