should be it
This commit is contained in:
58
external/duckdb/third_party/snowball/runtime/api.cpp
vendored
Normal file
58
external/duckdb/third_party/snowball/runtime/api.cpp
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
|
||||
#include <stdlib.h> /* for calloc, free */
|
||||
#include "header.h"
|
||||
|
||||
extern struct SN_env * SN_create_env(int S_size, int I_size)
|
||||
{
|
||||
struct SN_env * z = (struct SN_env *) calloc(1, sizeof(struct SN_env));
|
||||
if (z == NULL) return NULL;
|
||||
z->p = create_s();
|
||||
if (z->p == NULL) goto error;
|
||||
if (S_size)
|
||||
{
|
||||
int i;
|
||||
z->S = (symbol * *) calloc(S_size, sizeof(symbol *));
|
||||
if (z->S == NULL) goto error;
|
||||
|
||||
for (i = 0; i < S_size; i++)
|
||||
{
|
||||
z->S[i] = create_s();
|
||||
if (z->S[i] == NULL) goto error;
|
||||
}
|
||||
}
|
||||
|
||||
if (I_size)
|
||||
{
|
||||
z->I = (int *) calloc(I_size, sizeof(int));
|
||||
if (z->I == NULL) goto error;
|
||||
}
|
||||
|
||||
return z;
|
||||
error:
|
||||
SN_close_env(z, S_size);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
extern void SN_close_env(struct SN_env * z, int S_size)
|
||||
{
|
||||
if (z == NULL) return;
|
||||
if (S_size)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < S_size; i++)
|
||||
{
|
||||
lose_s(z->S[i]);
|
||||
}
|
||||
free(z->S);
|
||||
}
|
||||
free(z->I);
|
||||
if (z->p) lose_s(z->p);
|
||||
free(z);
|
||||
}
|
||||
|
||||
extern int SN_set_current(struct SN_env * z, int size, const symbol * s)
|
||||
{
|
||||
int err = replace_s(z, 0, z->l, size, s, NULL);
|
||||
z->c = 0;
|
||||
return err;
|
||||
}
|
||||
Reference in New Issue
Block a user