186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include "EXTERN.h"
286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include "perl.h"
386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include "XSUB.h"
486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#include "ClearSilver.h"
686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project/* #define DEBUG_MODE 1
886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project */
986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
1086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projecttypedef struct {
1186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  HDF*      hdf;
1286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  NEOERR* err;
1386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project} perlHDF;
1486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
1586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projecttypedef struct {
1686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  CSPARSE* cs;
1786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  NEOERR* err;
1886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project} perlCS;
1986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
2086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projecttypedef perlHDF* ClearSilver__HDF;
2186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projecttypedef perlCS* ClearSilver__CS;
2286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
2386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectstatic char* g_sort_func_name;
2486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
2586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectstatic void debug(char* fmt, ...)
2686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project{
2786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#ifdef DEBUG_MODE
2886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  va_list argp;
2986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  va_start(argp, fmt);
3086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  vprintf(fmt, argp);
3186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  va_end(argp);
3286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project#endif
3386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project}
3486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
3586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectstatic NEOERR *output (void *ctx, char *s)
3686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project{
3786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  sv_catpv((SV*)ctx, s);
3886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
3986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  return STATUS_OK;
4086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project}
4186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
4286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectstatic int sortFunction(const void* in_a, const void* in_b)
4386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project{
4486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  HDF** hdf_a;
4586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  HDF** hdf_b;
4686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  perlHDF a, b;
4786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  SV* sv_a;
4886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  SV* sv_b;
4986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  int count;
5086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  int ret;
5186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
5286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  dSP;
5386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
5486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  hdf_a = (HDF**)in_a;
5586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  hdf_b = (HDF**)in_b;
5686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
5786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  /* convert to a type Perl can access */
5886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  a.hdf = *hdf_a;
5986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  a.err = STATUS_OK;
6086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  b.hdf = *hdf_b;
6186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  b.err = STATUS_OK;
6286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
6386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  ENTER;
6486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  SAVETMPS;
6586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
6686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  PUSHMARK(SP);
6786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  sv_a = sv_newmortal();
6886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  sv_setref_pv(sv_a, "ClearSilver::HDF", (void*)&a);
6986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
7086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  sv_b = sv_newmortal();
7186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  sv_setref_pv(sv_b, "ClearSilver::HDF", (void*)&b);
7286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
7386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  XPUSHs(sv_a);
7486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  XPUSHs(sv_b);
7586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
7686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  PUTBACK;
7786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
7886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  count = call_pv(g_sort_func_name, G_SCALAR);
7986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  SPAGAIN;
8186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  if (count != 1)
8386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    croak("Big trouble\n");
8486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  PUTBACK;
8686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  ret = POPi;
8886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
8986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  FREETMPS;
9086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  LEAVE;
9186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project  return ret;
9386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project}
9486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
9986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectMODULE = ClearSilver		PACKAGE = ClearSilver::HDF	PREFIX = perlhdf_
10086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
10186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectClearSilver::HDF
10286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_new(self)
10386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        char* self
10486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
10586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver__HDF hdf;
10686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
10786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	debug("%s\n", self);
10886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	hdf = (ClearSilver__HDF)malloc(sizeof(perlHDF));
10986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	if (!hdf) {
11086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  RETVAL = NULL;
11186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} else {
11286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  hdf->err = hdf_init(&(hdf->hdf));
11386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  RETVAL = hdf;
11486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	}
11586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
11686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
11786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
11886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectvoid
11986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_DESTROY(hdf)
12086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        ClearSilver::HDF hdf;
12186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
12286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        debug("hdf_DESTROY:%x\n", hdf);
12386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        hdf_destroy(&(hdf->hdf));
12486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
12586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
12686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
12786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_setValue(hdf, key, value)
12886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf
12986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* key
13086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* value
13186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
13286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        hdf->err = hdf_set_value(hdf->hdf, key, value);
13386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	if (hdf->err == STATUS_OK) {
13486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = 0;
13586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} else {
13686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = 1;
13786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	}
13886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
13986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
14086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
14186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
14286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectchar*
14386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_getValue(hdf, key, default_value)
14486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf
14586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* key
14686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* default_value
14786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
14886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL = hdf_get_value(hdf->hdf, key, default_value);
14986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
15086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
15186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
15286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
15386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
15486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_copy(hdf, name, src);
15586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        ClearSilver::HDF hdf
15686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        char* name
15786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        ClearSilver::HDF src
15886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
15986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        hdf->err = hdf_copy(hdf->hdf, name, src->hdf);
16086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        if (hdf->err == STATUS_OK) {
16186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            RETVAL = 0;
16286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        } else {
16386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            RETVAL = 1;
16486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        }
16586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
16686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
16786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
16886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
16986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_readFile(hdf, filename)
17086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf
17186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* filename
17286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
17386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        hdf->err = hdf_read_file(hdf->hdf, filename);
17486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	if (hdf->err == STATUS_OK) {
17586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = 1;
17686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} else {
17786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = 0;
17886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	}
17986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
18086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
18186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
18286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
18386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_writeFile(hdf, filename)
18486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       ClearSilver::HDF hdf
18586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       char* filename
18686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
18786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        hdf->err = hdf_write_file(hdf->hdf, filename);
18886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       if (hdf->err == STATUS_OK) {
18986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project           RETVAL = 1;
19086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       } else {
19186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project           RETVAL = 0;
19286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       }
19386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
19486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
19586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
19686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectClearSilver::HDF
19786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_getObj(hdf, name)
19886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
19986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* name
20086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
20186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	HDF* tmp_hdf;
20286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	perlHDF* perlhdf;
20386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
20486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	do {
20586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    tmp_hdf = hdf_get_obj(hdf->hdf, name);
20686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!tmp_hdf) {
20786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
20886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		break;
20986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
21086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    perlhdf = (perlHDF*)malloc(sizeof(perlHDF));
21186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!perlhdf) {
21286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
21386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        break;
21486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
21586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            perlhdf->hdf = tmp_hdf;
21686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    perlhdf->err = STATUS_OK;
21786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = perlhdf;
21886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} while (0);
21986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
22086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
22186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
22286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectClearSilver::HDF
22386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_objChild(hdf)
22486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
22586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
22686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	HDF* tmp_hdf;
22786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	perlHDF* child;
22886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
22986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	do {
23086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    tmp_hdf = hdf_obj_child(hdf->hdf);
23186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!tmp_hdf) {
23286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
23386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		break;
23486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
23586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    child = (perlHDF*)malloc(sizeof(perlHDF));
23686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!child) {
23786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
23886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        break;
23986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
24086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            child->hdf = tmp_hdf;
24186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    child->err = STATUS_OK;
24286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = child;
24386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} while (0);
24486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
24586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
24686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
24786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
24886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectClearSilver::HDF
24986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_getChild(hdf, name)
25086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
25186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* name;
25286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
25386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	HDF* tmp_hdf;
25486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	perlHDF* child;
25586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
25686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	do {
25786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    tmp_hdf = hdf_get_child(hdf->hdf, name);
25886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!tmp_hdf) {
25986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
26086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		break;
26186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
26286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    child = (perlHDF*)malloc(sizeof(perlHDF));
26386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!child) {
26486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
26586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        break;
26686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
26786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            child->hdf = tmp_hdf;
26886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    child->err = STATUS_OK;
26986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = child;
27086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} while (0);
27186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
27286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
27386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
27486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectchar*
27586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_objValue(hdf)
27686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
27786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
27886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	RETVAL = hdf_obj_value(hdf->hdf);
27986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
28086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
28186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
28286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectchar*
28386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_objName(hdf)
28486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
28586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
28686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	RETVAL = hdf_obj_name(hdf->hdf);
28786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
28886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
28986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
29086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectClearSilver::HDF
29186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_objNext(hdf)
29286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
29386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
29486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	HDF* tmp_hdf;
29586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	perlHDF* next;
29686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
29786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	do {
29886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    tmp_hdf = hdf_obj_next(hdf->hdf);
29986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!tmp_hdf) {
30086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = NULL;
30186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		break;
30286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
30386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    next = (perlHDF*)malloc(sizeof(perlHDF));
30486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!next) {
30586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	      RETVAL = NULL;
30686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	      break;
30786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            }
30886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    next->hdf = tmp_hdf;
30986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    next->err = STATUS_OK;
31086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = next;
31186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} while (0);
31286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
31386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
31486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
31586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
31686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_sortObj(hdf, func_name)
31786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
31886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* func_name;
31986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
32086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        NEOERR* err;
32186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
32286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	g_sort_func_name = func_name;
32386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        err = hdf_sort_obj(hdf->hdf, sortFunction);
32486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL = 0;
32586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
32686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
32786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
32886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
32986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
33086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_setSymlink(hdf, src, dest)
33186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
33286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* src;
33386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* dest;
33486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
33586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	NEOERR* err;
33686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
33786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project      	err = hdf_set_symlink (hdf->hdf, src, dest);
33886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	if (err == STATUS_OK) {
33986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	    RETVAL = 1;
34086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	} else {
34186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	    RETVAL = 0;
34286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	}
34386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
34486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
34586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
34686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
34786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
34886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlhdf_removeTree(hdf, name)
34986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::HDF hdf;
35086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* name;
35186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
35286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        NEOERR* err;
35386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
35486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        err = hdf_remove_tree(hdf->hdf, name);
35586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	if (err == STATUS_OK) {
35686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	    RETVAL = 1;
35786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	} else {
35886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	    RETVAL = 0;
35986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       	}
36086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
36186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
36286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
36386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
36486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectMODULE = ClearSilver		PACKAGE = ClearSilver::CS	PREFIX = perlcs_
36586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
36686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source ProjectClearSilver::CS
36786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlcs_new(self, hdf)
36886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* self
36986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        ClearSilver::HDF hdf;
37086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
37186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        perlCS* cs;
37286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
37386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	cs = (perlCS*)malloc(sizeof(perlCS));
37486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	if (!cs) {
37586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  RETVAL = NULL;
37686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} else {
37786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  cs->err = cs_init(&(cs->cs), hdf->hdf);
37886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  if (cs->err == STATUS_OK) {
37986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    cs->err = cgi_register_strfuncs(cs->cs);
38086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  }
38186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  RETVAL = cs;
38286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	}
38386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
38486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
38586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
38686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectvoid
38786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlcs_DESTROY(cs)
38886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::CS cs;
38986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
39086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	debug("perlcs_DESTROY() is called\n");
39186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	cs_destroy(&(cs->cs));
39286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
39386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectvoid
39486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlcs_displayError(cs)
39586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::CS cs;
39686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
39786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	nerr_log_error(cs->err);
39886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
39986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectchar *
40086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlcs_render(cs)
40186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	ClearSilver::CS cs
40286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
40386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    {
40486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	SV *str = newSV(0);
40586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	cs->err = cs_render(cs->cs, str, output);
40686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	if (cs->err == STATUS_OK) {
40786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  ST(0) = sv_2mortal(str);
40886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	} else {
40986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  SvREFCNT_dec(str);
41086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	  ST(0) = &PL_sv_undef;
41186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	}
41286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	XSRETURN(1);
41386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    }
41486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
41586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
41686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlcs_parseFile(cs, cs_file)
41786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        ClearSilver::CS cs
41886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* cs_file
41986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
42086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	do {
42186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    cs->err =  cs_parse_file(cs->cs, cs_file);
42286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (cs->err != STATUS_OK) {
42386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        cs->err = nerr_pass(cs->err);
42486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		RETVAL = 0;
42586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		break;
42686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
42786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = 1;
42886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        } while (0);
42986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
43086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
43186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
43286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectint
43386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Projectperlcs_parseString(cs, in_str)
43486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        ClearSilver::CS cs
43586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* in_str
43686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    PREINIT:
43786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	char* cs_str;
43886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	int len;
43986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    CODE:
44086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	do {
44186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    len = strlen(in_str);
44286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    cs_str = (char *)malloc(len);
44386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (!cs_str) {
44486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	        RETVAL = 0;
44586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		break;
44686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    }
44786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    strcpy(cs_str, in_str);
44886abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project            cs->err =  cs_parse_string(cs->cs, cs_str, len);
44986abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    if (cs->err != STATUS_OK)
45086abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project		RETVAL = 0;
45186abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project	    RETVAL = 1;
45286abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project       } while (0);
45386abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project    OUTPUT:
45486abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project        RETVAL
45586abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
45686abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
45786abe4b9898668901b812fa6c1eaa38cb34989e2The Android Open Source Project
458