https://github.com/cran/spatstat
Tip revision: 908b22c6a5d1f38ed00b44c11d7a7166eeeecaa3 authored by Adrian Baddeley on 10 August 2010, 14:17:18 UTC
version 1.20-2
version 1.20-2
Tip revision: 908b22c
getcif.c
#include <R.h>
#include "methas.h"
void fexitc(const char *msg);
extern Cifns AreaIntCifns, BadGeyCifns, DgsCifns, DiggraCifns,
FikselCifns, GeyerCifns, HardcoreCifns,
LennardCifns, LookupCifns,
SoftcoreCifns, StraussCifns, StraussHardCifns,
MultiStraussCifns, MultiStraussHardCifns;
Cifns NullCifns = NULL_CIFNS;
typedef struct CifPair {
char *name;
Cifns *p;
} CifPair;
CifPair CifTable[] = {
{"areaint", &AreaIntCifns},
{"badgey", &BadGeyCifns},
{"dgs", &DgsCifns},
{"diggra", &DiggraCifns},
{"geyer", &GeyerCifns},
{"fiksel", &FikselCifns},
{"hardcore", &HardcoreCifns},
{"lookup", &LookupCifns},
{"lennard", &LennardCifns},
{"sftcr", &SoftcoreCifns},
{"strauss", &StraussCifns},
{"straush", &StraussHardCifns},
{"straussm", &MultiStraussCifns},
{"straushm", &MultiStraussHardCifns},
{(char *) NULL, (Cifns *) NULL}
};
Cifns getcif(cifname)
char *cifname;
{
int i;
CifPair cp;
for(i = 0; CifTable[i].name; i++) {
cp = CifTable[i];
if(strcmp(cifname, cp.name) == 0)
return(*(cp.p));
}
fexitc("Unrecognised cif name; bailing out.\n");
/* control never passes to here, but compilers don't know that */
return(NullCifns);
}
/* R interface function, to check directly whether cif is recognised */
void knownCif(cifname, answer)
char** cifname;
int* answer;
{
int i;
CifPair cp;
for(i = 0; CifTable[i].name; i++) {
cp = CifTable[i];
if(strcmp(*cifname, cp.name) == 0) {
*answer = 1;
return;
}
}
*answer = 0;
return;
}