Browse Source

phoneme: pass the feature enum value to phoneme_add_feature.

master
Reece H. Dunn 8 years ago
parent
commit
b3a1bcda4b

+ 3
- 1
src/libespeak-ng/compiledata.c View File

@@ -2016,7 +2016,9 @@ int CompilePhoneme(int compile_phoneme)
error("Missing 'endphoneme' before end-of-file"); // end of file
break;
}
if (phoneme_add_feature(phoneme_out, item_string, NULL) == ENS_OK)

phoneme_feature_t feature = phoneme_feature_from_string(item_string);
if (phoneme_add_feature(phoneme_out, feature) == ENS_OK)
continue;
error("Bad keyword in phoneme definition '%s'", item_string);
continue;

+ 0
- 24
src/libespeak-ng/error.c View File

@@ -74,27 +74,6 @@ create_version_mismatch_error_context(espeak_ng_ERROR_CONTEXT *context,
return ENS_VERSION_MISMATCH;
}

espeak_ng_STATUS
create_name_error_context(espeak_ng_ERROR_CONTEXT *context,
espeak_ng_STATUS status,
const char *name)
{
if (context) {
if (*context) {
free((*context)->name);
} else {
*context = malloc(sizeof(espeak_ng_ERROR_CONTEXT_));
if (!*context)
return ENOMEM;
}
(*context)->type = ERROR_CONTEXT_NAME;
(*context)->name = strdup(name);
(*context)->version = 0;
(*context)->expected_version = 0;
}
return status;
}

#pragma GCC visibility push(default)

ESPEAK_NG_API void
@@ -182,9 +161,6 @@ espeak_ng_PrintStatusCodeMessage(espeak_ng_STATUS status,
fprintf(out, "Error: %s at '%s' (expected 0x%x, got 0x%x).\n",
error, context->name, context->expected_version, context->version);
break;
case ERROR_CONTEXT_NAME:
fprintf(out, "Error: %s (got \"%s\").\n", error, context->name);
break;
}
} else
fprintf(out, "Error: %s.\n", error);

+ 0
- 6
src/libespeak-ng/error.h View File

@@ -27,7 +27,6 @@ typedef enum
{
ERROR_CONTEXT_FILE,
ERROR_CONTEXT_VERSION,
ERROR_CONTEXT_NAME,
} espeak_ng_CONTEXT_TYPE;

typedef struct espeak_ng_ERROR_CONTEXT_
@@ -49,11 +48,6 @@ create_version_mismatch_error_context(espeak_ng_ERROR_CONTEXT *context,
int version,
int expected_version);

espeak_ng_STATUS
create_name_error_context(espeak_ng_ERROR_CONTEXT *context,
espeak_ng_STATUS status,
const char *name);

#ifdef __cplusplus
}
#endif

+ 7
- 9
src/libespeak-ng/phoneme.c View File

@@ -25,22 +25,20 @@
#include <espeak-ng/speak_lib.h>

#include "phoneme.h"
#include "error.h"

uint32_t lookup_feature(const char *feature) {
if (strlen(feature) != 3)
phoneme_feature_t phoneme_feature_from_string(const char *feature)
{
if (!feature || strlen(feature) != 3)
return inv;
return (feature[0] << 16) | (feature[1] << 8) | feature[2];
}

espeak_ng_STATUS
phoneme_add_feature(PHONEME_TAB *phoneme,
const char *feature,
espeak_ng_ERROR_CONTEXT *context)
phoneme_feature_t feature)
{
if (!phoneme || !feature) return EINVAL;

switch (lookup_feature(feature))
if (!phoneme) return EINVAL;
switch (feature)
{
// manner of articulation
case nas:
@@ -220,7 +218,7 @@ phoneme_add_feature(PHONEME_TAB *phoneme,
break;
// invalid phoneme feature
default:
return create_name_error_context(context, ENS_UNKNOWN_PHONEME_FEATURE, feature);
return ENS_UNKNOWN_PHONEME_FEATURE;
}
return ENS_OK;
}

+ 5
- 4
src/libespeak-ng/phoneme.h View File

@@ -23,7 +23,7 @@ extern "C"
#endif

// See docs/phonemes.md for the list of supported features.
enum feature_t {
typedef enum {
# define FEATURE_T(a, b, c) ((a << 16) | (b << 8) | (c))
// invalid phoneme feature name
inv = 0,
@@ -114,7 +114,9 @@ enum feature_t {
fts = FEATURE_T('f', 't', 's'),
lns = FEATURE_T('l', 'n', 's'),
# undef FEATURE_T
};
} phoneme_feature_t;

phoneme_feature_t phoneme_feature_from_string(const char *feature);

// phoneme types
#define phPAUSE 0
@@ -207,8 +209,7 @@ typedef struct {

espeak_ng_STATUS
phoneme_add_feature(PHONEME_TAB *phoneme,
const char *feature,
espeak_ng_ERROR_CONTEXT *context);
phoneme_feature_t feature);

// Several phoneme tables may be loaded into memory. phoneme_tab points to
// one for the current voice

Loading…
Cancel
Save