4 # The latest update : %G% at %U%
6 #%Z% create a new named one
9 #%Z% Usage : makegeneral [Action] [World] [ClassName] [ObjectName]
16 #%Z% World : Tools | Objects
21 WorldHomeDir=${EOS_HOME}/src
22 ObjectClassHomeDir=${WorldHomeDir}/Objects
23 ToolClassHomeDir=${WorldHomeDir}/Tools
24 AnotherWorldHomeDir=${EOS_ANOTHER_HOME}/src
25 AnotherObjectClassHomeDir=${AnotherWorldHomeDir}/Objects
26 AnotherToolClassHomeDir=${AnotherWorldHomeDir}/Tools
28 TemplateDir=${WorldHomeDir}/Config/Template
30 ToolHomeTemplate=${TemplateDir}/ToolsHomeTemplate.Dir
31 ToolClassTemplate=${TemplateDir}/ToolsClassTemplate.Dir
32 ToolTemplate=${TemplateDir}/ToolsTemplate.Dir
34 ObjectHomeTemplate=${TemplateDir}/ObjectsHomeTemplate.Dir
35 ObjectClassTemplate=${TemplateDir}/ObjectsClassTemplate.Dir
36 ObjectTemplate=${TemplateDir}/ObjectsTemplate.Dir
39 #%Z% usage():Show Usage
40 ## No required argument
44 echo "Usage:makegeneral [World] [ClassName] [ObjectName] [Action] [NoAns]"
49 #%Z% NameList():Show directory names except for Config/
51 ## $1:Name of directory including named ones
57 ls -1F ${Full} | awk '
61 $0 !~ /Config/ && /\// {
69 #%Z% NameShow():Show a implemented list of tools/objects/classes
70 ## $1: full pathname of directory including named tools/objects/classes
71 ## $2: Tools | Objects | Class
77 echo "Presently-implemented ${Target}"
78 NameList ${Full} > ${Full}/Config/Source.lst
79 cat ${Full}/Config/Source.lst
83 #%Z% NameRead():Read name of one to treat
84 ## $1: full pathname of directory including named ones
85 ## $2: Tools | Objects | Class
88 ## Name : Name which was read
96 while [ $ans != "Y" -a $ans != "y" ]
98 NameShow ${Full} ${Target}
99 echo "Enter ${Target} Name?"
101 if [ -d ${Full}/${Name} ]
103 echo "${Name} is a implemented ${Target}."
105 echo "${Name} is a new ${Target}!!"
107 ans="N"; echo "${Name} is OK(y/n)?"
112 #%Z% genDirCheckAndMake():
113 ## $1: full pathname of directory including named ones
116 ## Name : Name which was checked and made
122 if [ -d ${Full}/${Name} ]
124 echo "${Name}: Implemented"
126 mkdir ${Full}/${Name}
129 #%Z% DirCheckAndMake():
130 ## $1: full pathname of directory including named ones
132 ## $3: Tools | Objects | Class
134 ## Name : Name which was checked and made
145 while [ $ans != "Y" -a $ans != "y" ]
148 genDirCheckAndMake ${Full} ${Name}
149 genDirCheckAndMake ${Full} ${Name}/Config
158 Another|AnotherFollowingControlFile)
159 NameShow ${AnotherWorldHomeDir} World
161 All|AllFollowingControlFile)
162 NameShow ${WorldHomeDir} World
165 echo "Not Supported Action: ${Action}"
174 Another|AnotherFollowingControlFile)
175 NameRead ${AnotherWorldHomeDir} World
177 All|AllFollowingControlFile)
178 NameRead ${WorldHomeDir} World
181 echo "Not Supported Action: ${Action}"
188 WorldDirCheckAndMake()
191 Another|AnotherFollowingControlFile)
192 DirCheckAndMake ${AnotherWorldHomeDir} ${World} World
194 All|AllFollowingControlFile)
195 DirCheckAndMake ${WorldHomeDir} ${World} World
198 echo "Not Supported Action: ${Action}"
208 ObjectClassNameShow()
211 Another|AnotherFollowingControlFile)
212 NameShow ${AnotherObjectClassHomeDir} Class
214 All|AllFollowingControlFile)
215 NameShow ${ObjectClassHomeDir} Class
218 echo "Not Supported Action: ${Action}"
224 ObjectClassNameRead()
227 Another|AnotherFollowingControlFile)
228 NameRead ${AnotherObjectClassHomeDir} Class
230 All|AllFollowingControlFile)
231 NameRead ${ObjectClassHomeDir} Class
234 echo "Not Supported Action: ${Action}"
241 ObjectClassDirCheckAndMake()
244 Another|AnotherFollowingControlFile)
245 DirCheckAndMake ${AnotherObjectClassHomeDir} ${ClassName} Class
247 All|AllFollowingControlFile)
248 DirCheckAndMake ${ObjectClassHomeDir} ${ClassName} Class
251 echo "Not Supported Action: ${Action}"
263 NameShow ${ObjectClassHomeDir}/${ClassName} Objects
268 NameRead ${ObjectClassHomeDir}/${ClassName} Objects
272 ObjectDirCheckAndMake()
274 DirCheckAndMake ${ObjectClassHomeDir}/${ClassName} ${ObjectName} Objects
284 Another|AnotherFollowingControlFile)
285 NameShow ${AnotherToolClassHomeDir} Class
287 All|AllFollowingControlFile)
288 NameShow ${ToolClassHomeDir} Class
291 echo "Not Supported Action: ${Action}"
300 Another|AnotherFollowingControlFile)
301 NameRead ${AnotherToolClassHomeDir} Class
303 All|AllFollowingControlFile)
304 NameRead ${ToolClassHomeDir} Class
307 echo "Not Supported Action: ${Action}"
314 ToolClassDirCheckAndMake()
317 Another|AnotherFollowingControlFile)
318 DirCheckAndMake ${AnotherToolClassHomeDir} ${ClassName} Class
320 All|AllFollowingControlFile)
321 DirCheckAndMake ${ToolClassHomeDir} ${ClassName} Class
324 echo "Not Supported Action: ${Action}"
336 NameShow ${ToolClassHomeDir}/${ClassName} Tools
342 Another|AnotherFollowingControlFile)
343 NameRead ${AnotherToolClassHomeDir}/${ClassName} Tools
345 All|AllFollowingControlFile)
346 NameRead ${ToolClassHomeDir}/${ClassName} Tools
349 echo "Not Supported Action: ${Action}"
356 ToolDirCheckAndMake()
359 Another|AnotherFollowingControlFile)
360 DirCheckAndMake ${AnotherToolClassHomeDir}/${ClassName} ${ToolName} Tools
362 All|AllFollowingControlFile)
363 DirCheckAndMake ${ToolClassHomeDir}/${ClassName} ${ToolName} Tools
366 echo "Not Supported Action: ${Action}"
378 echo ">>>> ${Action} <<<<"
380 All|Another|AllFollowingControlFile|AnotherFollowingControlFile)
391 echo "Not Supported World : ${World}"
405 echo "Not Supproted World : ${World}"
413 echo "Supported Action"
414 echo " 0: Create a new tool on Eos."
415 echo " 1: Update a tool on Eos."
416 echo " 2: Create a new tool on another Eos."
417 echo " 3: Update a tool on another Eos."
418 echo " 4: Create a new tool on Eos (C++)."
419 echo " 5: Update a tool on Eos (C++)."
420 echo " 6: Create a new tool on another Eos (C++)."
421 echo " 7: Update a tool on another Eos (C++)."
422 echo " 8: Create a new tool on Eos (shell)."
423 echo " 9: Update a tool on Eos (shell)."
424 echo " 10: Create a new tool on another Eos (shell)."
425 echo " 11: Update a tool on another Eos (shell)."
427 echo "Which action do you want to select ? (number)"
434 Action="AllFollowingControlFile"
440 Action="AnotherFollowingControlFile"
446 Action="AllFollowingControlFileCC"
452 Action="AnotherFollowingControlFileCC"
458 Action="AllFollowingControlFileShell"
461 Action="AnotherShell"
464 Action="AnotherFollowingControlFileShell"
470 echo "Not supported action"
479 echo "Supported Action"
480 echo " 0: Create a new object on Eos"
481 echo " 1: Create a new object on another Eos"
483 echo "Which action do you want to select ? (number)"
496 echo "Not supported action"
503 #%Z% NewNameAddToMakefile
504 ## $1: fullpathname of Makefile
505 ## $2: name of named one
506 ## $3: Class | Objects | Tools
508 NewNameAddToMakefile()
513 echo "${Target} is added as a new ${World}!!"
514 mv ${Full} ${Full}.org
515 cat ${Full}.org | awk -v Name=${Target} '
517 printf("\t%s \\\n",Name);
520 $0 !~ /#LastSource/ {
529 ObjectClassDirModifyFollowingAction()
533 ObjectClassHome=${EOS_HOME}/src/Objects/
536 echo "AnotherHome is ${AnotherHome}. Is it OK ?"
545 for dir in src bin doc sccs src/Objects
547 if [ -d ${AnotherHome}/${dir} ]
549 echo "AnotherHome/${dir} : implemented."
551 mkdir ${AnotherHome}/${dir}
554 rm -f ${AnotherHome}/src/Config
555 #ln -s ${EOS_HOME}/src/Config ${AnotherHome}/src/Config
556 cp -r ${EOS_HOME}/src/Config ${AnotherHome}/src/Config
557 ObjectClassHome=${AnotherHome}/src/Objects
560 echo "Not Supported Action: ${Action}"
564 cd ${ObjectClassHome}
567 echo "Makefile : implemented."
569 echo "A new Makefile is created"
570 cp ${ObjectHomeTemplate}/Makefile ./Makefile
572 OldClass=`cat ./Makefile | awk -v Name=${ClassName} '{ if($1==Name) print $1} ' `
575 echo "${OldClass} : implemented in Objects/Makefile"
577 NewNameAddToMakefile ./Makefile ${ClassName} Class
579 fullClassDir=${EOS_HOME}/src/Objects/${ClassName}
580 if [ -d ${fullClassDir} ]
582 echo "Objects/${ClassName} : implemented."
584 mkdir ${fullClassDir}
586 if [ -d ${fullClassDir}/Config ]
588 echo "Objects/${ClassName}/Config : implemented."
590 mkdir ${fullClassDir}/Config
592 cp -r ${EOS_HOME}/src/Config/Template/ObjectHomeTemplate.Dir/Config ${fullClassDir}
595 ObjectDirModifyFollowingAction()
599 ObjectHome=${EOS_HOME}/src/Objects/${ClassName}
602 ObjectHome=${Another}/src/Objects/${ClassName}
605 echo "Not Supported Action: ${Action}"
612 echo "Makefile : implemented."
614 echo "A new Makefile is created"
615 cp ${ObjectClassTemplate}/Makefile ./Makefile
617 OldClass=`cat ./Makefile | awk -v Name=${ObjectName} '{ if($1==Name) print $1} ' `
621 echo "${OldClass} : implemented in Objects/${ClassName}/Makefile."
623 NewNameAddToMakefile ./Makefile ${ObjectName} Objects
625 fullObjectDir=${EOS_HOME}/src/Objects/${ClassName}/${ObjectName}
629 if [ -d ${fullObjectDir} ]
631 echo "Eos has ${ObjectName}."
633 mkdir ${fullObjectDir}
637 for dir in src inc doc Config
641 echo "Eos has ${ObjectName}/${dir}"
652 sed -e s/Object/${ObjectName}/g ${ObjectTemplate}/Config/Define.inc > Config/Define.inc
653 sed -e s/Tool/${ToolName}/g ${ObjectTemplate}/Config/Target.inc > Config/Target.inc
657 #ln -s ${ObjectTemplate}/Makefile Makefile
658 cp ${ObjectTemplate}/Makefile Makefile
660 #ln -s ${ObjectTemplate}/src/Makefile ./src/Makefile
661 cp ${ObjectTemplate}/src/Makefile ./src/Makefile
669 #ln -s ${ObjectTemplate}/inc/Makefile inc/Makefile
670 cp ${ObjectTemplate}/inc/Makefile inc/Makefile
673 if [ -h doc/Makefile ]
677 cp ${ObjectTemplate}/doc/Makefile doc/Makefile
678 #ln -s ${ObjectTemplate}/doc/Makefile doc/Makefile
681 touch doc/.${ObjectName}.html
684 echo "Not supported action : %{Action}"
690 cd ${EOS_HOME}/src/${World}/${ClassName}/${ObjectName}; make check
693 echo "Not supported action : %{Action}"
702 ToolClassDirModifyFollowingAction()
704 #### Create Tool Class Directory
706 All|AllFollowingControlFile)
707 ToolClassHome=${EOS_HOME}/src/Tools/
709 Another|AnotherFollowingControlFile)
710 echo "AnotherHome is ${AnotherHome}. Is it OK ?"
719 for dir in src bin doc sccs src/Tools
721 if [ -d ${AnotherHome}/${dir} ]
723 echo "AnotherHome/${dir} : implemented."
725 mkdir ${AnotherHome}/${dir}
728 if [ -d ${AnotherHome}/src/Config ]
730 rm -f ${AnotherHome}/src/Config
732 rm -f ${AnotherHome}/src/Config
734 #ln -s ${EOS_HOME}/src/Config ${AnotherHome}/src/Config
735 cp -r ${EOS_HOME}/src/Config ${AnotherHome}/src/Config
736 ToolClassHome=${AnotherHome}/src/Tools
739 echo "Not supported action in ToolClassDirModifyFollowingAction: ${Action}"
744 #### Create Makefile in Tools
747 #ln -s ${ToolHomeTemplate}/Makefile ./Makefile
748 cp ${ToolHomeTemplate}/Makefile ./Makefile
749 #### Create Config in Tools
753 echo "Tools/Config : implemented"
758 if [ -f Config/Define.inc ]
760 ans=`cat Config/Define.inc | awk -v Name=WORLDNAME '{ if ($1==Name) print $0}' `
763 sed -e s/worldname/${World}/g ${ToolHomeTemplate}/Config/Define.inc >> Config/Define.inc
766 sed -e s/worldname/${World}/g ${ToolHomeTemplate}/Config/Define.inc > Config/Define.inc
768 if [ ! -f Config/Target.inc ]
770 sed -e s/worldname/${World}/g ${ToolHomeTemplate}/Config/Define.inc > Config/Define.inc
773 ### Create Class in Tools
774 fullClassDir=${ToolClassHome}/${ClassName}
775 if [ -d ${fullClassDir} ]
777 echo "Tools/${ClassName} : implemented."
779 mkdir ${fullClassDir}
781 #### Update Makefile in Tools
785 echo "Tools/Makefile : implemented."
787 cp ${ToolHomeTemplate}/.Source ./.Source
791 OldClassName=`cat ./.Source | awk -v Name=${ClassName} '{ if($1==Name) print $1} ' `
792 if [ ${OldClassName} ]
794 echo "${OldClassName} : implemented in Tools/${ClassName}/Makefile."
796 ${EOS_HOME}/sbin/dotSourceInMakefileCreate ./ ${ClassName} Class
799 #### Create Config in Tools/Class
801 if [ -d ${fullClassDir}/Config ]
803 echo "${fullClassDir}/Config : implemented."
805 mkdir ${fullClassDir}/Config
808 if [ -f Config/Define.inc ]
810 ans=`cat Config/Define.inc | awk -v Name=CLASSNAME '{ if ($1==Name) print $1}' `
813 sed -e s/classname/${ClassName}/g ${ToolClassTemplate}/Config/Define.inc >> Config/Define.inc
816 sed -e s/classname/${ClassName}/g ${ToolClassTemplate}/Config/Define.inc > Config/Define.inc
818 if [ ! -f Config/Target.inc ]
820 sed -e s/classname/${ClassName}/g ${ToolClassTemplate}/Config/Define.inc > Config/Define.inc
824 #ln -s ${ToolClassTemplate}/Makefile ./Makefile
825 cp ${ToolClassTemplate}/Makefile ./Makefile
828 echo "Tools/Makefile : implemented."
830 cp ${ToolHomeTemplate}/.Source ./.Source
834 ## ToolDirModityFollowingAction
835 ## This routine is a main Routine to construct a tool directory.
837 ToolDirModifyFollowingAction()
840 ## Create Tool Home Directory
843 All|AllFollowingControlFile|AllShell|AllShellFollowingControlFile)
844 ToolHome=${EOS_HOME}/src/Tools/${ClassName}
846 Another|AnotherFollowingControlFile)
847 ToolHome=${AnotherHome}/src/Tools/${ClassName}
850 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
854 if [ -d ${ToolHome} ]
858 echo "Something Wrong !!!"
859 echo "${ToolHome} is not found."
862 fullToolDir=${ToolHome}/${ToolName}
864 ## Register a new tool in Makefile
868 All|AllFollowingControlFile|Another|AnotherFollowingControlFile)
871 #ln -s ${ToolClassTemplate}/Makefile ./Makefile
872 cp ${ToolClassTemplate}/Makefile ./Makefile
875 echo "${fullToolDir}/Makefile : implemented."
877 cp ${ToolClassTemplate}/.Source ./.Source
879 ### Set tool directory
880 if [ -d ${fullToolDir} ]
882 echo "${ToolName} : implemented."
887 OldToolName=`cat ./.Source | awk -v Name=${ToolName} '{ if($1==Name) print $1} ' `
888 if [ ${OldToolName} ]
890 echo "${OldToolName} : implemented in Tools/${ClassName}/${ToolName}/Makefile."
892 ${EOS_HOME}/sbin/dotSourceInMakefileCreate ./ ${ToolName} Tools
896 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
901 #### Set Environment File #####
904 All|AllFollowingControlFile|Another|AnotherFollowingControlFile)
905 ### Set tool directories
906 for dir in Config inc src doc
910 echo "${ToolName}/${dir} : implemented."
915 ### Set Config/Define.inc ###
916 if [ -f Config/Define.inc ]
918 echo "Config/Define.inc : implemented."
920 sed -e s/Tool/${ToolName}/g ${ToolTemplate}/Config/Define.inc > Config/Define.inc
922 ### Set Config/Target.inc ###
923 if [ -f Config/Target.inc ]
925 echo "Config/Target.inc : implemented."
927 sed -e s/Tool/${ToolName}/g ${ToolTemplate}/Config/Target.inc > Config/Target.inc
931 cp ${ToolTemplate}/Makefile Makefile
932 #ln -s ${ToolTemplate}/Makefile Makefile
934 ### Set src/Makefile, src/.Depend, src/.Source, doc/Makefile ###
936 #ln -s ${ToolTemplate}/src/Makefile ./src/Makefile
937 cp ${ToolTemplate}/src/Makefile ./src/Makefile
941 #ln -s ${ToolTemplate}/doc/Makefile ./doc/Makefile
942 cp ${ToolTemplate}/doc/Makefile ./doc/Makefile
945 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
950 ## Set OptionControl File
955 if [ -f Config/OptionControlFile ]
957 echo "Config/OptionControlFile exists now. Would you like to overwrite it ?"
962 if [ $ans = "Y" -o $ans = "y" ]
964 cp ${ToolTemplate}/Config/OptionControlFile Config/OptionControlFile
966 echo "Not Overwrite Config/OptionControlFile"
969 AllFollowingControlFile|AnotherFollowingControlFile)
972 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
977 ## Create prototype source code
984 if [ -f inc/config.h ]
986 echo "inc/config.h exists now. Would you like to overwrite it ?"
989 if [ $ans = "Y" -o $ans = "y" ]
991 sed -e s/Tool/${ToolName}/g ${ToolTemplate}/inc/config.h > inc/config.h
993 echo "Not Overwrite inc/config.h."
997 if [ -f src/${ToolName}.c ]
999 echo "src/${ToolName}.c exists now. Would you like to overwrite it ?"
1002 if [ $ans = "Y" -o $ans = "y" ]
1004 sed -e s/Tool/${ToolName}/g ${EOS_HOME}/sbin/toolHead.Template \
1005 -e s/Class/${ClassName}/g > src/${ToolName}.c
1006 sed -e s/Tool/${ToolName}/g ${ToolTemplate}/src/Tool.c \
1007 -e s/Class/${ClassName}/g >> src/${ToolName}.c
1009 echo "Not Overwrite src/${ToolName}.c"
1012 AllFollowingControlFile|AnotherFollowingControlFile)
1015 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
1020 All|AllFollowingControlFile|Another|AnotherFollowingControlFile)
1021 ${EOS_HOME}/sbin/ctrl2proto ${ClassName} ${ToolName} Config/OptionControlFile
1024 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
1029 ## Directory Structure Check
1032 All|AllFollowingControlFile|Another|AnotherFollowingControlFile)
1033 echo "Directory Checking"
1034 cd ${EOS_HOME}/src/${World}/${ClassName}/${ToolName}; make check
1037 echo "Not supported action in ToolDirModifyFollowingAction: ${Action}"
1050 ObjectName="unknown"
1056 ## Option Flag Check
1061 while [ `echo $1 | cut -c1` = ${FlagsCharacter} ]
1063 if [ `echo $1 | cut -c2` = "h" ]
1074 ## argCheck and set ClassName and ObjectName
1078 WorldDirCheckAndMake
1082 ObjectClassDirCheckAndMake
1084 ObjectNameRead ${ClassName}
1085 ObjectDirCheckAndMake ${ClassName}
1091 ToolClassDirCheckAndMake
1093 ToolNameRead ${ClassName}
1094 ToolDirCheckAndMake ${ClassName}
1099 echo "Not Supported World: ${World}"
1105 1) # $1 : Action/World
1111 ObjectClassDirCheckAndMake
1113 ObjectNameRead ${ClassName}
1114 ObjectDirCheckAndMake ${ClassName}
1119 ToolClassDirCheckAndMake
1121 ToolNameRead ${ClassName}
1122 ToolDirCheckAndMake ${ClassName}
1126 echo "Not Supported World in argnum=1: ${World}"
1131 2) # $1 : Action, $2: World, $3 : Class
1138 ObjectClassDirCheckAndMake
1140 ObjectNameRead ${ClassName}
1141 ObjectDirCheckAndMake ${ClassName}
1146 ToolClassDirCheckAndMake
1148 ToolNameRead ${ClassName}
1149 ToolDirCheckAndMake ${ClassName}
1153 echo "Not Supported World ${World}"
1158 3) # $1: Action, $2 : World, $3 : Class, $4 : Name
1171 echo "Not Supported World: ${World}"
1176 4) # $1 : Action, $2: World, $3 : Class, $4 : Name
1189 echo "Not Supported World ${World}"
1194 5) # $1 : Action, $2: World, $3 : Class, $4 : Name, $5 : ANS
1207 echo "Not Supported World ${World}"
1218 if [ ${World} = "unknown" -o ${ClassName} = "unknown" -o ${ObjectName} = "unknown" -a ${ToolName} = "unknown" -o ${Action} = "unknown" ]
1220 echo "Something wrong"
1223 echo "World: ${World}"
1224 echo "Class: ${ClassName}"
1227 echo "Tools: ${ToolName}"
1230 echo "Objects: ${ObjectName}"
1233 echo "Not Supported World : ${World}"
1237 echo "Action: ${Action}"
1242 if [ $ans = "y" -o $ans = "Y" ]
1244 echo "----- Start -----"
1246 echo "----- Please operate again !! -----"
1250 echo "----- Start -----"
1255 fullWorldDir=${EOS_HOME}/src/${World}
1256 fullClassName=${fullWorldDir}/${ClassName}
1257 fullObjectName=${fullClassName}/${ObjectName}
1258 fullToolName=${fullClassName}/${ToolName}
1261 if [ $EOS_ANOTHER_HOME ]
1263 AnotherHome=$EOS_ANOTHER_HOME
1265 AnotherHome=$currentDir
1270 ObjectClassDirModifyFollowingAction
1271 ObjectDirModifyFollowingAction
1272 chgrp -R Eos ${fullObjectName}
1273 chmod -R 775 ${fullObjectName}
1276 ToolClassDirModifyFollowingAction
1277 ToolDirModifyFollowingAction
1278 chgrp -R Eos ${fullToolName}
1279 chmod -R 775 ${fullToolName}
1282 echo "Not Supported World : ${World}"
1287 ##echo "Do you inform this new one to Eos mailing list? Y/N"
1293 # echo "----- Information for Eos Group -----"
1296 # #mailToEosGroup "makeobj new: ${ObjectName} in ${ClassName}"
1299 # #mailToEosGroup "maketool new: ${ToolName} in ${ClassName}"
1315 EosObject=$ObjectName
1317 export EosWorld EosClass EosObject EosTool