ืื ื’ืœื™ืชืฆืจืคืชื™ืชืกืคืจื“ื™

Ad


ืกืžืœ OnWorks

genparse - ืžืงื•ื•ืŸ ื‘ืขื ืŸ

ื”ืคืขืœ genparse ื‘ืกืคืง ืื™ืจื•ื— ื‘ื—ื™ื ื ืฉืœ OnWorks ืขืœ ืื•ื‘ื•ื ื˜ื• ืžืงื•ื•ืŸ, ืคื“ื•ืจื” ืžืงื•ื•ืŸ, ืืžื•ืœื˜ื•ืจ ืžืงื•ื•ืŸ ืฉืœ Windows ืื• ืืžื•ืœื˜ื•ืจ ืžืงื•ื•ืŸ ืฉืœ MAC OS

ื–ื”ื• ื”ืคืงื•ื“ื” genparse ืฉื ื™ืชืŸ ืœื”ืคืขื™ืœ ื‘ืกืคืง ื”ืื™ืจื•ื— ื”ื—ื™ื ืžื™ ืฉืœ OnWorks ื‘ืืžืฆืขื•ืช ืื—ืช ืžืชื—ื ื•ืช ื”ืขื‘ื•ื“ื” ื”ืžืงื•ื•ื ื•ืช ื”ืžืจื•ื‘ื•ืช ืฉืœื ื•, ื›ื’ื•ืŸ Ubuntu Online, Fedora Online, ืืžื•ืœื˜ื•ืจ ืžืงื•ื•ืŸ ืฉืœ Windows ืื• ืืžื•ืœื˜ื•ืจ ืžืงื•ื•ืŸ ืฉืœ MAC OS

ืชึธื›ึฐื ึดื™ืช:

ืฉืึตื


genparse - ืžื—ื•ืœืœ ืžื ืชื— ืฉื•ืจืช ืคืงื•ื“ื”

ืชึทืงืฆึดื™ืจ


genparse [ืืคืฉืจื•ื™ื•ืช] ืงื‘ืฆื™ื...

ืชื™ืื•ืจ


genparse ื”ื•ื ืžื—ื•ืœืœ ืžื ืชื— ืฉื•ืจืช ืคืงื•ื“ื” ื’ื ืจื™. ืžืคืฉื•ื˜ ื•ืชืžืฆื™ืชื™
ืงื•ื‘ืฅ ื”ืžืคืจื˜, ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืช ื”ืคืจืžื˜ืจื™ื ื•ื”ืžืชื’ื™ื ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื”
ืื•ื”ื‘ ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœืขื‘ื•ืจ ืœืชื•ื›ื ื™ืช ืฉืœืš. Genparse ื™ื•ืฆืจ ืืช ืงื•ื“ C, C++ ืื• Java ืฉืœ
ืžื ืชื— ืขื‘ื•ืจืš.

Genparse ืžื ื™ื— ืฉื”ื’ื ื• getopt_long(3) ื”ืคื•ื ืงืฆื™ื” ืžื•ื‘ื ื™ืช ื‘ืกืคืจื™ื™ืช ื”-C ืฉืœืš. ืœ
Java ื™ื™ืชื›ืŸ ืฉืชืฆื˜ืจืš ืœืฆื™ื™ืŸ ืงื•ื‘ืฅ jar ืžืชืื™ื ืœืžื”ื“ืจ Java ืฉืœืš.

ืืคืฉืจื•ื™ื•ืช


genparse ืžืงื‘ืœ ืืช ื”ืืคืฉืจื•ื™ื•ืช ื”ื‘ืื•ืช:

-c, --cppext ื”ืืจื›ื”
ืกื™ื•ืžืช ืงื•ื‘ืฅ C++. (ื‘ืจื™ืจืช ืžื—ื“ืœ = cc)

-d ื”ืคืขืœ ืจื™ืฉื•ื.

-f, --ืงื•ื‘ืฅ ืœื•ื’ ืฉื
ืฉื ืงื•ื‘ืฅ ื™ื•ืžืŸ. (ื‘ืจื™ืจืช ืžื—ื“ืœ = genparse.log)

-h, - ืขื–ืจื”
ื”ืฆื’ ืžื™ื“ืข ืขื–ืจื”.

-g, --ื’ื ื•ืœื™ื‘
ื”ืฉืชืžืฉ ื‘ืกืคืจื™ื™ืช ื”ืชืื™ืžื•ืช ืฉืœ GNU (Gnulib, ืจืื” http://www.gnu.org/software/gnulib/).
ื–ืžื™ืŸ ืจืง ืขื‘ื•ืจ ืคืœื˜ C. ืžืืคืฉืจ ื›ืžื” ืกื•ื’ื™ื ื ื•ืกืคื™ื (ืœื ื—ืชื•ื ืืจื•ืš, intmax_t ื•ื›ื•')
ืฉืขื‘ื•ืจื• Gnulib ืžืกืคืงืช ืคื•ื ืงืฆื™ื•ืช ื”ืžืจื”.

-i, --ืœืœืื•ืžื™ืŸ
ืฉื™ื ืžืืงืจื• ื‘ื™ื ืœืื•ืžื™ _() ืกื‘ื™ื‘ ืคืœื˜ ื˜ืงืกื˜ ื›ืš ืฉื”ืชื•ื›ื ื™ืช ืฉื ื•ืฆืจื”
ื ื™ืชืŸ ืœื‘ื™ื ืœืื•ืžื™ ื‘ืืžืฆืขื•ืช ืคืงื•ื“ืช GNU gettext. ื›ืจื’ืข ืจืง ืžื™ื•ืฉื
ืขื‘ื•ืจ ืคืœื˜ C.

-l, --ืฉืคื” lang
ืฉืคืช ืคืœื˜. ืจืง C, C++ ื•-Java ื ืชืžื›ื•ืช. ื›ืœ ืื—ื“ ืžื”ื‘ืื™ื
ืฆื™ื™ืŸ C++: "c++", "cpp", "cc" ื•-"cxx". ืœืฉื™ืžื•ืฉ ื‘-Java: "java" ืื• "Java".
(ื‘ืจื™ืจืช ืžื—ื“ืœ = c)

-o, --ืชื™ืง ืฉื
ืฉื ืงื•ื‘ืฅ ืคืœื˜. (ื‘ืจื™ืจืช ืžื—ื“ืœ = parse_cl)

-m, --ื—ื‘ืจื™ื ืืจื•ื›ื™ื
ื”ืฉืชืžืฉ ื‘ืืคืฉืจื•ื™ื•ืช ืืจื•ื›ื•ืช ืขื‘ื•ืจ ื—ื‘ืจื™ ืžื—ืœืงืช ื”ืžื ืชื— (struct). ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื ืœ
ื”ืฉืชืžืฉ ื‘ื™ื™ืฆื•ื’ ื”ืงืฆืจ ืœืžืขื˜ ืื ื™ืฉ ืจืง ื™ื™ืฆื•ื’ ืืจื•ืš ืžื•ื’ื“ืจ
ื‘ืงื•ื‘ืฅ genparse. ืื ืืคืฉืจื•ืช ื–ื• ืžื•ื’ื“ืจืช, ื”ื”ืชื ื”ื’ื•ืช ืชื‘ื•ื˜ืœ. ื”
ื™ื™ืฆื•ื’ ืืจื•ืš ืžืฉืžืฉ ืื– ืœืžืขื˜ ืื ื™ืฉ ืจืง ื™ื™ืฆื•ื’ ืงืฆืจ
ืžื•ึผื’ื“ึธืจ.

-o, --ืชื™ืง ืฉื ื”ืงื•ื‘ืฅ
ืฉื ื”ืฉื•ืจืฉ ืฉืœ ืงื•ื‘ืฅ ื”ืคืœื˜. ื”ื”ืจื—ื‘ื” ืชื™ืงื‘ืข ืœืคื™ ืฉืคืช ื”ืคืœื˜
ื•ืื•ืœื™ ืขืœ ื™ื“ื™ ืืคืฉืจื•ื™ื•ืช ืื—ืจื•ืช. ืœื“ื•ื’ืžื”, ื›ืืฉืจ ืฉืคืช ื”ืคืœื˜ ื”ื™ื C, ื ืชื™ื ื”
ืืคืฉืจื•ืช ื–ื• ืืจื’ื•ืžื ื˜ ืฉืœ "ืงื•ื‘ืฅ" ื™ื‘ื™ื ืœืฉืžื•ืช ืงื‘ืฆื™ ืคืœื˜ ืฉืœ "file.h",
"file.c" ื•-"file_cb.c" ืขื‘ื•ืจ ืงื‘ืฆื™ ื”ื›ื•ืชืจืช, ื”ืžื ืชื— ื•ื”ืงืจื™ืื” ื—ื•ื–ืจืช, ื‘ื”ืชืืžื”.
ืขืจืš ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื•ื "parse_cl".

-p, --parsefunc func
ืฉื ืคื•ื ืงืฆื™ื™ืช ื ื™ืชื•ื— / ืžื—ืœืงื”. ืืคืฉืจื•ืช ื–ื• ืžืืคืฉืจืช ืœืžืฉืชืžืฉ ืœืฆื™ื™ืŸ ืืช ื”ืฉื
ืฉืœ ื”ืคื•ื ืงืฆื™ื” (ืขื‘ื•ืจ C) ืื• ืžื—ืœืงื” (ืขื‘ื•ืจ C++ ื•-Java) ืฉืขื•ืฉื” ืืช ื”ืคืงื•ื“ื” ื‘ืคื•ืขืœ
ื ื™ืชื•ื— ืฉื•ืจื” (ื‘ืจื™ืจืช ืžื—ื“ืœ = "Cmdline").

-P, - ื”ื“ืคืกื•ืช ืจื‘ื•ืช
ืคืœื˜ ื˜ืงืกื˜ ืขื–ืจื” ืขื‘ื•ืจ ื›ืœ ืคืจืžื˜ืจ ืฉื•ืจืช ืคืงื•ื“ื” ื‘ืคืงื•ื“ืช ื”ื“ืคืกื” ื ืคืจื“ืช.

-q, --ืฉืึถืงึถื˜
ืžืฆื‘ ืฉืงื˜ - ืื™ืŸ ืคืœื˜ ืขืœ ื”ืžืกืš.

-s, --ื›ื•ืชืจื•ืช ืกื˜ื˜ื™ื•ืช
ืฉืžื•ืจ ืืช ื”ื›ื•ืชืจืช ื”ืชื™ืื•ืจื™ืช ืขืœ ื’ื‘ื™ ื”ืงื‘ืฆื™ื ืฉื ื•ืฆืจื• ืกื˜ื˜ื™ืช. ื‘ืœื™ ื–ื”
ืืคืฉืจื•ืช genparse ืžื“ืคื™ืก ืชืืจื™ืš ื•ืฉืขื” ืœื™ืฆื™ืจื”, ื’ืจืกืช ืœื™ื‘ืช ืœื™ื ื•ืงืก, ื‘ื ื™ื™ืช ืœื™ื‘ื”
ื–ืžืŸ, ืฉื ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžื—ืฉื‘, ืฉื ืžืืจื— ื•ืฉื ืžืฉืชืžืฉ.

-v, --ื’ึดืจึฐืกึธื”
ื’ืจืกืช ืคืœื˜.

-D, --ืžึทื“ืจึดื™ืš
ืกืคืจื™ื™ื” ืœืื—ืกื•ืŸ ืชื•ืฆืื•ืช.

ืงืœื˜ ืงื•ื‘ืฅ


ืงื•ื‘ืฅ ืžืคืจื˜ genparse (ื‘ื“ืจืš ื›ืœืœ ื ืงืจื ืจืง 'ืงื•ื‘ืฅ genparse') ืžื•ืจื›ื‘ ืžืžืกืคืจ
ืฉืœ ืขืจื›ื™ื, ืื—ื“ ืœื›ืœ ืคืจืžื˜ืจ ืฉื•ืจืช ืคืงื•ื“ื”, ื‘ื˜ื•ืคืก:

short_names[*|!] [/ ืฉื ืืจื•ืš[*|!][=opt_name]] ืกื•ื’ [ ืืคืฉืจื•ื™ื•ืช ]

A ืฉื ืงืฆืจ ื”ื•ื ืชื• ื‘ื•ื“ื“ (ืงื˜ืŸ ืื• ื’ื“ื•ืœ) ืื• ืกืคืจื” ื‘ื•ื“ื“ืช. ืฉื ืืจื•ืš ื”ื•ื
ืฉื ืืคืฉืจื•ืช ืืจื•ืš ื™ื•ืชืจ (ืชื™ืื•ืจื™ ื™ื•ืชืจ). ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ื™ืงื•ื“ื ืฉื ืงืฆืจ
ืขืœ ื™ื“ื™ ืžืงืฃ ื‘ื•ื“ื“ (ืœืžืฉืœ '-a') ื•ืœื’ืจืกื” ืืจื•ื›ื” ื™ืงื“ืžื• ืฉื ื™ ืžืงืคื™ื (ืœืžืฉืœ
'--ืืช ื›ืœ'). ืื ืื™ืŸ ืฆื•ืจืš ื‘ืฉื ืคืจืžื˜ืจ ืืจื•ืš, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืจืง ืืช ื”ืงืฆืจ
(ื•ื”ืœื•ื›ืกืŸ ืื™ื ื• ืฆืจื™ืš ืœื”ื•ืคื™ืข). ืขืœ ืžื ืช ืœืฆื™ื™ืŸ ืคืจืžื˜ืจ ืฉื™ืฉ ืœื• ืจืง ืืจื•ืš
ืกื˜ ืฉื short_names ืœ ืืฃ ืœื ืื—ื“. ืืคืฉืจ ืœืงื‘ืœ ืžืกืคืจ ืืคืฉืจื•ื™ื•ืช ืงืฆืจื•ืช, ื›ืš ืขื‘ื•ืจ
ื”ื’ื“ืจื” ืœื“ื•ื’ืžื” ืฉื ืงืฆืจ ืœ'aA' ื• ืฉื ืืจื•ืš ืœ'ื›ืœ' ื™ืืคืฉืจ ืœืฆื™ื™ืŸ ืืช
ืžืชื’ ืฉื•ืจืช ื”ืคืงื•ื“ื” ื‘ืชื•ืจ '-a' ืื• '-A' ืื• '--all', ื›ื•ืœื ืขื•ืฉื™ื ืืช ืื•ืชื• ื”ื“ื‘ืจ.

A * ืœืื—ืจ ืฉื ืงืฆืจ or ืฉื ืืจื•ืš ื”ื•ืคืš ืืช ื”ื˜ื™ืขื•ืŸ ืœืื•ืคืฆื™ื•ื ืœื™. ื ื™ืชืŸ ืœืฆื™ื™ืŸ ื–ืืช ืขื‘ื•ืจ
ืืคืฉืจื•ื™ื•ืช ืงืฆืจื•ืช ื•ืืจื•ื›ื•ืช ื‘ื ืคืจื“.

A ! ืœืื—ืจ ืฉื ืงืฆืจ or ืฉื ืืจื•ืš ื”ื•ืคืš ืืช ื”ืื•ืคืฆื™ื” ืœื‘ื•ืœื™ืื ื™ืช. ื–ื” ืžืืคืฉืจ ืœืฉืœื‘ ื
ืืคืฉืจื•ืช ืงืฆืจื” ื‘ื•ืœื™ืื ื™ ืขื ืืคืฉืจื•ืช ืืจื•ื›ื” ืขื ืืจื’ื•ืžื ื˜ ืื•ืคืฆื™ื•ื ืœื™ ืื• ื—ื•ื‘ื” ืื• ืœ
ืฉืœื‘ ืื•ืคืฆื™ื” ื‘ื•ืœื™ืื ื™ืช ืืจื•ื›ื” ืขื ืื•ืคืฆื™ื” ืงืฆืจื” ืขื ืืจื’ื•ืžื ื˜ ืื•ืคืฆื™ื•ื ืœื™ ืื• ื—ื•ื‘ื”.
A ! ืœื ื”ื’ื™ื•ื ื™ ืื ืกื•ื’ ื”ืื•ืคืฆื™ื” ื”ื•ื ื“ื’ืœ.

ืกื•ื’ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืื—ื“ ืžื”ื int ืœืฆื•ืฃ char ืžื—ืจื•ื–ืช or ื“ื’ืœ. ืืจื‘ืขืช ื”ืจืืฉื•ื ื™ื ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืขืฆืžื™ื™ื
ืžึทืกื‘ึผึดื™ืจ. ื”ืื—ืจื•ื ื” ื”ื™ื ืืคืฉืจื•ืช "ื‘ื•ืจืจ" ืฉืื™ื ื” ืœื•ืงื—ืช ื˜ื™ืขื•ื ื™ื. ืขื‘ื•ืจ ืคืœื˜ C ื•ืื
--gnulib ืžื•ื’ื“ืจ ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ื‘ื ื•ืกืฃ ืžื•ืชืจื™ื ื”ืกื•ื’ื™ื ื”ื‘ืื™ื: ืืจื•ืš
(ืœืื•ืจืš ื–ืžืŸ), ืื•ืœื•ื ื’ (ืขื‘ื•ืจ ืื™ื ื˜ ืืจื•ืš ืœื ื—ืชื•ื), intmax (ืขื‘ื•ืจ intmax_t, ืžื•ื’ื“ืจ ื‘-Gnulib),
uintmax (ืขื‘ื•ืจ uintmax_t), ืœึฐื”ึทื›ืคึผึดื™ืœ.

ื”ื‘ื ืืคืฉืจื•ื™ื•ืช ื ืชืžื›ื™ื. ื”ื ืขืฉื•ื™ื™ื ืœื”ื•ืคื™ืข ื‘ื›ืœ ืกื“ืจ ื•ืœืžืขื˜
ืชื™ืื•ืจื™ื ื ื™ืชืŸ ืœื”ื’ื“ื™ืจ ืจืง ืื—ื“ ืžื›ืœ ืฉื“ื” ืœื›ืœ ืืคืฉืจื•ืช.

A ื‘ืจื™ืจืช ืžื—ื“ืœ ืขืจืš ืขื‘ื•ืจ ื”ืคืจืžื˜ืจ. ืขื‘ื•ืจ ืžื—ืจื•ื–ืช ื–ื• ืจืง ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ืคืฉื•ื˜ื”
ืขืจืš, ืžื” ืฉืœื ื™ื”ื™ื”. ืขื‘ื•ืจ ืžื—ืจื•ื–ื•ืช, ื™ืฉ ืœืฆื™ื™ืŸ ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ืชื•ืš ืกื•ื’ืจื™ื ื•
ืžืจื›ืื•ืช, ื•ืขืฉื•ื™ื•ืช ืœื›ืœื•ืœ ืจื•ื•ื— ืœื‘ืŸ, ืœืžืฉืœ {"ืขืจืš ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืฉืœื™"}. ืขื‘ื•ืจ char
ืคืจืžื˜ืจ ื–ื” ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืžื•ืงืฃ ื‘ืžื™ืจื›ืื•ืช ื‘ื•ื“ื“ื•ืช, ืœืžืฉืœ 'a' ืื• '\n'.

A ืจื›ืก ืฉืœ ืขืจื›ื™ื ื‘ืกื•ื’ืจื™ื™ื. ื”ืขืจื›ื™ื ื”ื ืžื•ื›ื™ื ื•ื”ื’ื‘ื•ื”ื™ื ืžืฆื•ื™ื ื™ื ื‘ื™ืŸ ื
ืžืคืจื˜ ื˜ื•ื•ื— (ืื• '...' ืื• '..'). ื”ืขืจืš ื”ื’ื‘ื•ื” ืื• ื”ื ืžื•ืš ืขืฉื•ื™ ืœื”ื™ื•ืช
ื”ื•ืฉืžื˜ ืขื‘ื•ืจ ื˜ื•ื•ื— ืžื•ื’ื‘ืœ ื‘ืฆื“ ืื—ื“ ื‘ืœื‘ื“. ื”ืคืจืžื˜ืจ ื™ื™ื‘ื“ืง ืืœ
ื•ื“ื ืฉื”ื•ื ื ืžืฆื ื‘ื˜ื•ื•ื— ื–ื”.

A ืชืชืงืฉืจ ื‘ื—ื–ืจื” ืคื•ื ืงืฆื™ื”. ืคื•ื ืงืฆื™ื” ื–ื• ื ืงืจืืช ืœืื—ืจ ื›ืœ ื‘ื“ื™ืงืช ื˜ื•ื•ื—
ืžึฐื‘ื•ึผืฆึธืข. ืžื˜ืจืช ื”ื”ืชืงืฉืจื•ืช ื—ื–ืจื” ืœืขืฉื•ืช ื‘ื“ื™ืงืช ืชืงืคื•ืช ื”ื™ื ื™ื•ืชืจ
ืžืกื•ื‘ืš ืžืžื” ืฉื ื™ืชืŸ ืœืฆื™ื™ืŸ ื‘ืงื•ื‘ืฅ genparse. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ
ื›ืชื•ื‘ ืชื•ื›ื ื™ืช ืฉื“ื•ืจืฉืช ืฉื”ืงืœื˜ ื™ื”ื™ื” ืžืกืคืจื™ื ืจืืฉื•ื ื™ื™ื, ืžื—ืจื•ื–ื•ืช ืžืกื•ื™ืžื•ืช
ืื•ืจืš ื•ื›ื•'.

A ืชื™ืื•ืจ ื‘ืžื™ืจื›ืื•ืช ื›ืคื•ืœื•ืช. ื”ื•ื ืžื•ื“ืคืก ืขืœ ื™ื“ื™ ื ื•ึนื”ึธื’() ืคื•ึผื ืงืฆึดื™ึธื”. ืื ืื—ื“
ืฉื•ืจื” ืœื ืžืกืคื™ืงื” ืื– ืฆื™ื™ืŸ ืžืกืคืจ ืชื™ืื•ืจื™ื, ืื—ื“ ื‘ื›ืœ ืฉื•ืจื” ื•ื›ืœ ืื—ื“ ืžื”ื
ืื•ืชื ื‘ืžื™ืจื›ืื•ืช ื›ืคื•ืœื•ืช. ืื ื”ืชื™ืื•ืจ ืžืชื—ื™ืœ ื‘ืขืžื•ื“ื” ื”ืจืืฉื•ื ื” ื‘-Genparse
ืœืื—ืจ ืžื›ืŸ ื”ื•ื ื™ื•ื“ืคืก ื’ื ื‘ืขืžื•ื“ื” ื”ืจืืฉื•ื ื” ื‘- ื ื•ึนื”ึธื’() ืคื•ื ืงืฆื™ื”.

A #gp_include ื”ื”ื ื—ื™ื” ืชื ื—ื” ืืช genparse ืœื›ืœื•ืœ ืงื•ื‘ืฅ genparse ืื—ืจ,
ืœึฐืžึธืฉืึธืœ #gp_include ืื—ืจ.gp. ืจืง ื”ื’ื“ืจื•ืช ืคืจืžื˜ืจื™ื ืžื•ืชืจื•ืช ื‘ื›ืœื•ืœ
ืงื•ื‘ืฅ, ืœืœื ื”ื ื—ื™ื•ืช ื’ืœื•ื‘ืœื™ื•ืช.

An __ERR_MSG__(err_txt) ื”ื•ึนืจึธืึธื”. ืžืฆื™ื™ืŸ ืืช ื”ื•ื“ืขืช ื”ืฉื’ื™ืื” ืฉืชื•ื“ืคืก
ื›ืืฉืจ ืœื ื ื™ืชืŸ ื”ื™ื” ืœื”ืžื™ืจ ืืช ื”ื˜ื™ืขื•ืŸ. ื“ื•ื’ืžื: __ERR_MSG__("%s: ื—ื•ืงื™
ื˜ึทืขึฒื ึธื”"). ื”ื•ื“ืขื” ื–ื• ืชื•ื“ืคืก ื›ืืฉืจ ืชืคืงื•ื“ ื”ื”ืžืจื”
ื ื›ืฉืœ ืื• ื›ืืฉืจ ื”ื˜ื™ืขื•ืŸ ื”ื™ื” ืžื—ื•ืฅ ืœื˜ื•ื•ื—. ืžื ื™ื— ืœื”ื›ื™ืœ ืื—ื“ %s ืืฉืจ ื™ื”ื™ื”
ื™ื•ื—ืœืฃ ื‘ืื’ืจื•ืžื” ืฉืœื ื ื™ืชืŸ ื”ื™ื” ืœื”ืžื™ืจ. ื–ืžื™ืŸ ืจืง ื›ืืฉืจ
Genparse ืžื•ืคืขืœ ืขื --ื’ื ื•ืœื™ื‘, ื”ืชืขืœืžื• ืื—ืจืช.

ืœื—ืœื•ืคื™ืŸ, ื ื™ืชืŸ ืœื”ื•ืกื™ืฃ ืคื•ื ืงืฆื™ื™ืช ื”ืžืจื” ื›ืืจื’ื•ืžื ื˜ ืฉื ื™, ืœืžืฉืœ
__ERR_MSG__("%s: ื—ื•ืงื™ ื˜ึทืขึฒื ึธื”", quotearg). ื–ื” ื™ื•ื‘ื™ืœ ืœื”ื•ื“ืขืช ืฉื’ื™ืื”
ื›ืžื• ืฉื’ื™ืื” (EXIT_FAILURE, 0, "%s: ื—ื•ืงื™ ื˜ึทืขึฒื ึธื”", quotearg (optind)).

An __ADD_FLAG__ ื”ื•ึนืจึธืึธื”. ื”ื’ื™ื•ื ื™ ืจืง ืื ืคืจืžื˜ืจ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืื™ื ื•
ื›ื‘ืจ ื“ื’ืœ, ื‘ืžืงืจื” ื–ื” ื ื•ืกืฃ ืคืจืžื˜ืจ ื“ื’ืœ ื ื•ืกืฃ ืฉื™ื”ื™ื”
ื”ื’ื“ืจ ืื ืคืจืžื˜ืจ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฆื•ื™ืŸ ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”. ืืคืฉืจื•ืช ื–ื•
ืžื•ื’ื“ืจ ืื•ื˜ื•ืžื˜ื™ืช ืื ืœืคืจืžื˜ืจ ื™ืฉ ืืจื’ื•ืžื ื˜ ืื•ืคืฆื™ื•ื ืœื™.

A __CODE__(ื”ืฆื”ืจื•ืช) ื”ื•ึนืจึธืึธื”. ื”ืฆื”ืจื•ืช ื”ืงื•ื“ ืฉืฆื•ื™ื ื• ืžื•ืขืชืงื•ืช
ืคืฉื•ื˜ื• ื›ืžืฉืžืขื•. ื“ื•ื’ืžื: __CODE__(printf ("ืคึผึธืจึธืžึถื˜ึถืจ x ื”ื™ื” ืžึทืขึฒืจึถื›ึถืช");). ื”ืงื•ื“ ืฉืฆื•ื™ืŸ
ื™ื›ื•ืœ ืœื”ืฉืชืจืข ืขืœ ื™ื•ืชืจ ืžืงื• ืื—ื“. ืขืœ ืžื ืช ืœืชืช ืœื’'ื ืคืืจืก ืืช ื”ื”ื–ื“ืžื ื•ืช
ื”ื›ื ืก ืืช ื”ืงื•ื“ ื‘ืฆื•ืจื” ื ื›ื•ื ื”, ืืœ ืชืขืจื‘ื‘ ืจื•ื•ื—ื™ื ื•ื˜ืื‘ ื‘ืื—ื“ __ืงื•ื“__
ื”ืฆื”ืจื”.

A __STORE_LONGINDEX__ ื”ื•ึนืจึธืึธื”. ืžื•ืจื” ืœ-Genparse ืœื”ื•ืกื™ืฃ ืฉื“ื” ืžืกื•ื’ interer
ืœืžื—ืœืงืช ื”ืชื•ืฆืื” ืฉืชื•ื’ื“ืจ ืœืžืฉืชื ื” longindex (ืืจื’ื•ืžื ื˜ ืื—ืจื•ืŸ ื‘
ื”ืงืจื™ืื” ืœ-@code{getopt_long()}). ืฉื“ื” ื—ื“ืฉ ื–ื” ื™ืงื‘ืœ ืืช ืื•ืชื• ืฉื ื›ืžื• ื”-
ืฉื“ื” ืชื•ืฆืื” ืฉื”ื•ื ืงืฉื•ืจ ืืœื™ื• ืื‘ืœ ืขื an _ืœื™ ืคื•ืกื˜ ืชื™ืงื•ืŸ.

ื”ื‘ื ื’ืœื•ึนื‘ึผึธืœึดื™ ื”ื ื—ื™ื•ืช ื ืชืžื›ื™ื. ื”ื ืขืฉื•ื™ื™ื ืœื”ื•ืคื™ืข ื‘ื›ืœ ืกื“ืจ.

An #include ื”ื”ื ื—ื™ื” ืชื ื—ื” ืืช genparse ืœื”ืขืชื™ืง ืืช ื”ื”ืฆื”ืจื” ื”ื›ื•ืœืœืช ื”ืืžื•ืจื”
ืœืชื•ืš ืงื•ื“ C ืื• C++ ืฉื ื•ืฆืจ ืขืœ ื™ื“ื™ genparse, ืืš ืœื ืงื‘ืฆื™ ื›ื•ืชืจืช ืื• ื”ืชืงืฉืจื•ืช ื—ื•ื–ืจืช
ืงื‘ืฆื™ื.

A #ื—ื•ื‘ื” ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-directive ื–ื” ื”ื•ืคืš ืืช ืงืจื™ืื•ืช ื”ืคื•ื ืงืฆื™ื” usage() ืœื ื—ืžื“ื•ืช ื™ื•ืชืจ. ื–ื” ืžืืคืฉืจ
ืขืœื™ืš ืœืฆื™ื™ืŸ ืคืจืžื˜ืจื™ื ื—ื•ื‘ื” ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืฉืขืฉื•ื™ื™ื ืœืขืงื•ื‘ ืื—ืจ ืžืชื’ื™ื. ื”ืขืจื”
ืฉ-Genparse ืœื ื‘ื•ื“ืง ืคืจืžื˜ืจื™ื ื—ื•ื‘ื”, ื”ื ืžื•ื“ืคืกื™ื ืจืง ื‘-
ืฉื™ืžื•ืฉ () ืœืชืคืงื“ ืขื __ื—ื•ื‘ื”__ ื”ื•ืจืื”. ื”ื•ืฆื ืžืฉื™ืžื•ืฉ: ืœื”ื•ืกื™ืฃ ืžื ื“ื˜ื•ืจื™
ืคืจืžื˜ืจื™ื in ืžื” ื”ื™ื #ื ื•ึนื”ึธื’ ืกืขื™ืฃ ื‘ืžืงื•ื.

An #exit_value ื”ื•ืจืื” ื”ืžืฆื™ื™ื ืช ืืช ืขืจืš ื”ื™ืฆื™ืื” ื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืื”.
ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื EXIT_FAILURE.

A #break_lines ื”ื ื—ื™ื” ื”ืžืฆื™ื™ื ืช ืืช ื”ืจื•ื—ื‘ ืฉืืœื™ื• ื™ืฉื‘ืจื• ืงื•ื•ื™ื
ื‘ืžืกืš ื”ืขื–ืจื”. ืื ืœื #break_lines ื”ื”ื ื—ื™ื” ืฆื•ื™ื ื” ืื– ื™ื”ื™ื• ืงื•ื•ื™ื
ืžื•ื“ืคืก ื‘ื“ื™ื•ืง ื›ืคื™ ืฉื ื™ืชืŸ ื‘ืงื•ื‘ืฅ genparse.

If #ืื™ืŸ_ืžื‘ื ื” ืฆื•ื™ืŸ ืื– ืœื ื™ื•ื’ื“ืจ struct ืืฉืจ ื™ืชืžืœื ื‘
ื”ืคืจืžื˜ืจื™ื ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” ื‘ืžื ืชื— ืฉื ื•ืฆืจ. ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ ืื ืืชื”
ืจื•ืฆื” ืœื”ื•ืกื™ืฃ ืงื•ื“ ืžืฉืœืš ืขื __ืงื•ื“__ ื”ืฆื”ืจื•ืช ื‘ืžืงื•ื. ื ืชืžืš ืจืง ืขื‘ื•ืจ C
ืคืœื˜.

A #export_long_options ื”ื•ึนืจึธืึธื”. ืื #export_long_options ืžื•ื’ื“ืจ ืื– ื
ืคื•ื ืงืฆื™ื” #get_long_options() ื ื•ืกืฃ ืืฉืจ ืžื™ื™ืฆื ืืช ืžืขืจืš ื”-longoptions ื‘ืฉื™ืžื•ืฉ ืขืœ ื™ื“ื™
#getopt_long(). ื”ื ื—ื™ื” ื–ื• ื–ืžื™ื ื” ืจืง ืขื‘ื•ืจ ืคืœื˜ C, ืขื‘ื•ืจ ืฉืคื•ืช ืื—ืจื•ืช
ืžืชืขืœืžื™ื ืžืžื ื•.

A ื’ืœื•ึนื‘ึผึธืœึดื™ ืชืชืงืฉืจ ื‘ื—ื–ืจื” ืคื•ื ืงืฆื™ื”. ืคื•ื ืงืฆื™ื” ื–ื• ืฉื™ืžื•ืฉื™ืช ืœื‘ื“ื™ืงืช ืชืœื•ืช ื”ื“ื“ื™ืช
ื‘ื™ืŸ ืคืจืžื˜ืจื™ื. ืœื ื ื™ืชืŸ ืœื‘ื“ื•ืง ืชืœื•ืช ื”ื“ื“ื™ืช ื‘ืชื•ืš ื›ืœ ืื“ื
ืคื•ื ืงืฆื™ื™ืช callback ืžื›ื™ื•ื•ืŸ ืฉื”ืกื“ืจ ืฉื‘ื• ื™ื™ืงืจืื• ืคื•ื ืงืฆื™ื•ืช ืืœื• ืžืฉืชื ื”,
ื‘ื”ืชืื ืœืกื“ืจ ื”ืคืจืžื˜ืจื™ื ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื”.

Genparse ื’ื ื™ื•ืฆืจ ื ื ื•ึนื”ึธื’() ืคื•ื ืงืฆื™ื” ืฉืžื“ืคื™ืกื” ื˜ืงืกื˜ ืขื–ืจื” ืœืกื˜dout ืขืœ
ืฉื™ืžื•ืฉ ื‘ืชื•ื›ื ื™ืช ืฉืขื‘ื•ืจื” Genparse ืžื™ื™ืฆืจ ืืช ื”ืžื ืชื—. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื•ืชืื ืื™ืฉื™ืช ืขืœ ื™ื“ื™
ืฆื™ื•ืŸ ืงื˜ืข ืฉื™ืžื•ืฉ ื‘ืชื—ืชื™ืช ืงื•ื‘ืฅ Genparse. ืื ืื™ืŸ ืกืขื™ืฃ ื›ื–ื”
ืฆื™ื™ื ื• ืฉื–ื” ื›ื‘ืจื™ืจืช ืžื—ื“ืœ

#ืฉื™ืžื•ืฉ_ื”ืชื—ืœ
ืฉื™ืžื•ืฉ: __PROGRAM_NAME__ __OPTIONS_SHORT__ __ื—ื•ื‘ื”__
__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__
#usage_end

ืกืขื™ืฃ ื”ืฉื™ืžื•ืฉ ืžืชื—ื™ืœ ื‘ #ืฉื™ืžื•ืฉ_ื”ืชื—ืœ ื•ืžืกืชื™ื™ื ื‘ #usage_end. ื›ืœ ื˜ืงืกื˜ ื‘ื™ืŸ ื”ื•ื
ืžื•ื“ืคืก ืžื™ืœื” ื‘ืžื™ืœื” ืœืžืขื˜ ืžื™ืœื•ืช ื”ืžืคืชื— ื”ื‘ืื•ืช, ืฉื™ื•ื—ืœืคื• ื›ืžืคื•ืจื˜
ืœื”ืœืŸ:

__PROGRAM_NAME__: ืฉื ื”ืชื•ื›ื ื™ืช. ื‘-C ื•-C++ ืฉื ื”ืชื•ื›ื ื™ืช ื ื™ืชืŸ ื‘
argv[0].

__OPTIONS_SHORT__: ืจืฉื™ืžื” ืฉืœ ืืคืฉืจื•ื™ื•ืช ื–ืžื™ื ื•ืช ืฉืœ ื˜ื•ืคืก ืงืฆืจ, ืœืžืฉืœ [ -abc ].

__ื—ื•ื‘ื”__: ืจืฉื™ืžื” ืฉืœ ื›ืœ ื”ืคืจืžื˜ืจื™ื ื”ื—ื•ื‘ื” ื›ืคื™ ืฉื”ื•ื’ื“ืจื• ืขื #mandatory
ืคืงื•ื“ื•ืช. ื”ื•ืฆื ืžืฉื™ืžื•ืฉ: ืจืฉื™ืžื” ืžื ื“ื˜ื•ืจื™ ืคืจืžื˜ืจื™ื ื›ืืŸ ื‘ืื•ืคืŸ ื™ืฉื™ืจ.

__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__: ืชื™ืื•ืจ ืฉืœ ื›ืœ ืืคืฉืจื•ื™ื•ืช ืฉื•ืจืช ื”ืคืงื•ื“ื”. ื–ื” ื”ืžื™ื“ืข
ื ื™ืชืŸ ืขื‘ื•ืจ ื”ื’ื“ืจื•ืช ื”ืคืจืžื˜ืจื™ื ื‘ืฆื•ืจื” ืงืจื™ื ืื ื•ืฉื™ืช. ื–ื” ื›ื•ืœืœ ืืช
ืกื•ื’ ืคืจืžื˜ืจ, ื‘ืจื™ืจืช ืžื—ื“ืœ, ื˜ื•ื•ื— ื•ื”ืขืจื•ืช ื›ืœืฉื”ืŸ. ืฉื•ืจื” ืฉืžื›ื™ืœื”
__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__ ืžื•ื—ืœืฃ ืขืœ ื™ื“ื™ ืžื™ืœื•ืŸ ื”ืžื•ื ื—ื™ื ืฉืœ ื”ืคืจืžื˜ืจื™ื, ื›ืœ ื˜ืงืกื˜ ืื—ืจ ื‘-
ืžืชืขืœืžื™ื ืžืื•ืชื” ืฉื•ืจื”.

__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื_GNU__: ื›ืžื• __ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__ ืื‘ืœ ื‘ืกื’ื ื•ืŸ ื’ื ื•. ืื•ืคืฆื™ื•ื ืœื™ ื•ืื—ืจื™ื• an
ืžืกืคืจ ืฉืœื ื‘ืกื•ื’ืจื™ื™ื ื”ืžืฆื™ื™ืŸ ืืช ื”ื”ื–ื—ื” ืฉืœ ื”ื˜ืงืกื˜ ื”ืชื™ืื•ืจื™ (ืœืžืฉืœ
__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__(30)). ื”ื–ื—ื” ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื 24.

__STRING__(ื™ื): ืงื‘ื•ืข ืžื—ืจื•ื–ืช, ื‘-C ื›ื ืจืื” ืžืืงืจื• ืžื—ืจื•ื–ืช ื”ืžื•ื’ื“ืจ ืขื
#define ืคืงื•ื“ืช ืžืขื‘ื“. ื ื™ืชืŸ ืœื™ื™ื‘ื ืžืืงืจื• ื–ื” ืžืงื•ื‘ืฅ ืื—ืจ ื‘ืืžืฆืขื•ืช
ื”ื•ืจืืช include ื‘ืงื•ื‘ืฅ genparse. ื”ืชืขืœืžื• ื‘ืขืช ื™ืฆื™ืจืช ืคืœื˜ Java.

__INT__(x): ืงื‘ื•ืข ืžืกืคืจ ืฉืœื, ื‘-C ื›ื ืจืื” ืžืืงืจื• ืฉืœื ื”ืžื•ื’ื“ืจ ืขื ื”-
#define ืคืงื•ื“ืช ืžืขื‘ื“. ื ื™ืชืŸ ืœื™ื™ื‘ื ืžืืงืจื• ื–ื” ืžืงื•ื‘ืฅ ืื—ืจ ื‘ืืžืฆืขื•ืช
ื”ื•ืจืืช include ื‘ืงื•ื‘ืฅ genparse. ื”ืชืขืœืžื• ื‘ืขืช ื™ืฆื™ืจืช ืคืœื˜ Java.

__CODE__(ื”ืฆื”ืจื•ืช): ื–ื”ื” ืœืืคืฉืจื•ื™ื•ืช ื”ืคืจืžื˜ืจื™ื, ืจืื” ืœืžืขืœื”.

__DO_NOT_DOCUMENT__: ื›ืœ ืฉื•ืจื” ื”ืžื›ื™ืœื” ืžืืงืจื• ื–ื” ืœื ืชื•ื“ืคืก ื‘-
ื ื•ึนื”ึธื’() ืคื•ึผื ืงืฆึดื™ึธื”. ื™ื›ื•ืœ ืœืฉืžืฉ ืœื™ื™ืฉื•ื ืคืจืžื˜ืจื™ื ืฉืœ ืฉื•ืจืช ื”ืคืงื•ื“ื” ืœืœื
ืจื™ืฉื•ื ืื•ืชื ื‘ืžืกืš ื”ืขื–ืจื”.

__NL__: ืฉื•ืจื” ื—ื“ืฉื”. ืฉื™ืžื•ืฉื™ ืœืฉื‘ื™ืจืช ืงื•ื•ื™ื ื™ื“ื ื™ืช ืชื•ืš ืฉื‘ื™ืจืช ืงื•ื•ื™ื ืื•ื˜ื•ืžื˜ื™ืช
ืคื•ืขืœ (ืจืื” #break_lines). ื”ืชืขืœืžื• ื‘ืขืช ื™ืฆื™ืจืช ืคืœื˜ Java.

__NEW_PRINT__: ืกื’ื•ืจ ืืช ืคืงื•ื“ืช ื”ื”ื“ืคืกื” ื”ืคืขื™ืœื” ื•ื”ืชื—ืœ ืคืงื•ื“ืช ื—ื“ืฉื”.

__COMMENT__(ื˜ืงืกื˜): ื”ืขืจื” ื‘ืงื•ื“ ืœื”ื“ืคืกืช ื˜ืงืกื˜ ื”ืฉื™ืžื•ืฉ.

ืื•ืคืฆื™ื•ืช ืืจื•ื›ื•ืช ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ืžืœื•ื•ื” ื‘ืกื™ืžืŸ = ื•ืฆื™ื•ืŸ ืื•ืคืฆื™ื•ื ืœื™ opt_name ืฉื™ื›ื•ืœ
ืœื”ืชื™ื™ื—ืก ื‘ืชื™ืื•ืจ ื”ื‘ื. ื–ื” ื™ืฉืžืฉ ื‘ ื ื•ึนื”ึธื’() ืคื•ื ืงืฆื™ื”
ืจืง. ืœืžืฉืœ ืฉื•ืจืช ื”ื’ื ืคืืจื–ื” ื”ื‘ืื”

s / block-size=SIZE int "ื”ืฉืชืžืฉ ื‘ืœื•ืงื™ื ืฉืœ SIZE-byte"

ื™ื•ื‘ื™ืœ ืœืฉื•ืจื” ื”ื‘ืื” ื‘ืžืกืš ื”ืขื–ืจื”

[ -s ] [ --block-size=SIZE ] (ืกื•ื’=INTEGER)
ื”ืฉืชืžืฉ ื‘ืœื•ืงื™ื ืฉืœ SIZE-byte

ื‘ืกื’ื ื•ืŸ ื’ื ืคืืจืก (__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__) ืื•

-s, --block-size=SIZE ื”ืฉืชืžืฉ ื‘ืœื•ืงื™ื ืฉืœ SIZE-byte

ื‘ืกื’ื ื•ืŸ ื’ื ื• (__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื_GNU__).

ืืคืฉืจ ื’ื ืœืฉื™ื ืกื•ื’ืจื™ื ืžืจื•ื‘ืขื™ื ืกื‘ื™ื‘ ื”ืฉื ื”ืื•ืคืฆื™ื•ื ืœื™ ืขืœ ืžื ืช ืœืฆื™ื™ืŸ
ืฉื”ื˜ื™ืขื•ืŸ ื”ื•ื ืื•ืคืฆื™ื•ื ืœื™. ืขื ื–ืืช, ืื™ืŸ ืœื–ื” ืžืฉืžืขื•ืช ืขื‘ื•ืจ ื”ืžื ืชื— ืฉื ื•ืฆืจ. ืœื”ืฉืชืžืฉ
* ืชื™ืงื•ื ื™ ืคื•ืกื˜ ืขืœ ืžื ืช ืœื”ืคื•ืš ืืจื’ื•ืžื ื˜ ืœืื•ืคืฆื™ื•ื ืœื™.

s* / block*[=SIZE] int "ื”ืฉืชืžืฉ ื‘ืœื•ืงื™ื."
"ืื ืœื ื™ื™ื ืชืŸ SIZE ืื– ื”ื ื™ืงื‘ืœื• ื’ื•ื“ืœ ืฉืœ 1kB."

ื™ื•ื‘ื™ืœ ืœืฉื•ืจื” ื”ื‘ืื” ื‘ืžืกืš ื”ืขื–ืจื”

-s, --block[=SIZE] ื”ืฉืชืžืฉ ื‘ืœื•ืงื™ื.
ืื ืœื ื™ื™ื ืชืŸ SIZE ืื– ื”ื ื™ืงื‘ืœื• ื’ื•ื“ืœ ืฉืœ 1kB.

ื“ื•ื’ืžื


ื”ื ื” ืงื•ื‘ืฅ Genparse ืœื“ื•ื’ืžื”:

#ืœึดื›ืœื•ึนืœ

/* ืชื’ื•ื‘ื” */
my_callback()

i / iterations int 100 [10...1000] iter_callback()
"ืžืกืคืจ ืื™ื˜ืจืฆื™ื•ืช ืœืจื•ืฅ."

/*
* ื”ืขืจื”
*/

n / name string {"mike"} name_cb() "ืฉื ื”ืžืฉืชืžืฉ"
s / str string "ืžื—ืจื•ื–ืช ื‘ื“ื™ืงื”"
ื“ื’ืœ f "ื“ื’ืœ ื˜ื™ืคืฉ!"

#ืฉื™ืžื•ืฉ_ื”ืชื—ืœ
ืฉื™ืžื•ืฉ: __PROGRAM_NAME__ __OPTIONS_SHORT__ ืฉื ืงื•ื‘ืฅ
ื–ื• ืจืง ืชื•ื›ื ื™ืช ืžื‘ื—ืŸ ืžื˜ื•ืคืฉืช.
__ืžื™ืœื•ืŸ ืžื•ื ื—ื™ื__
#usage_end

ื”ืฉืชืžืฉ ื‘-genparse ื‘ืื™ื ื˜ืจื ื˜ ื‘ืืžืฆืขื•ืช ืฉื™ืจื•ืชื™ onworks.net


ืฉืจืชื™ื ื•ืชื—ื ื•ืช ืขื‘ื•ื“ื” ื‘ื—ื™ื ื

ื”ื•ืจื“ ืืคืœื™ืงืฆื™ื•ืช Windows & Linux

ืคืงื•ื“ื•ืช ืœื™ื ื•ืงืก

Ad