do not allocate translit. contexts, use initialized static vars
This commit is contained in:
parent
ae59e9c14f
commit
84b79160c8
7 changed files with 23 additions and 35 deletions
15
iast-czech.c
15
iast-czech.c
|
@ -163,13 +163,12 @@ static const transliteration_filter_t filters[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
struct transliteration_context *transliteration_context_iast_czech_alloc()
|
||||
static const struct transliteration_context context = {
|
||||
.table = table,
|
||||
.filters = filters
|
||||
};
|
||||
|
||||
const struct transliteration_context *get_iast_czech_transliteration_context()
|
||||
{
|
||||
struct transliteration_context *context;
|
||||
|
||||
context = malloc(sizeof(*context));
|
||||
context->table = table;
|
||||
context->filters = filters;
|
||||
|
||||
return context;
|
||||
return &context;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,6 @@
|
|||
|
||||
#include "transliteration.h"
|
||||
|
||||
struct transliteration_context *transliteration_context_iast_czech_alloc();
|
||||
const struct transliteration_context *get_iast_czech_transliteration_context();
|
||||
|
||||
#endif /* __IAST_CZECH_H */
|
||||
|
|
16
iast.c
16
iast.c
|
@ -1,7 +1,6 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "iast.h"
|
||||
#include "transliteration.h"
|
||||
|
@ -103,13 +102,12 @@ static const transliteration_filter_t filters[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
struct transliteration_context *transliteration_context_iast_alloc()
|
||||
static const struct transliteration_context context = {
|
||||
.table = table,
|
||||
.filters = filters
|
||||
};
|
||||
|
||||
const struct transliteration_context *get_iast_transliteration_context()
|
||||
{
|
||||
struct transliteration_context *context;
|
||||
|
||||
context = malloc(sizeof(*context));
|
||||
context->table = table;
|
||||
context->filters = filters;
|
||||
|
||||
return context;
|
||||
return &context;
|
||||
}
|
||||
|
|
2
iast.h
2
iast.h
|
@ -5,6 +5,6 @@
|
|||
|
||||
#include "transliteration.h"
|
||||
|
||||
struct transliteration_context *transliteration_context_iast_alloc();
|
||||
const struct transliteration_context *get_iast_transliteration_context();
|
||||
|
||||
#endif /* __IAST_H */
|
||||
|
|
12
main.c
12
main.c
|
@ -36,7 +36,6 @@ const char *usage_str =
|
|||
static void usage()
|
||||
{
|
||||
fprintf(stdout, "%s\n", usage_str);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static char *stdin_read()
|
||||
|
@ -67,7 +66,7 @@ int main(int argc, const char **argv)
|
|||
const char *arg;
|
||||
const char *queue[argc];
|
||||
char *input, *output;
|
||||
struct transliteration_context *context;
|
||||
const struct transliteration_context *context;
|
||||
|
||||
for (i = 1; i < argc; i++) {
|
||||
arg = argv[i];
|
||||
|
@ -85,6 +84,7 @@ int main(int argc, const char **argv)
|
|||
continue;
|
||||
case 'h':
|
||||
usage();
|
||||
goto out;
|
||||
}
|
||||
|
||||
fprintf(stderr, "error: unknown option '%s'\n", arg);
|
||||
|
@ -104,15 +104,15 @@ int main(int argc, const char **argv)
|
|||
}
|
||||
|
||||
context = (flags & FLAG_CZECH)
|
||||
? transliteration_context_iast_czech_alloc()
|
||||
: transliteration_context_iast_alloc();
|
||||
? get_iast_czech_transliteration_context()
|
||||
: get_iast_transliteration_context();
|
||||
|
||||
if (flags & FLAG_STDIN) {
|
||||
input = stdin_read();
|
||||
if (input == NULL) {
|
||||
fprintf(stderr, "[iast] failed to read from STDIN.\n");
|
||||
retval = -1;
|
||||
goto drop_context;
|
||||
goto out;
|
||||
}
|
||||
|
||||
output = transliterate_devanagari_to_latin(input, context);
|
||||
|
@ -127,8 +127,6 @@ int main(int argc, const char **argv)
|
|||
free(output);
|
||||
}
|
||||
|
||||
drop_context:
|
||||
transliteration_context_drop(context);
|
||||
out:
|
||||
return retval;
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ static void apply_transliteration_filters(struct syllable *head,
|
|||
}
|
||||
|
||||
char *transliterate_devanagari_to_latin(const char *text,
|
||||
struct transliteration_context *context)
|
||||
const struct transliteration_context *context)
|
||||
{
|
||||
unsigned int length = strlen(text);
|
||||
const char *ptr = text;
|
||||
|
@ -90,8 +90,3 @@ char *transliterate_devanagari_to_latin(const char *text,
|
|||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
void transliteration_context_drop(struct transliteration_context *context)
|
||||
{
|
||||
free(context);
|
||||
}
|
||||
|
|
|
@ -23,9 +23,7 @@ struct transliteration_context {
|
|||
};
|
||||
|
||||
char *transliterate_devanagari_to_latin(const char *text,
|
||||
struct transliteration_context *context);
|
||||
|
||||
void transliteration_context_drop(struct transliteration_context *context);
|
||||
const struct transliteration_context *context);
|
||||
|
||||
static inline int is_devanagari(unsigned int code)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue