- int32_t bam_aux_geti(bam1_t *b, const char tag[2], int *err);
- float bam_aux_getf(bam1_t *b, const char tag[2], int *err);
- char bam_aux_getc(bam1_t *b, const char tag[2], int *err);
- char *bam_aux_getZH(bam1_t *b, const char tag[2], int *err);
- void bam_aux_destroy(bam1_t *b);
+ /**************************
+ * APIs for optional tags *
+ **************************/
+
+ /*!
+ @abstract Retrieve data of a tag
+ @param b pointer to an alignment struct
+ @param tag two-character tag to be retrieved
+
+ @return pointer to the type and data. The first character is the
+ type that can be 'iIsScCdfAZH'.
+
+ @discussion Use bam_aux2?() series to convert the returned data to
+ the corresponding type.
+ */
+ uint8_t *bam_aux_get(const bam1_t *b, const char tag[2]);
+
+ int32_t bam_aux2i(const uint8_t *s);
+ float bam_aux2f(const uint8_t *s);
+ double bam_aux2d(const uint8_t *s);
+ char bam_aux2A(const uint8_t *s);
+ char *bam_aux2Z(const uint8_t *s);
+
+ int bam_aux_del(bam1_t *b, uint8_t *s);
+ void bam_aux_append(bam1_t *b, const char tag[2], char type, int len, uint8_t *data);
+ uint8_t *bam_aux_get_core(bam1_t *b, const char tag[2]); // an alias of bam_aux_get()
+
+
+ /*****************
+ * Miscellaneous *
+ *****************/