
éèŠãªæŽæ°ã èšäºãèªãåã«èªã
ç§ã®ããã§ããããã®åºçç©ã«é¢ããŠæ··ä¹±ãçããŸããã ããã§ããã®èŠåãè¿œå ããããšã«ããŸããã
ãã®äžé£ã®èšäºã§ã¯ãç¹å®ã®cpprtã«é¢ä¿ãªããç¹å®ã®ãªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã®éçºã®æŽå²ããã匷調ãããã£ãã®ã§ãã ã¹ããŒãªãŒã¯ããœãŒã¹ã³ãŒãã®äœæïŒã©ã€ãã©ãªèªäœã«é¢ä¿ãªãã人ã ãèªãããšã«èå³ãæã€ããã€ãã®èå³æ·±ããã®ã«éç¹ã眮ããŠïŒããããªããžããªã®äœæïŒCMakeã¬ãã¹ã³ã§ïŒããã³ã©ã€ãã©ãªã®ããã¢ãŒã·ã§ã³ïŒããã¢ãŒã·ã§ã³ã®äžéšã«ãã®ã·ãªãŒãºã®èšäºã®çºè¡ãå«ãŸããïŒã«ãããŸãã ãªãŒãã³ãœãŒã¹ãæçš¿ããããšãèããŠããããæããŠããããæ¹æ³ãç¥ããªãã£ã人ã ã®ããã®ãã®ãããªãã¬ãŒãã³ã°ãã¢ãããžã§ã¯ãã
ãã¡ãããå³æžé€šãã©ãããããã掻æ°ã¥ãããã©ããã¯æ°ã«ããŸããããèšäºã®äžã«ã¯æå°éã®å³æžé€šåºåãããããŸããïŒãã¿ãã¬ã®äžã«é ãããšããŸããïŒã ããããããã§ãããã®ãµã€ã¯ã«ã®ç®çã¯ããªãæè²çã§ãããç§ãæãã§ããããã«ãäžè¬çã«ã¯å³æžé€šãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãªãã«é©çšã§ãããšèããŸããã
äžé£ã®èšäºãèªããšãã«ãããèæ ®ããŠãã ããã
ãã®äžé£ã®èšäºã§ã¯ãç¹å®ã®cpprtã«é¢ä¿ãªããç¹å®ã®ãªãŒãã³ãœãŒã¹ã©ã€ãã©ãªã®éçºã®æŽå²ããã匷調ãããã£ãã®ã§ãã ã¹ããŒãªãŒã¯ããœãŒã¹ã³ãŒãã®äœæïŒã©ã€ãã©ãªèªäœã«é¢ä¿ãªãã人ã ãèªãããšã«èå³ãæã€ããã€ãã®èå³æ·±ããã®ã«éç¹ã眮ããŠïŒããããªããžããªã®äœæïŒCMakeã¬ãã¹ã³ã§ïŒããã³ã©ã€ãã©ãªã®ããã¢ãŒã·ã§ã³ïŒããã¢ãŒã·ã§ã³ã®äžéšã«ãã®ã·ãªãŒãºã®èšäºã®çºè¡ãå«ãŸããïŒã«ãããŸãã ãªãŒãã³ãœãŒã¹ãæçš¿ããããšãèããŠããããæããŠããããæ¹æ³ãç¥ããªãã£ã人ã ã®ããã®ãã®ãããªãã¬ãŒãã³ã°ãã¢ãããžã§ã¯ãã
ãã¡ãããå³æžé€šãã©ãããããã掻æ°ã¥ãããã©ããã¯æ°ã«ããŸããããèšäºã®äžã«ã¯æå°éã®å³æžé€šåºåãããããŸããïŒãã¿ãã¬ã®äžã«é ãããšããŸããïŒã ããããããã§ãããã®ãµã€ã¯ã«ã®ç®çã¯ããªãæè²çã§ãããç§ãæãã§ããããã«ãäžè¬çã«ã¯å³æžé€šãšã®ã³ãã¥ãã±ãŒã·ã§ã³ãªãã«é©çšã§ãããšèããŸããã
äžé£ã®èšäºãèªããšãã«ãããèæ ®ããŠãã ããã
ãã®èšäºã¯ã cppã©ã³ã¿ã€ã ã©ã€ãã©ãªã®éçºãµã€ã¯ã«ã®3çªç®ã§æåŸã§ããããã«ãããC ++ã¯ã©ã¹ã«é¢ããã¡ã¿æ å ±ãè¿œå ããããã°ã©ã å®è¡äžã«ãã®æ å ±ãåŒãç¶ã䜿çšããæ©èœãè¿œå ãããŸãã
ãã®èšäºã§ã¯ããŠãŒã¶ãŒãã©ã€ãã©ãªãæäœããæ¹æ³ã«ã€ããŠèª¬æããã·ãªãŒãºã®æåã®2ã€ã®èšäºã§èª¬æããäœæ¥ã®æçµçµæã瀺ããŸãã
ãµã€ã¯ã«å
ã®ãã¹ãŠã®èšäºãžã®ãªã³ã¯
ã©ã€ãã©ãªãªããžããªãžã®ãªã³ã¯
ãã®èšäºã«èšèŒãããŠããããšã¯ã e9c34bbã³ãããã«ãåœãŠã¯ãŸããŸãã
ãããžã§ã¯ãæ§é
-ããã¥ã¡ã³ã---
readme.md
READMEãã¡ã€ã«ã ããã¯ããããžã§ã¯ãã«æ £ããããã®ãã¡ã€ã«ãšããŠèæ¡ãããŸããã
README.cmake
CMakeããã³/ãŸãã¯ä»å±ã®è¿œå ã®ãã«ãç®æšã䜿çšããŠã©ã€ãã©ãªããã«ãããæ¹æ³ã瀺ããã¡ã€ã«ã
/ docs
ããã¥ã¡ã³ããå ¥ã£ããã©ã«ã...æ®å¿µãªããããã®äžã«ããå¯äžã®ãã®ã¯ããã®äžé£ã®èšäºãžã®ãªã³ã¯ã§ãã ç§ã¯ééã£ãŠããŠãããã¥ã¡ã³ããæåŸã«å»¶æãããã®ã·ãªãŒãºã®èšäºã«é±æ«ããªããã°3é±éã®ä»äºã®åŸã察åŠããåæ°ããããŸããã§ããã
-cpprtã©ã€ãã©ãªãã¡ã€ã«---
/å«ã
cpprtã©ã€ãã©ãªAPIã«ã¢ã¯ã»ã¹ããããã®ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã
/ src
ã©ã€ãã©ãªã®ãœãŒã¹ã³ãŒããå«ããã©ã«ããŒã
-äžè¬çãªã·ã¹ãã åãã®ãã«ã---
/ãã«ã
ããã€ãã®äžè¬çãªããŒã«ãã§ãŒã³ãšIDEã®æ¢è£œãããžã§ã¯ãã
/ lib
ããã€ãã®äžè¬çãªã³ã³ãã€ã©çšã®æ¢è£œã®ã©ã€ãã©ãªãã«ãã
-è¿œå ãããžã§ã¯ã---
/äŸ
ãµã³ãã«ã®ãœãŒã¹ãã©ã«ããŒ...çŸæç¹ã§ã¯ãã©ã€ãã©ãªã®äœ¿çšåçã瀺ã1ã€ã®ç°¡åãªäŸã§ãã
/ããŒã«
ã©ã€ãã©ãªã«ä»å±ããããŒã«ã®ãœãŒã¹ãã©ã«ããŒã
-ãã«ãã·ã¹ãã ---
/ãã«ã
ã©ã€ãã©ãªãè¿œå ã®ãã«ãç®æšããã«ãããããšãæšå¥šããã空ã®ãã©ã«ããŒã
CMakeLists.txt
CMakeæ§æãã¡ã€ã«ã
-ãã®ä»ã®ãã¡ã€ã«---
Licence.txt
ãããžã§ã¯ããé åžãããã©ã€ã»ã³ã¹ãã¡ã€ã«ïŒMIT-licenseïŒã
copy.txt
ã©ã€ã»ã³ã¹æ å ±ãèšè¿°ãããœãŒã¹ã³ãŒããã¡ã€ã«ã®ããããŒãã³ãã¬ãŒããã¡ã€ã«ã
readme.md
READMEãã¡ã€ã«ã ããã¯ããããžã§ã¯ãã«æ £ããããã®ãã¡ã€ã«ãšããŠèæ¡ãããŸããã
README.cmake
CMakeããã³/ãŸãã¯ä»å±ã®è¿œå ã®ãã«ãç®æšã䜿çšããŠã©ã€ãã©ãªããã«ãããæ¹æ³ã瀺ããã¡ã€ã«ã
/ docs
ããã¥ã¡ã³ããå ¥ã£ããã©ã«ã...æ®å¿µãªããããã®äžã«ããå¯äžã®ãã®ã¯ããã®äžé£ã®èšäºãžã®ãªã³ã¯ã§ãã ç§ã¯ééã£ãŠããŠãããã¥ã¡ã³ããæåŸã«å»¶æãããã®ã·ãªãŒãºã®èšäºã«é±æ«ããªããã°3é±éã®ä»äºã®åŸã察åŠããåæ°ããããŸããã§ããã
-cpprtã©ã€ãã©ãªãã¡ã€ã«---
/å«ã
cpprtã©ã€ãã©ãªAPIã«ã¢ã¯ã»ã¹ããããã®ããã°ã©ãã³ã°ã€ã³ã¿ãŒãã§ã€ã¹ã
/ src
ã©ã€ãã©ãªã®ãœãŒã¹ã³ãŒããå«ããã©ã«ããŒã
-äžè¬çãªã·ã¹ãã åãã®ãã«ã---
/ãã«ã
ããã€ãã®äžè¬çãªããŒã«ãã§ãŒã³ãšIDEã®æ¢è£œãããžã§ã¯ãã
/ lib
ããã€ãã®äžè¬çãªã³ã³ãã€ã©çšã®æ¢è£œã®ã©ã€ãã©ãªãã«ãã
-è¿œå ãããžã§ã¯ã---
/äŸ
ãµã³ãã«ã®ãœãŒã¹ãã©ã«ããŒ...çŸæç¹ã§ã¯ãã©ã€ãã©ãªã®äœ¿çšåçã瀺ã1ã€ã®ç°¡åãªäŸã§ãã
/ããŒã«
ã©ã€ãã©ãªã«ä»å±ããããŒã«ã®ãœãŒã¹ãã©ã«ããŒã
-ãã«ãã·ã¹ãã ---
/ãã«ã
ã©ã€ãã©ãªãè¿œå ã®ãã«ãç®æšããã«ãããããšãæšå¥šããã空ã®ãã©ã«ããŒã
CMakeLists.txt
CMakeæ§æãã¡ã€ã«ã
-ãã®ä»ã®ãã¡ã€ã«---
Licence.txt
ãããžã§ã¯ããé åžãããã©ã€ã»ã³ã¹ãã¡ã€ã«ïŒMIT-licenseïŒã
copy.txt
ã©ã€ã»ã³ã¹æ å ±ãèšè¿°ãããœãŒã¹ã³ãŒããã¡ã€ã«ã®ããããŒãã³ãã¬ãŒããã¡ã€ã«ã
å³æžé€šããã³ä»å±è³æã®çµã¿ç«ãŠ
ãããžã§ã¯ãã®ãã«ãã·ã¹ãã ãã©ã®ããã«äœæããããã«ã€ããŠã¯ããµã€ã¯ã«ã®2çªç®ã®èšäºïŒ ãªã³ã¯ ïŒã§èªãããšãã§ããŸãã
ã©ã€ãã©ãªèªäœãšãµããŒãè³æãæ§ç¯ããæšå¥šæ¹æ³ã«ã¯ã CMakeã®äœ¿çšãå«ãŸããŸãã CMakeãã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ããã¡ãããããŠã³ããŒãã§ããŸãã
ã³ãã³ãã©ã€ã³ãããã«ãããã«ã¯ã次ã®æé ãå®è¡ããŸãã
1.éœåã®è¯ãå Žæã«ããã«ããããã©ã«ããŒãäœæããŸãã ãã®ãã©ã«ããŒã«ç§»åããŸãã
mkdir {your-build-folder}
cd {your-build-folder}
{your-build-folder} - ãã«ããããã©ã«ã㌠ã
2.ã³ãã³ããåŒã³åºããŠæ§æãçæããŸãã
cmake -G "{generator-name}" {options} {cpprt-folder-path}
{generator-name} -ã¯ã©ãŠãã€ã³ã®ãžã§ãã¬ãŒã¿ãŒã®ååã
{options} -åéããå 容ãæ£ç¢ºã«ç€ºããªãã·ã§ã³ã®ãªã¹ãã
ãªãã·ã§ã³ã®è©³çŽ°
éžæãããªãã·ã§ã³ã«é¢ä¿ãªããçæãããæ§æïŒIDEãã¡ã€ã«ïŒã«ã¯ãcpprtã©ã€ãã©ãªèªäœã®éçã¢ã»ã³ããªã®ããã«ãå°ãªããšã1ã€ã®ãã«ãã¿ãŒã²ãããåžžã«ãããŸãã è¿œå ã®ãµããŒããããžã§ã¯ãã®ã¢ã»ã³ããªã®æ§æãçæããã«ã¯ã次ã®ãªãã·ã§ã³ã䜿çšã§ããŸãïŒãªãã·ã§ã³ã®ããã©ã«ãå€ãæåã«æå®ãããŸãïŒã
-DBUILD_ALL = {OFF / ON}
ãã®ãªãã·ã§ã³ãONã«èšå®ãããšãäžç·ã«æäŸããããã¹ãŠã®ä»éããã©ã€ãã©ãªãããžã§ã¯ãã®æ§æãçæãããŸãã ããã«ãç¹å®ã®ã¢ã»ã³ããªç®æšãçµã¿ç«ãŠãããã®ãªãã·ã§ã³ãããå Žåã
-DBUILD_TOOLS = {OFF / ON}
ãã®ãªãã·ã§ã³ããªã³ã«èšå®ãããŠããå Žåãã©ã€ãã©ãªã«ä»å±ã®ããŒã«ãçµã¿ç«ãŠãããã®æ§æãçæãããŸãã çŸæç¹ã§ã¯ãã³ã³ãœãŒã«ãšããããŒã«ã1ã€ãããŸãïŒããã«ã€ããŠã¯ããã«èª¬æããŸã ïŒã
-DBUILD_EXAMPLES = {OFF / ON}
ãã®ãªãã·ã§ã³ãONã«èšå®ãããŠããå Žåãã©ã€ãã©ãªã§æäŸãããäŸããã«ãããããã®æ§æãçæãããŸãã çŸæç¹ã§ã¯ãåç©ã®ã¯ã©ã¹ã®éå±€ã®å€å žçãªOOPã®äŸã説æãã1ã€ã®äŸïŒsimple_exampleïŒããããŸãã
è¿œå ãªãã·ã§ã³ïŒ
-DCONSOLE_WITH_EXAMPLE = {ON / OFF}
ãã®ãªãã·ã§ã³ãONïŒããã©ã«ãã§èšå®ïŒã«èšå®ãããŠããå Žåãã³ã³ãœãŒã«ããŒã«ã®ãœãŒã¹ã³ãŒããšãšãã«ããã¹ââãã¯ã©ã¹éå±€ã®èª¬æãå«ããã¡ã€ã«ãåéãããŸãã
-DBUILD_ALL = {OFF / ON}
ãã®ãªãã·ã§ã³ãONã«èšå®ãããšãäžç·ã«æäŸããããã¹ãŠã®ä»éããã©ã€ãã©ãªãããžã§ã¯ãã®æ§æãçæãããŸãã ããã«ãç¹å®ã®ã¢ã»ã³ããªç®æšãçµã¿ç«ãŠãããã®ãªãã·ã§ã³ãããå Žåã
-DBUILD_TOOLS = {OFF / ON}
ãã®ãªãã·ã§ã³ããªã³ã«èšå®ãããŠããå Žåãã©ã€ãã©ãªã«ä»å±ã®ããŒã«ãçµã¿ç«ãŠãããã®æ§æãçæãããŸãã çŸæç¹ã§ã¯ãã³ã³ãœãŒã«ãšããããŒã«ã1ã€ãããŸãïŒããã«ã€ããŠã¯ããã«èª¬æããŸã ïŒã
-DBUILD_EXAMPLES = {OFF / ON}
ãã®ãªãã·ã§ã³ãONã«èšå®ãããŠããå Žåãã©ã€ãã©ãªã§æäŸãããäŸããã«ãããããã®æ§æãçæãããŸãã çŸæç¹ã§ã¯ãåç©ã®ã¯ã©ã¹ã®éå±€ã®å€å žçãªOOPã®äŸã説æãã1ã€ã®äŸïŒsimple_exampleïŒããããŸãã
è¿œå ãªãã·ã§ã³ïŒ
-DCONSOLE_WITH_EXAMPLE = {ON / OFF}
ãã®ãªãã·ã§ã³ãONïŒããã©ã«ãã§èšå®ïŒã«èšå®ãããŠããå Žåãã³ã³ãœãŒã«ããŒã«ã®ãœãŒã¹ã³ãŒããšãšãã«ããã¹ââãã¯ã©ã¹éå±€ã®èª¬æãå«ããã¡ã€ã«ãåéãããŸãã
{cpprt-folder-path} -cpprtãªããžããªã®ã¯ããŒã³ã®ã«ãŒãã§ãããã©ã«ããŒã
åŒã³åºãåŸãããŒã«ãã§ãŒã³ïŒãŸãã¯IDEïŒã®æ§æãã¡ã€ã«ã{your-build-folder}ãã©ã«ããŒã«çæãããŸãã ããã«èšå®ããå¿ èŠã¯ãããŸããã ç®çã®ã¢ã»ã³ããªç®æšïŒIDEã®ãããžã§ã¯ãïŒã®ã¢ã»ã³ããªãéå§ããã ãã§ãã
ã©ã€ãã©ãªæ©èœ
cpprtã©ã€ãã©ãªãæäŸããAPIã䜿çšããŠãã¯ã©ã¹ãç»é²ã§ããŸãã ã¯ã©ã¹ãç»é²ãããŠããå Žåã次ã®ãªãã·ã§ã³ãéãããŸãã
1.æååè¡šçŸã®ã¯ã©ã¹åã«åºã¥ããŠãããã°ã©ã ã®å®è¡äžã«ã¯ã©ã¹ãªããžã§ã¯ããäœæããŸãã
2.ã¯ã©ã¹ã®ç»é²çžç¶äººããã³å ç¥ã«é¢ããæ å ±ãžã®ã¢ã¯ã»ã¹ïŒç»é²äžã«éä¿¡ãããæ å ±ã®ç¯å²ãŸã§ïŒã
3.ã¯ã©ã¹ã®æœè±¡æ§ã«é¢ããæ å ±ãåä¿¡ããæ©èœã
4.ãªããžã§ã¯ãã®ã¡ãœãããä»ããŠã¯ã©ã¹ã®æåååãååŸããæ©èœã
以äžã¯ãã¯ã©ã¹ã¡ã¿æ å ±ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ãã ããã§ã¯ãã¯ã©ã¹ã®ãã©ã€ããŒãã¡ã³ããŒãã¡ãœããå®è£ ãããã³ãã®ä»ã®æ®»ã¯çç¥ãããŠããŸãã ç»é²æžã¿ã¯ã©ã¹ã®ã¡ã¿ããŒã¿ãšã®å¯Ÿè©±ãçºçããã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ïŒ
Cpprtã©ã€ãã©ãªã€ã³ã¿ãŒãã§ã€ã¹
// , cpprt. // - // . class CPPRTRuntime { public: //---------------------------------------------------------------- // // , // . // , // . // // CPPRTRuntime. class ClassData { public: // . // // // ++. // (ns - namespace). // // . // <fullName> = <ns>::<ns>::<ns>...<ns>::<name> const char *fullName() const; const char *name() const; // , , // , , // . bool isInterface(); // , // ClassData. ICPPRTManagedClass *createObject(); }; // , // // CPPRTRuntime::observeChildren(âŠ). // : enum ObservingFlag { // , // // . ObservingFlagWithoutInterface = 1 << 0, // // ( // , ). ObservingFlagRecursive = 1 << 1, // , // , // ( inBaseRegistry // CPPRTRuntime::observeChildren(âŠ) ObservingFlagIgnoreBase = 1 << 2 }; // , // . , // ( , // , ) typedef char ObservingFlags; //---------------------------------------------------------------- // // , // inBaseRegistry , // inFlags (. ). , // , , // outRegistries. // inBaseRegistry NULL, // , , // , // , . void observeChildren(ClassData *inBaseRegistry, std::vector<ClassData *> &outRegistries, ObservingFlags inInheritFlags = 0); // // . ClassData *getClassData(const char *inClassName); // , // . ICPPRTManagedClass *createObject(const char *inClassName); }; // . CPPRTRuntime &cppRuntime(); // . // , // . typedef CPPRTRuntime::ClassData CPPRTClassData;
APIã䜿çšããŠã¡ã¿ããŒã¿ãšããåãããäŸïŒ
1.ã¯ã©ã¹ã®æåååã䜿çšããŠãªããžã§ã¯ããäœæããŸãã
ICPPRTManagedClass *theTestClassObject = cppRuntime().createObject(âTestClassâ);
2.åºæ¬ã¯ã©ã¹ã®ãªããžã§ã¯ããžã®ãã€ã³ã¿ãŒã«ãããã¯ã©ã¹ã®æœè±¡æ§ã«é¢ããæ å ±ã®åºåïŒ
void printObjectClassInformation(ICPPRTManagedClass *inObject) { const CPPRTRuntime::ClassData &theClassData = *inObject->getClassDataRT(); std::cout << âClass â << theClassData.fullName() << â is â << theClassData.isInterface() ? âabstractâ : âconcreteâ << std::endl; }
3. TestClassã¯ã©ã¹ã®ãã¹ãŠã®åå«ã¯ã©ã¹ã®ååã®ãªã¹ãã åæã«ãçžç¶äººã®çžç¶äººãååž°çã«éžæãããæœè±¡ã¯ã©ã¹ããã£ã«ã¿ãªã³ã°ãããTestClassã¯ã©ã¹èªäœã®ã¡ã¿æ å ±ãçµæãªã¹ãã«è¿œå ãããŸããã
std::vector<CPPRTClassData *> theChildData; cppRuntime().observeChildren(TestClass::gClassData, theChildData, ObservingFlagWithoutInterface | ObservingFlagRecursive | ObservingFlagIgnoreBase); for (size_t theIndex = 0, theSize = theChildData.size(); theIndex < theSize; ++theIndex) { std::cout << theChildData[theIndex]->fullName() << std::endl; }
4.ç¥å ã®ãªããã¹ãŠã®ã¯ã©ã¹ã®ååã®ãªã¹ãïŒ
std::vector<CPPRTClassData *> theBasesData; cppRuntime().observeChildren(NULL, theBasesData); for (size_t theIndex = 0, theSize = theBasesData.size(); theIndex < theSize; ++theIndex) { std::cout << theBasesData [theIndex]->fullName() << std::endl; }
ã¯ã©ã¹ç»é²
次ã«ãã¯ã©ã¹ãç»é²ããããã«å¿ èŠãªãã®ãææ¡ããŸãããã
1.ç»é²ãããã¯ã©ã¹ã«ã¯ãå ç¥ã«ICPPRTManagedClassã¯ã©ã¹ãå¿ èŠã§ãã ãŠãŒã¶ãŒéå±€ã®åºæ¬ã¯ã©ã¹ãICPPRTManagedClassãç¶æ¿ããã°ååã§ãã äŸïŒ
// UserClasses.h // . // ICPPRTManagedClass. class UserBaseClass : public ICPPRTManagedClass { . . . // <- , }; // UserBaseClass ICPPRTManagedClass, // UserInheritedClass ICPPRTManagedClass. class UserInheritedClass : public UserBaseClass { . . . // <- , };
2.ç»é²ãããã¯ã©ã¹ã«ã¯ãcpprtã©ã€ãã©ãªã䜿çšããã¡ãœãããšãã£ãŒã«ããå¿ èŠã§ãã ããããæåã§èšè¿°ããªãããã«ã¯ãç»é²ã«ãã¯ãã䜿çšããããšããå§ãããŸãã ãã¯ãã«ã¯2ã€ã®ã°ã«ãŒãããããŸããå¿ èŠãªãã£ãŒã«ããšã¡ãœããã宣èšãããããšãå®è£ ããããã§ãã
å®£èš ã CPPRT_DECLARATION-宣èšçšã®ãã¯ãã 1ã€ã®åŒæ°ãåããŸã-ç»é²ãããã¯ã©ã¹ã®ååïŒååã®æååã§ã¯ãªããååèªäœïŒã ãã¯ããå±éãããã³ãŒãã¯ãä¿è·ãããã¢ã¯ã»ã¹æå®åã§çµãããŸãã ããã¯ãæ¢åã®ã³ãŒãã«ãã¯ããããç°¡åã«å«ããããã«è¡ãããŸããã¯ã©ã¹å®£èšã®å é ã§ãã¯ãã䜿çšãããšãåŸç¶ã®ãã¹ãŠã®å®£èšãããã¯ã©ã¹ã¡ã³ããŒã®ã¢ã¯ã»ã¹ã¯ããã¯ãã䜿çšããªãå ŽåãšåããŸãŸã«ãªãããã§ãïŒC ++ã§ã¯ã宣èšãããã¡ã³ããŒã¯å¥ã®ã¢ã¯ã»ã¹æå®åã®åã«å®£èšãããããã¯ã©ã¹ã«ã¯ã¢ã¯ã»ã¹ãä¿è·ãããŠããŸãïŒã äŸïŒ
// UserClasses.h class UserBaseClass : public ICPPRTManagedClass { // , , // // protected. CPPRT_DECLARATION(UserBaseClass) . . . // <- }; class UserInheritedClass : public UserBaseClass { // // â // CPPRT_DECLARATION(UserInheritedClass) . . . // <- };
å®è£ ã ã¯ã©ã¹ã«é¢ããã¡ã¿æ å ±ã®å€§éšåã¯ãå®è£ ãã¯ãã®äžéšãšããŠæž¡ãããŸãã ãããã®ãã¯ãã¯ãåºæ¬ã¯ã©ã¹ã®æ°ã«å¿ããŠã°ã«ãŒãã«åããããŸãã
CPPRT_CLASS_IMPLEMENTATION_BASE_ {N}ïŒCãB1ã...ãBNïŒ
CPPRT_INTERFACE_IMPLEMENTATION_BASE_ {N}ïŒCãB1ã...ãBNïŒ
Nã¯åºæ¬ã¯ã©ã¹ã®æ°ã§ãã
Cã¯ãå®è£ ãèšè¿°ãããŠããã¯ã©ã¹ã®å®å šä¿®é£Ÿåã§ãã
B1 ... BNã¯ãåºæ¬ã¯ã©ã¹ã®å®å šãªååã§ãã ãããã®ã¯ã©ã¹ã¯cpprtã§ç»é²ããå¿ èŠããããŸãã
CLASSãæã€ãã¯ãã¯ããªããžã§ã¯ããäœæã§ããã¯ã©ã¹ãç»é²ããããã«äœ¿çšãããINTERFACEã§ã¯ãæœè±¡ã¯ã©ã¹ãç»é²ããããã«äœ¿çšãããŸãã äŸïŒ
// UserClasses.cpp CPPRT_CLASS_IMPLEMENTATION_BASE_0(UserBaseClass); CPPRT_CLASS_IMPLEMENTATION_BASE_1(UserInheritedClass, UserBaseClass);
å®éã«ã¯ãããã ãã§ãã 説æãããŠããããšã¯ãcpprtå ã§ã¯ã©ã¹ãç»é²ããã®ã«ååã§ãã ãªããžããªå ã§å®éã®äŸãèŠãããšãã§ããŸãïŒã¢ã»ã³ããªã®ç®çã¯simple_exampleã§ããªãã·ã§ã³-DBUILD_EXAMPLES = {OFF / ON}ãCMakeãéããŠãããžã§ã¯ããçæããŸãïŒã
ããã§ã¯ãããè€éãªã¯ã©ã¹éå±€ã§ããå žåçãªã·ã¥ãŒãã£ã³ã°ã²ãŒã ã®ã¯ã©ã¹ç¶æ¿éå±€ãç»é²ããäŸã瀺ããŸãã
WeaponClasses.h
// Abstract classes // Bases class IWeapon : public ICPPRTManagedClass { CPPRT_DECLARATION(IWeapon) . . . }; class IAntiAir { CPPRT_DECLARATION(IAntiAir) . . . }; // Classification by weapon type class IMachineGunWeapon : public IWeapon { CPPRT_DECLARATION(IMachineGunWeapon) . . . }; class IRocketWeapon : public IWeapon { CPPRT_DECLARATION(IRocketWeapon) . . . }; // Concrete classes // Machine guns class M16 : public IMachineGunWeapon { CPPRT_DECLARATION(M16) . . . }; class Abakan : public IMachineGunWeapon { . CPPRT_DECLARATION(Abakan) . . . }; class Uzi : public IMachineGunWeapon { CPPRT_DECLARATION(Uzi) . . . }; // Rocket weapons class Stinger : public IRocketWeapon, public IAntiAir { CPPRT_DECLARATION(Stinger) . . . }; namespace IraqEdition { class Bazuka : public IRocketWeapon { CPPRT_DECLARATION(Bazuka) . . . }; } // Tank inner classes class Tank { public: class MachineGunTurret : public Abakan, public IAntiAir { CPPRT_DECLARATION(MachineGunTurret) . . . }; class RocketTurret : public IRocketWeapon { CPPRT_DECLARATION(RocketTurret) . . . }; };
WeaponClasses.cpp
// Abstract classes // Bases CPPRT_INTERFACE_IMPLEMENTATION_BASE_0(IWeapon) CPPRT_INTERFACE_IMPLEMENTATION_BASE_0(IAntiAir) // Classification by weapon type CPPRT_INTERFACE_IMPLEMENTATION_BASE_1(IMachineGunWeapon, IWeapon) CPPRT_INTERFACE_IMPLEMENTATION_BASE_1(IRocketWeapon, IWeapon) // Concrete classes // Machine guns CPPRT_CLASS_IMPLEMENTATION_BASE_1(M16, IMachineGunWeapon) CPPRT_CLASS_IMPLEMENTATION_BASE_1(Abakan, IMachineGunWeapon) CPPRT_CLASS_IMPLEMENTATION_BASE_1(Uzi, IMachineGunWeapon) // Rocket weapons CPPRT_CLASS_IMPLEMENTATION_BASE_2(Stinger, IRocketWeapon, IAntiAir) CPPRT_CLASS_IMPLEMENTATION_BASE_1(IraqEdition::Bazuka, IRocketWeapon) // Tank inner classes CPPRT_CLASS_IMPLEMENTATION_BASE_2(Tank::MachineGunTurret, IRocketWeapon, IAntiAir) CPPRT_CLASS_IMPLEMENTATION_BASE_1(Tank::RocketTurret, IRocketWeapon)
Player.h
class Player { private: IWeapon *_weapon; // Set with NULL value in constructor . . . public: // It's possible to set player's weapon by its class name. void setWeapon(const char *inName) { if (NULL != _weapon) delete _weapon; _weapon = cppRuntime().createObject(inName); } . . . };
Testdrive.cpp
int main() { Player thePlayer; thePlayer1.setWeapon("Abakan"); return 0; }
ãã®ä»ã®æ©èœ
cpprtå ã§ã¯ããã¹ãŠã®ã¯ã©ã¹ãç»é²ããå¿ èŠã¯ãªããã¯ã©ã¹ã®ãã¹ãŠã®åå«ãæå®ããå¿ èŠããããŸããã ããã¯ãããšãã°ãã¯ã©ã¹ç¶æ¿ã§ãµãŒãã¹ã€ã³ã¿ãŒãã§ã€ã¹ã®äžéšãé衚瀺ã«ããå Žåã«äŸ¿å©ã§ãã äŸïŒ
// Dog.h class Dog : public Mammal, public ISerializable { CPPRT_DECLARATION(Dog) . . . }; // Dog.cpp // ISerializable Dog // . , // // . ISerializable // . CPPRT_CLASS_IMPLEMENTATION_BASE_1(Dog, Mammal)
ã³ã³ãœãŒã«ããŒã«
ã©ã€ãã©ãªã«å ããŠãäŸã«å ããŠãã³ã³ãœãŒã«ããŒã«ãé ä¿¡ã«å«ãŸããŠããŸãã ã¯ã©ã¹ã®æåååã§ãªããžã§ã¯ããäœæããããã®ããã€ãã®ã³ãã³ããæäŸãïŒãªããžã§ã¯ãã¯ãã¹ãé åã«æ ŒçŽãããŸãïŒãç»é²ãããã¯ã©ã¹ã®ç¶æ¿éå±€ã衚瀺ããŸãã ã³ã³ãœãŒã«ã§ãµããŒããããŠããã³ãã³ãã®ç°¡åãªèª¬æïŒ
å©ããŠ
åŒã³åºããããšãã«ãã³ã³ãœãŒã«ã§äœ¿çšå¯èœãªãã¹ãŠã®ã³ãã³ãã«é¢ããçãæ å ±ãåºåããã³ãã³ãã
å°å·ïŒ-cïŒïŒ{full-class-name}ïŒ
ãã®ã³ãã³ããåŒæ°ãªãã§åŒã³åºãããå ŽåãçŸåšäœæãããŠãããã¹ãŠã®ãªããžã§ã¯ãã®ãªã¹ããšãã®ã¯ã©ã¹ã®è¡šç€ºãåºåãããŸãã
-cãã©ã°ã¯æž¡ãããŸããïŒãªãã·ã§ã³ãã©ã°ïŒãã¯ã©ã¹åã¯æž¡ãããªãå ŽåïŒãªãã·ã§ã³ãã©ã¡ãŒã¿ãŒ{full-class-name}ïŒããã®åŒã³åºãã¯ãããŒã¹ã¯ã©ã¹ïŒã«ãŒãã¯ã©ã¹ïŒãæããªããã¹ãŠã®ç»é²æžã¿ã¯ã©ã¹ã®ç»é²æžã¿åå«ã¯ã©ã¹ã®ããªãŒãåºåããŸãïŒ
-cãã©ã°ã«å ããŠãã¯ã©ã¹ã®ååãæå®ãããã©ã¡ãŒã¿ãŒ{full-class-name}ãæž¡ãããå Žåããã®ã³ãã³ãã¯ãæž¡ãããååãæã€ã¯ã©ã¹ã®ç»é²ãããåå«ã¯ã©ã¹ã®ããªãŒãåºåããŸãã
{ã¯ã©ã¹å} {ãªããžã§ã¯ãå}ãäœæ
ãªããžã§ã¯ãã®ãã¹ãé åã«åå{object-name}ãæã€ç»é²æžã¿ã¯ã©ã¹{class-name}ã®ãªããžã§ã¯ããäœæããã³ãã³ãã
{ãªããžã§ã¯ãå}ãåé€
ååã§ãªããžã§ã¯ãã®ãã¹ãé åãããªããžã§ã¯ããåé€ããã³ãã³ãã
åºã
ã³ã³ãœãŒã«ãçµäºããã³ãã³ãã ã³ã³ãœãŒã«ããã°ã©ã ã®å®è¡ãçµäºããŸãã
ããããç§ã¯ãã©ã€ãã©ãªã䜿çšããå¯èœæ§ã«ã€ããŠãã¹ãŠè©±ããŸããã ã©ã€ãã©ãªã§äœ¿çšãããŠããã»ãšãã©ã®ããªãã¯ãããªãã¯ã«ã€ããŠãããããã¹ãŠã®å®è£ æ¹æ³ãç¥ãããå Žåã¯ããµã€ã¯ã«ã®æåã®èšäºïŒ ãªã³ã¯ ïŒã§è©³ãã説æããŸããã ãã®èªæžã¯ãå³æžé€šã®ååãç解ããã®ã«ååã§ãã
ä»åŸã®èšç»
1.ç¶æ¿ããªãŒãç¥å ããç¶æ¿è ã ãã§ãªãããã®éã«ããã©ãå¯èœæ§ãå®çŸããã
è©Šäœæ©
std::vector<ClassData *> theParentsData; cppRuntime().observeParents(TestClass::gClassData, theParentsData, ObservingFlagWithoutInterface | ObservingFlagRecursive);
ãã®æ©èœã¯ãçŸåšã®å®è£ ã®ãã¬ãŒã ã¯ãŒã¯å ã§åºæ¬çã«å®è£ ãããŸã-ç¶æ¿ãããã¡ã¿ããŒã¿ã®ç¶æ¿è /åºæ¬ã¯ã©ã¹ã®ã¡ã¿ããŒã¿ãéžæããtrue / falseå€ã«å¿ããŠãããŒã«åŒæ°ObserveChildrenã䜿çšããŠãç¶æ¿è ãã€ã©ãŒãã¬ãŒãããã€ãã¹ããå éšã¡ãœãããäœæããå¿ èŠããããŸãã
2.ã©ã€ãã©ãªã¯ã©ã¹ã®éåžžã®ããŒã¿ã«ãã»ã«åã確ç«ããŸãã ã©ã€ãã©ãªã®çŸåšã®èšèšã§ã¯ãå€ãã®äžå¿ èŠãªåãšã¡ãœããïŒããšãã°ãåãCPPRTRuntimeã¯ã©ã¹ïŒãçªãåºãŠãããã©ã€ãã©ãªã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãæ··ä¹±ããŠããŸãã
3.ã¯ã©ã¹ã®ã¡ã¿æ å ±ããªãŒããã€ãã¹ããæ©èœã®å埩åãäœæããŸãã ããã«ãããåå«ããªãŒã®ååž°çãªãã©ããŒã¹äžã®ããŒã¿ã®äœ¿çšãç¯çŽããããŠãŒã¶ãŒã¯ã«ãã»ã«åãå£ããã«ã¯ã©ã¹ç¶æ¿ããªãŒãèªåã§ãã©ããŒã¹ã§ããŸãã
è©Šäœæ©
CPPRTRuntime::iterator theIterator = cppRuntime().iteratorForClassData(TestClass::gClassData); // - TestClass , // ClassToFind. CPPRTRuntime::ClassData *theData = NULL; while((theData = theIterator.nextChild()) != NULL) { if (0 == strcmp(theData->name(), "ClassToFind")) { // - â theIterator.moveToChild(); } }
ã€ãã¬ãŒã¿ã®ä»£æ¿ãšããŠã蚪åè ã®ãã¶ã€ã³ãã¿ãŒã³ã䜿çšã§ããŸãïŒããšãã°ã clangã§è¡ãããããã«ãããã«äœ¿çšäŸããããŸã ïŒã ãã®ã¢ãããŒãã¯éåžžãããªãŒããŒã¿æ§é ããã€ãã¹ããããã«äœ¿çšãããŸãã
4.ãŠãŒã¶ãŒæ å ±ãã¯ã©ã¹ã«è¿œå ã§ããããã«ããŸããããã«ãããèŠæ±ããããšãã«ãã®ããŒã¿ã«ãã£ãŠã¯ã©ã¹ããã£ã«ã¿ãªã³ã°ã§ããŸãã
è©Šäœæ©
// Classes.cpp CPPRT_CLASS_IMPLEMENTATION_BASE_1(Car, IVehicle) CPPRT_CLASS_IMPLEMENTATION_BASE_1(Bus, IVehicle) CPPRT_CLASS_IMPLEMENTATION_BASE_1(BigBus, IVehicle). // âbold_in_editorâ // BigBus. addTag(âbold_in_editorâ); // Using.cpp // , // âbold_in_editorâ std::vector<ClassData *> theChildData; cppRuntime().observeChildren(TestClass::gClassData, theChildData, ObservingFlagWithoutInterface | ObservingFlagRecursive | ObservingFlagIgnoreBase, âbold_in_editorâ); for (size_t theIndex = 0, theSize = theChildData.size(); theIndex < theSize; ++theIndex) { std::cout << theChildData[theIndex]->fullName() << std::endl; }
4.ãã³ãã¬ãŒãããµããŒãããŸãã ããã¯éåžžã«éèŠãªã¿ã¹ã¯ã§ãã æ¬åœã«å¿ èŠãªã®ãïŒã»ãšãã©ã®å Žåãå¿ èŠãªã®ãïŒããã³ãã¬ãŒãäŸåã¯ã©ã¹ã䜿çšããããã®APIãäžè¬çã«ã©ã®ããã«èª¬æã§ããã®ããããèããå¿ èŠããããŸãã
5.ã©ã³ã¿ã€ã ã§ã¯ã©ã¹ã¡ã¿ããŒã¿ãæäœããå¯èœæ§ã«ã€ããŠèããŸãã ããšãã°ãå®è¡æã«ã¯ã©ã¹ãç»é²ããããŸãã¯ãã®é-ç»é²ãããã¯ã©ã¹ã®ãªã¹ãããã¯ã©ã¹ãåé€ããŸãã
è©Šäœæ©
cppRuntime().createClassData(âMyRTClassâ, new CPPRTRuntime::Fabric<MyRTClass>() ); . . . // Use registered class . . . cppRuntime().removeClassData(âMyRTClassâ);
ååãšããŠããã®ãããªæ©èœã¯æ¢ã«å©çšå¯èœã§ãããæ©èœãããèšèšäžã®ãã°ã§ã...äžè¬ã«ããã®æ©èœã¯ããããå±éºã§ãããå¿ èŠãã©ãããæ éã«æ€èšããå¿ èŠããããŸãã
6. ææ¡ã®å Žæ ã ä»ã«äœã圹ç«ã€ãææ¡ããŠãã ããã 話ãåããŸãã
èšäºã®çµè«ãšãµã€ã¯ã«ã®çµè«
ããã«ããããããããªãã¯åŒŸäžžã眮ãããšãã§ããŸãã ç§ã¯cpprtã©ã€ãã©ãªã«ã€ããŠæãã§ããããšãã¹ãŠãèªã£ãã 芪æãªãèªè ã®çããããã®äžé£ã®èšäºããäœãæçãªããšãåŠãã ããšãé¡ã£ãŠããŸãã ä»ããããŒã ãªããžããªã«ãŽããéããŠããã©ã€ãã©ãªãåããé©åã«ãã©ãŒãããããŠå ¬éããŠããã ããã°ãããã«å¬ããã§ãã ããªãã®èšäºã®ããã€ãã§ããã«ã€ããŠäººã ã«äŒããŠãã ããïŒ
ãŸããèå³ããã人ãcpprtã©ã€ãã©ãªã®éçºã«è²¢ç®ããŠããããå¬ããã§ãã
ç¥ç§çãªã¡ã€ã³ãããžã§ã¯ãã«ã€ããŠ
èå³æ·±ãã®ã¯ãã©ã®ãããªãã¡ã€ã³ãããžã§ã¯ããã§ããïŒ..ãããèªãã å Žåãèšç»ã¯æåããŠããŸãã
ã¡ã€ã³ãããžã§ã¯ãã¯ãã·ãªã¢ã«åã®ããã«éä¿¡ããããªããžã§ã¯ãã®ç¶æ ã«é¢ããããŒã¿ã䜿çšããŠããã®ãªããžã§ã¯ãã«é¢ããã¡ã¿æ å ±ãçæããããã«ãã®ã¡ã¿æ å ±ã䜿çšã§ããããã«ããã©ã€ãã©ãªã§ãã
ãã®ã¢ãããŒãã¯æ°ãããã®ã§ã¯ãªãããšã«æ³šæããŠãã ãã-ã²ãŒã ãããžã§ã¯ãã§ãã䜿çšãããæåã®èšäºã§èšåããcpprtã©ã€ãã©ãªã¢ããã°ã®äžéšã䜿çšãããšãã¯ã©ã¹ç»é²æã«ã¯ã©ã¹ãã£ãŒã«ãã«åæ§ã®æ å ±ãèšå®ã§ããŸãã ããã§ããããžã§ã¯ãã®å®çŸããã³èšç»ãããŠããæ©èœããªã¹ãããŸãããã®ãããç§ã®æèŠã§ã¯ãå®è¡ãã䟡å€ããããŸãã
1.ã©ã€ãã©ãªã¯ããªããžã§ã¯ãã®ç¶æ ã«é¢ããã¡ã¿ããŒã¿ãåéããã ãã§ãªããåéãããããŒã¿ã¯ããªããžã§ã¯ãã®ç¶æ ã«åœ±é¿ãäžããããšãã§ããGUIã®çæã«ã䜿çšãããŸãã ãã®ãããã©ã€ãã©ãªãŠãŒã¶ãŒããªããžã§ã¯ãã®ä¿åããã³ããŒãã¡ãœãããèšè¿°ããŠGUIãªããžã§ã¯ãã€ã³ã¹ãã¯ã¿ãŒãèªåçã«çæããã ãã§ååã§ãã çŸæç¹ã§ã¯ãGUIã¯Qtã§äœæãããŠããŸãããã³ãŒãã¯ããŸããŸãªGUIïŒã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšã§æ¥ç¶ã§ãããŠãŒã¶ãŒã®GUIãå«ãïŒããµããŒãããããšãç®çãšããŠèšèšãããŠããŸãã ãã®èšç»ã¯ãGUIãçæãããšãããã®ãã¥ãŒã®ããã«éãããæ©äŒãè©Šãããã«äžã«è¡ããŸãã
2.ç§ã¯ãã£ãšããã«ãŠã§ã¢ã®ã³ã³ã»ããã®ãã¡ã³ã§ããã 1ã€ã®ç®çãæã€å€ãã®ããŒã«ã§å ±éã®åºç€ãèŠã€ãããã®äœããã€ã³ã¿ãŒãã§ã€ã¹ã«åãå ¥ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ããŸããŸãªããŒã«ãæã«å ¥ããã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£ ãéžæããæ©äŒã«æéãåããŸãã...ããã§ãããã«ãŠã§ã¢ã®æŠå¿µãå®è£ ããæ¹æ³ã決å®ããŸããã ãã®ããããŠãŒã¶ãŒã¿ã€ãã·ã¹ãã ããã³ãã¬ãŒãã©ã€ãã©ãªã¯ã©ã¹ã«è»¢éãããŸã§ãã©ã€ãã©ãªããããžã§ã¯ãã«ãŠãŒã¶ãŒãç°¡åã«çµ±åã§ããããã«ããŸãã
çŸæç¹ã§ã¯ãã©ã€ãã©ãªã¯åºæ¬çãªåäœãããã¿ã€ãã®ç¶æ ã«æžã蟌ãŸããŠããŸãããæ©èœãæ¡åŒµããã³æ·±åããå¿ èŠãããããããžã§ã¯ãæ§é ãå ¬é圢åŒã«ããå¿ èŠããããŸãïŒããã¥ã¡ã³ãããµã³ãã«ããã¹ããããŒã«ãªã©ãè¿œå ããïŒã
ç§ã¯ãã®ã©ã€ãã©ãªãèªåã§åãåããããšæã£ãŠããŸããããããæç¹ã§ç§ã¯çž«è£œããŠããããšã«æ°ã¥ããŸãã...åå ããŠãã ãããããªãã¯ãããžã§ã¯ãã®å ±ååµèšè ã«ãªããŸãã ããã«æžãããŠããããšãã¹ãŠã«ããçšåºŠèå³ããããªããç§çãªæçŽã«æžããŠãã ããã
ã©ã€ãã©ãªãé©åãªåœ¢åŒã«ãŸãšããŠå ¬éããPRã®ããã®äžé£ã®èšäºãäœæããŸã...ããã§ååã§ããçªç¶é£ã³åºããŸãããã€ããC ++èšèªã®ãã¬ãŒã ã¯ãŒã¯å ã§GUIãäœæããããã®æ°ãããã€ã«ã¹ããŒã³ã®å§ãŸãããŸãšããŸããã
ã¡ã€ã³ãããžã§ã¯ãã¯ãã·ãªã¢ã«åã®ããã«éä¿¡ããããªããžã§ã¯ãã®ç¶æ ã«é¢ããããŒã¿ã䜿çšããŠããã®ãªããžã§ã¯ãã«é¢ããã¡ã¿æ å ±ãçæããããã«ãã®ã¡ã¿æ å ±ã䜿çšã§ããããã«ããã©ã€ãã©ãªã§ãã
ãã®ã¢ãããŒãã¯æ°ãããã®ã§ã¯ãªãããšã«æ³šæããŠãã ãã-ã²ãŒã ãããžã§ã¯ãã§ãã䜿çšãããæåã®èšäºã§èšåããcpprtã©ã€ãã©ãªã¢ããã°ã®äžéšã䜿çšãããšãã¯ã©ã¹ç»é²æã«ã¯ã©ã¹ãã£ãŒã«ãã«åæ§ã®æ å ±ãèšå®ã§ããŸãã ããã§ããããžã§ã¯ãã®å®çŸããã³èšç»ãããŠããæ©èœããªã¹ãããŸãããã®ãããç§ã®æèŠã§ã¯ãå®è¡ãã䟡å€ããããŸãã
1.ã©ã€ãã©ãªã¯ããªããžã§ã¯ãã®ç¶æ ã«é¢ããã¡ã¿ããŒã¿ãåéããã ãã§ãªããåéãããããŒã¿ã¯ããªããžã§ã¯ãã®ç¶æ ã«åœ±é¿ãäžããããšãã§ããGUIã®çæã«ã䜿çšãããŸãã ãã®ãããã©ã€ãã©ãªãŠãŒã¶ãŒããªããžã§ã¯ãã®ä¿åããã³ããŒãã¡ãœãããèšè¿°ããŠGUIãªããžã§ã¯ãã€ã³ã¹ãã¯ã¿ãŒãèªåçã«çæããã ãã§ååã§ãã çŸæç¹ã§ã¯ãGUIã¯Qtã§äœæãããŠããŸãããã³ãŒãã¯ããŸããŸãªGUIïŒã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšã§æ¥ç¶ã§ãããŠãŒã¶ãŒã®GUIãå«ãïŒããµããŒãããããšãç®çãšããŠèšèšãããŠããŸãã ãã®èšç»ã¯ãGUIãçæãããšãããã®ãã¥ãŒã®ããã«éãããæ©äŒãè©Šãããã«äžã«è¡ããŸãã
2.ç§ã¯ãã£ãšããã«ãŠã§ã¢ã®ã³ã³ã»ããã®ãã¡ã³ã§ããã 1ã€ã®ç®çãæã€å€ãã®ããŒã«ã§å ±éã®åºç€ãèŠã€ãããã®äœããã€ã³ã¿ãŒãã§ã€ã¹ã«åãå ¥ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ããŸããŸãªããŒã«ãæã«å ¥ããã€ã³ã¿ãŒãã§ã€ã¹ã®å®è£ ãéžæããæ©äŒã«æéãåããŸãã...ããã§ãããã«ãŠã§ã¢ã®æŠå¿µãå®è£ ããæ¹æ³ã決å®ããŸããã ãã®ããããŠãŒã¶ãŒã¿ã€ãã·ã¹ãã ããã³ãã¬ãŒãã©ã€ãã©ãªã¯ã©ã¹ã«è»¢éãããŸã§ãã©ã€ãã©ãªããããžã§ã¯ãã«ãŠãŒã¶ãŒãç°¡åã«çµ±åã§ããããã«ããŸãã
çŸæç¹ã§ã¯ãã©ã€ãã©ãªã¯åºæ¬çãªåäœãããã¿ã€ãã®ç¶æ ã«æžã蟌ãŸããŠããŸãããæ©èœãæ¡åŒµããã³æ·±åããå¿ èŠãããããããžã§ã¯ãæ§é ãå ¬é圢åŒã«ããå¿ èŠããããŸãïŒããã¥ã¡ã³ãããµã³ãã«ããã¹ããããŒã«ãªã©ãè¿œå ããïŒã
ç§ã¯ãã®ã©ã€ãã©ãªãèªåã§åãåããããšæã£ãŠããŸããããããæç¹ã§ç§ã¯çž«è£œããŠããããšã«æ°ã¥ããŸãã...åå ããŠãã ãããããªãã¯ãããžã§ã¯ãã®å ±ååµèšè ã«ãªããŸãã ããã«æžãããŠããããšãã¹ãŠã«ããçšåºŠèå³ããããªããç§çãªæçŽã«æžããŠãã ããã
ã©ã€ãã©ãªãé©åãªåœ¢åŒã«ãŸãšããŠå ¬éããPRã®ããã®äžé£ã®èšäºãäœæããŸã...ããã§ååã§ããçªç¶é£ã³åºããŸãããã€ããC ++èšèªã®ãã¬ãŒã ã¯ãŒã¯å ã§GUIãäœæããããã®æ°ãããã€ã«ã¹ããŒã³ã®å§ãŸãããŸãšããŸããã
å šéšèªãã§ãããŠããããšãïŒ å°ãªããšãäœã圹ã«ç«ã€ããšãäŒããããšæããŸãïŒ
èè ã¯ãèšäºã®èª€ãã建èšçãªã¢ããã€ã¹ãšææ¡ãææããŠãããèªè ã«æè¬ããŸãã
ãã£ãã·ã§ã³
ç·šéèšäºïŒã»ã«ã²ã€ã»ã»ã¡ã³ã€ãã³
a1ien_n3tã®æ瀺ã«åŸã£ãŠ ãbmpããjpgã«ã€ã¡ãŒãžããªããŒãããŸãã ã 圌ã«æè¬ããŸãã
a1ien_n3tã®æ瀺ã«åŸã£ãŠ ãbmpããjpgã«ã€ã¡ãŒãžããªããŒãããŸãã ã 圌ã«æè¬ããŸãã