#ifndef __TS_COMMON_H__
#define __TS_COMMON_H__
#include "postgres.h"
#include "fmgr.h"

#ifndef PG_NARGS
#define PG_NARGS() (fcinfo->nargs)
#endif

text	   *char2text(char *in);
text	   *charl2text(char *in, int len);
char	   *text2char(text *in);
char	   *pnstrdup(char *in, int len);
text	   *ptextdup(text *in);
text	   *mtextdup(text *in);

int			text_cmp(text *a, text *b);

#define NEXTVAL(x) ( (text*)( (char*)(x) + INTALIGN( VARSIZE(x) ) ) )
#define ARRNELEMS(x)  ArrayGetNItems( ARR_NDIM(x), ARR_DIMS(x))

void		ts_error(int state, const char *format,...);

extern Oid TSNSP_FunctionOid; /* oid of called function, needed only for determ namespace, no more */
char* get_namespace(Oid funcoid);
Oid get_oidnamespace(Oid funcoid);

#define SET_FUNCOID()   do {                                            \
        if ( fcinfo->flinfo && fcinfo->flinfo->fn_oid != InvalidOid )   \
                TSNSP_FunctionOid = fcinfo->flinfo->fn_oid;                   \
} while(0)

#endif