1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/* $Id: owsrequest.i,v 1.9 2006/08/29 01:56:53 sdlime Exp $ */
%rename(OWSRequest) cgiRequestObj;
%include "../../cgiutil.h"
/* Class for programming OWS services - SG */
%extend cgiRequestObj {
#if defined(SWIGJAVA) || defined(SWIGCSHARP)
cgiRequestObj()
#else
cgiRequestObj(void)
#endif
{
cgiRequestObj *request;
request = msAllocCgiObj();
if (!request) {
msSetError(MS_CGIERR, "Failed to initialize object","OWSRequest()");
return NULL;
}
request->ParamNames = (char **) malloc(MS_MAX_CGI_PARAMS*sizeof(char*));
request->ParamValues = (char **) malloc(MS_MAX_CGI_PARAMS*sizeof(char*));
if (request->ParamNames==NULL || request->ParamValues==NULL) {
msSetError(MS_MEMERR, NULL, "OWSRequest()");
return NULL;
}
return request;
}
#if defined(SWIGJAVA) || defined(SWIGCSHARP)
~cgiRequestObj()
#else
~cgiRequestObj(void)
#endif
{
msFreeCharArray(self->ParamNames, self->NumParams);
msFreeCharArray(self->ParamValues, self->NumParams);
free(self);
}
int loadParams()
{
self->NumParams = loadParams( self );
return self->NumParams;
}
void setParameter(char *name, char *value)
{
int i;
if (self->NumParams == MS_MAX_CGI_PARAMS) {
msSetError(MS_CHILDERR, "Maximum number of items, %d, has been reached", "setItem()", MS_MAX_CGI_PARAMS);
}
for (i=0; i<self->NumParams; i++) {
if (strcasecmp(self->ParamNames[i], name) == 0) {
free(self->ParamValues[i]);
self->ParamValues[i] = strdup(value);
break;
}
}
if (i == self->NumParams) {
self->ParamNames[self->NumParams] = strdup(name);
self->ParamValues[self->NumParams] = strdup(value);
self->NumParams++;
}
}
char *getName(int index)
{
if (index < 0 || index >= self->NumParams) {
msSetError(MS_CHILDERR, "Invalid index, valid range is [0, %d]", "getName()", self->NumParams-1);
return NULL;
}
return self->ParamNames[index];
}
char *getValue(int index)
{
if (index < 0 || index >= self->NumParams) {
msSetError(MS_CHILDERR, "Invalid index, valid range is [0, %d]", "getValue()", self->NumParams-1);
return NULL;
}
return self->ParamValues[index];
}
char *getValueByName(const char *name)
{
int i;
for (i=0; i<self->NumParams; i++) {
if (strcasecmp(self->ParamNames[i], name) == 0) {
return self->ParamValues[i];
}
}
return NULL;
}
}
|