#### Description:

This function modifies a Moc by combining it with the MOC described by the supplied string - assumed to be encoded using either the string or JSON serialisation described in the MOC recommendation. The way in which they are combined is determined by the `"` cmode`"` parameter.

#### Synopsis

void astAddMocString( AstMoc ∗this, int cmode, int negate, int maxorder, size_t len, const char∗string, int ∗json );

#### Parameters:

##### this

Pointer to the Moc to be modified.

##### cmode

Indicates how the supplied MOC is to be combined with the existing Moc. Any of the following values may be supplied:

- AST__AND: The modified Moc is the intersection of the original Moc and the sipplied MOC.

- AST__OR: The modified Moc is the union of the original Moc and the supplied MOC.

- AST__XOR: The modified Moc is the exclusive disjunction of the original Moc and the supplied MOC.

##### negate

If non-zero, the cells added to the existing Moc will be those included in the supplied MOC. If zero, the cells added to the existing Moc will be those not included in the supplied MOC.

##### maxorder

The maximum HEALPix order to use. If a negative value is supplied, the maximum order will be determined by searching the supplied MOC (this will take extra time). In either case, if a value has already been set for the MaxOrder attribute in the Moc, then the attribute value is used in preference to the value supplied for this parameter. Any HEALPix cells in the supplied MOC that refer to an order greater than `"` maxorder`"` are ignored.

##### len

The number of characters to read from the supplied string. If this is greater than the length of the string, it is ignored and the whole string is read.

##### string

Pointer to the array of characters holding the supplied MOC. It should be encoded using either the string or JSON serialisation described in the MOC recommendation. The used serialisation is determined from the first non-blank character, which should be either a curly brace (`’` {`’` - JSON serialisation) or a digit (string serialisation).

##### json

Pointer to an int in which to return a boolean flag indicating if the supplied string was interpreted using the JSON (non-zero) or string (zero) serialisation.

#### Notes:

- If no value has yet been set for attribute MaxOrder, then this function will automatically set it to the value supplied for `"` Maxorder`"` , or to the largest order present in the supplied string MOC if `"` Maxorder`"` is negative.

Copyright (C) 2021 East Asian Observatory