00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include <stdlib.h>
00030
00031 #include "fftypes.h"
00032 #include "ffutil.h"
00033
00034 static const char* v_low = "aeiouyåäö";
00035 static const char* v_upp = "AEIOUYÅÄÖ";
00036 static const char* c_low = "bcdfghjklmnpqrstvwxz";
00037 static const char* c_upp = "BCDFGHJKLMNPQRSTVWXZ";
00038 static const ffuint32 v_len = 9;
00039 static const ffuint32 c_len = 20;
00040
00041 ffbool ffpriv_is_vowel(const char letter)
00042 {
00043 const char* i = v_low;
00044
00045 for (;i < v_low+v_len; ++i)
00046 {
00047 if ( letter == *i )
00048 {
00049 return 1;
00050 }
00051 }
00052
00053 i = v_upp;
00054 for (;i < v_upp+v_len; ++i)
00055 {
00056 if ( letter == *i )
00057 {
00058 return 1;
00059 }
00060 }
00061
00062 return 0;
00063 }
00064
00065 ffbool ffpriv_is_consonant(const char letter)
00066 {
00067
00068 const char* i = c_low;
00069
00070 for (;i < c_low+c_len; ++i)
00071 {
00072 if ( letter == *i )
00073 {
00074 return 1;
00075 }
00076 }
00077
00078 i = c_upp;
00079 for (;i < c_upp+c_len; ++i)
00080 {
00081 if ( letter == *i )
00082 {
00083 return 1;
00084 }
00085 }
00086
00087 return 0;
00088 }
00089
00090 ffchar* ffpriv_vowel_harmony(const ffstring* string, ffchar* back, ffchar* front) {
00091 ffint32 i = string->len -1;
00092 ffchar c;
00093
00094 for (; i >= 0; i--) {
00095 c = string->str[i];
00096 if ( c == 'a' || c == 'A' || c == 'o' || c == 'O' || c == 'u' || c == 'U' ) {
00097 return back;
00098 } else if ( c == 'ä' || c == 'Ä' || c == 'ö' || c == 'Ö' || c == 'y' || c == 'Y' ) {
00099 return front;
00100 }
00101 }
00102 return front;
00103 }
00104