リビジョン | 5155 (tree) |
---|---|
日時 | 2013-03-22 19:06:04 |
作者 | (del#1144) |
マクロコマンドの引数に配列変数そのものを受け取れるように調整
@@ -1823,3 +1823,55 @@ | ||
1823 | 1823 | { |
1824 | 1824 | return ((VarId>>16)-1); |
1825 | 1825 | } |
1826 | + | |
1827 | +void GetIntAryVar(PVarId VarId, LPWORD Err) | |
1828 | +{ | |
1829 | + TName Name; | |
1830 | + WORD VarType; | |
1831 | + | |
1832 | + if (*Err!=0) return; | |
1833 | + | |
1834 | + if (GetIdentifier(Name)) { | |
1835 | + if (CheckVar(Name, &VarType, VarId)) { | |
1836 | + if (VarType != TypIntArray) { | |
1837 | + *Err = ErrTypeMismatch; | |
1838 | + } | |
1839 | + } | |
1840 | + else { | |
1841 | + *Err = ErrTypeMismatch; | |
1842 | + } | |
1843 | + } | |
1844 | + else | |
1845 | + *Err = ErrSyntax; | |
1846 | +} | |
1847 | + | |
1848 | +void GetStrAryVar(PVarId VarId, LPWORD Err) | |
1849 | +{ | |
1850 | + TName Name; | |
1851 | + WORD VarType; | |
1852 | + | |
1853 | + if (*Err!=0) return; | |
1854 | + | |
1855 | + if (GetIdentifier(Name)) { | |
1856 | + if (CheckVar(Name, &VarType, VarId)) { | |
1857 | + if (VarType != TypStrArray) { | |
1858 | + *Err = ErrTypeMismatch; | |
1859 | + } | |
1860 | + } | |
1861 | + else { | |
1862 | + *Err = ErrTypeMismatch; | |
1863 | + } | |
1864 | + } | |
1865 | + else | |
1866 | + *Err = ErrSyntax; | |
1867 | +} | |
1868 | + | |
1869 | +int GetIntAryVarSize(TVarId VarId) | |
1870 | +{ | |
1871 | + return IntAryVal[VarId].size; | |
1872 | +} | |
1873 | + | |
1874 | +int GetStrAryVarSize(TVarId VarId) | |
1875 | +{ | |
1876 | + return StrAryVal[VarId].size; | |
1877 | +} |
@@ -312,6 +312,10 @@ | ||
312 | 312 | TVarId GetStrVarFromArray(TVarId VarId, int Index, LPWORD Err); |
313 | 313 | BOOL GetIndex(int *Index, LPWORD Err); |
314 | 314 | TVarId GetArrayVarId(TVarId VarId); |
315 | +void GetIntAryVar(PVarId VarId, LPWORD Err); | |
316 | +void GetStrAryVar(PVarId VarId, LPWORD Err); | |
317 | +int GetIntAryVarSize(TVarId VarId); | |
318 | +int GetStrAryVarSize(TVarId VarId); | |
315 | 319 | |
316 | 320 | extern WORD TTLStatus; |
317 | 321 | extern char LineBuff[MaxLineLen]; |