Skip to content

Commit

Permalink
language file separation
Browse files Browse the repository at this point in the history
toautoex/cvautoex
  • Loading branch information
ponapalt committed Jul 10, 2022
1 parent 87cf8b0 commit 5a32930
Show file tree
Hide file tree
Showing 6 changed files with 158 additions and 43 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Debug
Debug_EXE
Release
Release_EXE
ReleaseLangSep
tmp
_UpgradeReport_Files
/*.opensdf
34 changes: 34 additions & 0 deletions aya5.dsp

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions aya5.rc
Original file line number Diff line number Diff line change
Expand Up @@ -98,11 +98,16 @@ END
// MESSAGETXT
//

#ifndef AYA_RES_NO_LANG

CLASSICAL-CHINESE MESSAGETXT MOVEABLE PURE "messagetxt\\classical-chinese.txt"
ENGLISH MESSAGETXT MOVEABLE PURE "messagetxt\\english.txt"
JAPANESE MESSAGETXT MOVEABLE PURE "messagetxt\\japanese.txt"
SIMPLIFIED-CHINESE MESSAGETXT MOVEABLE PURE "messagetxt\\simplified-chinese.txt"
TRADITIONAL-CHINESE MESSAGETXT MOVEABLE PURE "messagetxt\\traditional-chinese.txt"

#endif //AYA_RES_NO_LANG

#endif // ���{�� resources
/////////////////////////////////////////////////////////////////////////////

Expand Down
18 changes: 18 additions & 0 deletions make_aya.bat
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,21 @@ chdir tmp\yaya\
zip -r -9 -q ..\yaya.zip *
chdir ..\..


del /F /S /Q tmp\yaya_lang_sep\*

mkdir tmp\yaya_lang_sep\
mkdir tmp\yaya_lang_sep\messagetxt\
copy /B /Y .\ReleaseLangSep\yaya.dll tmp\yaya_lang_sep\yaya.dll
copy /B /Y .\readme.txt tmp\yaya_lang_sep\readme.txt
copy /B /Y .\readme-original.txt tmp\yaya_lang_sep\readme-original.txt
copy /B /Y .\messagetxt\*.* tmp\yaya_lang_sep\messagetxt\
del /F /S /Q tmp\yaya_lang_sep\*.bak
del /F /S /Q tmp\yaya_lang_sep\messagetxt\*.bak

del /F /S /Q tmp\yaya_lang_sep.zip

chdir tmp\yaya_lang_sep\
zip -r -9 -q ..\yaya_lang_sep.zip *
chdir ..\..

141 changes: 98 additions & 43 deletions sysfunc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,9 @@ constexpr CSF_FUNCTABLE CSystemFunction::sysfunc[] = {
{ &CSystemFunction::LINT_GetLocalVarUsedBy , L"LINT.GetLocalVarUsedBy" },
{ &CSystemFunction::LINT_GetGlobalVarLetted , L"LINT.GetGlobalVarLetted" },
{ &CSystemFunction::LINT_GetLocalVarLetted , L"LINT.GetLocalVarLetted" },
// 型取得/変換(5)
{ &CSystemFunction::CVAUTOEX , L"CVAUTOEX" } ,
{ &CSystemFunction::TOAUTOEX , L"TOAUTOEX" } ,
};

#define SYSFUNC_NUM (sizeof(CSystemFunction::sysfunc)/sizeof(CSystemFunction::sysfunc[0]))
Expand Down Expand Up @@ -592,45 +595,56 @@ CValue CSystemFunction::TOAUTO(CSF_FUNCPARAM &p)
return CValue(p.arg.array()[0]);
}

bool is_strict = false;
if (p.arg.array_size() > 1) {
is_strict = (p.arg.array()[1].GetValueInt() != 0);
yaya::string_t str = p.arg.array()[0].GetValueString();

if ( IsIntString(str) ) {
return CValue(p.arg.array()[0].GetValueInt());
}
else if ( IsDoubleButNotIntString(str) ) {
return CValue(p.arg.array()[0].GetValueDouble());
}
else {
return CValue(str);
}
}

/* -----------------------------------------------------------------------
* 関数名 : CSystemFunction::TOAUTOEX
* -----------------------------------------------------------------------
*/
CValue CSystemFunction::TOAUTOEX(CSF_FUNCPARAM &p)
{
if (!p.arg.array_size()) {
vm.logger().Error(E_W, 8, L"TOAUTOEX", p.dicname, p.line);
SetError(8);
return CValue();
}

if (!p.arg.array()[0].IsString()) {
return CValue(p.arg.array()[0]);
}

yaya::string_t str = p.arg.array()[0].GetValueString();

if ( is_strict ) {
CValue val;
CValue val;

if ( IsIntString(str) ) {
val = p.arg.array()[0].GetValueInt();
}
else if ( IsDoubleButNotIntString(str) ) {
val = p.arg.array()[0].GetValueDouble();
}
else {
return CValue(str);
}
if ( IsIntString(str) ) {
val = p.arg.array()[0].GetValueInt();
}
else if ( IsDoubleButNotIntString(str) ) {
val = p.arg.array()[0].GetValueDouble();
}
else {
return CValue(str);
}

yaya::string_t str_result = val.GetValueString();
yaya::string_t str_result = val.GetValueString();

if ( str == str_result ) {
return val;
}
else {
return CValue(str);
}
if ( str == str_result ) {
return val;
}
else {
if ( IsIntString(str) ) {
return CValue(p.arg.array()[0].GetValueInt());
}
else if ( IsDoubleButNotIntString(str) ) {
return CValue(p.arg.array()[0].GetValueDouble());
}
else {
return CValue(str);
}
return CValue(str);
}
}

Expand Down Expand Up @@ -5271,22 +5285,65 @@ CValue CSystemFunction::CVAUTO(CSF_FUNCPARAM &p)
return CValue(F_TAG_NOP, 0/*dmy*/);
}

bool is_strict = false;
if (p.arg.array_size() > 1) {
is_strict = (p.arg.array()[1].GetValueInt() != 0);
yaya::string_t str = p.arg.array()[0].GetValueString();

if ( IsIntString(str) ) {
yaya::int_t ret = p.arg.array()[0].GetValueInt();

if (p.pcellarg[0]->value_GetType() == F_TAG_VARIABLE) {
vm.variable().SetValue(p.pcellarg[0]->index, ret);
}
else if (p.pcellarg[0]->value_GetType() == F_TAG_LOCALVARIABLE) {
p.lvar.SetValue(p.pcellarg[0]->name, CValue(ret));
}
else {
vm.logger().Error(E_W, 11, L"CVAUTO", p.dicname, p.line);
SetError(11);
}
}
else if ( IsDoubleButNotIntString(str) ) {
double ret = p.arg.array()[0].GetValueDouble();

if (p.pcellarg[0]->value_GetType() == F_TAG_VARIABLE) {
vm.variable().SetValue(p.pcellarg[0]->index, ret);
}
else if (p.pcellarg[0]->value_GetType() == F_TAG_LOCALVARIABLE) {
p.lvar.SetValue(p.pcellarg[0]->name, CValue(ret));
}
else {
vm.logger().Error(E_W, 11, L"CVAUTO", p.dicname, p.line);
SetError(11);
}
}

return CValue(F_TAG_NOP, 0/*dmy*/);
}

/* -----------------------------------------------------------------------
* 関数名 : CSystemFunction::CVAUTOEX
* -----------------------------------------------------------------------
*/
CValue CSystemFunction::CVAUTOEX(CSF_FUNCPARAM &p)
{
if (!p.arg.array_size()) {
vm.logger().Error(E_W, 8, L"CVAUTO", p.dicname, p.line);
SetError(8);
return CValue(F_TAG_NOP, 0/*dmy*/);
}

if (!p.arg.array()[0].IsString()) {
return CValue(F_TAG_NOP, 0/*dmy*/);
}

yaya::string_t str = p.arg.array()[0].GetValueString();

if ( IsIntString(str) ) {
yaya::int_t ret = p.arg.array()[0].GetValueInt();

if ( is_strict ) {
yaya::string_t ret_str = yaya::ws_lltoa(ret, 10);
yaya::string_t ret_str = yaya::ws_lltoa(ret, 10);

if ( ret_str != str ) {
return CValue(F_TAG_NOP, 0/*dmy*/);
}
if ( ret_str != str ) {
return CValue(F_TAG_NOP, 0/*dmy*/);
}

if (p.pcellarg[0]->value_GetType() == F_TAG_VARIABLE) {
Expand All @@ -5303,12 +5360,10 @@ CValue CSystemFunction::CVAUTO(CSF_FUNCPARAM &p)
else if ( IsDoubleButNotIntString(str) ) {
double ret = p.arg.array()[0].GetValueDouble();

if ( is_strict ) {
yaya::string_t ret_str = yaya::ws_ftoa(ret);
yaya::string_t ret_str = yaya::ws_ftoa(ret);

if ( ret_str != str ) {
return CValue(F_TAG_NOP, 0/*dmy*/);
}
if ( ret_str != str ) {
return CValue(F_TAG_NOP, 0/*dmy*/);
}

if (p.pcellarg[0]->value_GetType() == F_TAG_VARIABLE) {
Expand Down
2 changes: 2 additions & 0 deletions sysfunc.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ class CSystemFunction
CValue TOREAL(CSF_FUNCPARAM &p);
CValue TOSTR(CSF_FUNCPARAM &p);
CValue TOAUTO(CSF_FUNCPARAM &p);
CValue TOAUTOEX(CSF_FUNCPARAM &p);

CValue GETTYPE(CSF_FUNCPARAM &p);
CValue GETTYPEEX(CSF_FUNCPARAM &p);
Expand Down Expand Up @@ -204,6 +205,7 @@ class CSystemFunction
CValue CVSTR(CSF_FUNCPARAM &p);
CValue CVREAL(CSF_FUNCPARAM &p);
CValue CVAUTO(CSF_FUNCPARAM &p);
CValue CVAUTOEX(CSF_FUNCPARAM &p);

CValue LETTONAME(CSF_FUNCPARAM &p);
CValue LSO(CSF_FUNCPARAM &p);
Expand Down

0 comments on commit 5a32930

Please sign in to comment.