3. Code ³»¿¡ header ÀÛ¼ºÇϱâ

¼Ò½º ÄÚµå ³»¿¡ header¸¦ ÀÛ¼ºÇÏ´Â °ÍÀ¸·Î ¹®¼­È­¸¦ À§ÇÑ Áغñ´Â ¸ðµÎ ³¡³­´Ù.ROBODocÀÇ header´Â ¸Å¿ì °£´ÜÇϸ鼭µµ ü°èÀûÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù.

3.1. Çü½Ä

DocumentationÀ» À§ÇØ ¼Ò½ºÄÚµå ³»¿¡ »ðÀԵǴ ¿ä¼Ò´Â Header¶ó°í ÇÑ´Ù. Header´Â begin marker¿Í end marker, itemÀ¸·Î ±¸¼ºµÇ¾î ¹®¼­È­ ÀÛ¾÷ÀÇ ÇÑ ºí·ÏÀ» ÀÌ·é´Ù. ´ÙÀ½ÀÇ ¿¹Á¦¸¦ º¸ÀÚ.

/****f* module-1/killhim
 * NAME
 *   killhim
 * SYNOPSYS
 *   int killhim(char *name, char *method, int count)
 * FUNCTION
 *   ´ë»ó°ú ¼ö´Ü, Ƚ¼ö¸¦ °ñ¶ó ¹æ¹ýÇÏ´Â ÇÔ¼ö´Ù.
 * INPUT
 *   name -- ´ë»ó
 *   method -- ¼ö´Ü
 *   count -- Ƚ¼ö
 * RESULT
 *   0 for success, else an error code return
 ******
 * ¿©±â¿¡ ¾²´Â ÁÖ¼®Àº ¹®¼­È­ µÇÁö ¾Ê´Â´Ù.
 */

 int killhim(char *name,char *method, int count){
     if((strcmp(name,"bush"))==0)
         count *= 100;
     while(count-- > 0)
         hithim(name,method);
     return 0;
 }

À§ÀÇ ¿¹Á¦´Â ÇϳªÀÇ header¸¦ ÀÌ·ç°í ÀÖ´Ù. ÀÌ header´Â ¾Æ·¡ÀÇ killhim¿¡ ´ëÇÑ ÁÖ¼®ÀÌÀÚ ¹®¼­°¡ µÇ´Â °ÍÀÌ´Ù.

****f* module-1/killhim

ÀÌ ºÎºÐÀÌ begin markerÀÌ´Ù. Çì´õ°¡ ½ÃÀÛµÊÀ» Ç¥½ÃÇÑ´Ù. Ç÷¡±×¿Í µÚÀÇ °èÃþ¿¡ ´ëÇØ¼­´Â µÚ¿¡¼­ ¼³¸íÇϰڴÙ.

 * NAME
 *   killhim
 * SYNOPSYS
 *   int killhim(char *name, char *method, int count)

item ºÎºÐÀÌ´Ù. itemµéÀº Á¤ÀǵǾî ÀÖÀ¸¸ç »ç¿ëÀÚ Á¤ÀǸ¦ Ãß°¡ÇÒ ¼öµµ ÀÖ´Ù.

 ******

end marker´Ù. ÀÌ Ç¥½Ã¸¦ ±âÁØÀ¸·Î header´Â ³¡³­´Ù. ÀÌÈÄ¿¡ À̾îÁö´Â ÁÖ¼®Àº robodoc¿¡ ¿µÇâÀ» ÁÖÁö ¸øÇÑ´Ù.

°¢°¢ÀÇ ¸¶Å© ¾Õ¿¡´Â »ç¿ëÇÏ´Â ¾ð¾îÀÇ ÁÖ¼®ÀÌ ºÙ°Ô µÈ´Ù. ´ÙÀ½Àº °¢ ¾ð¾îº°·Î markÇÏ´Â ¹æ½ÄÀÌ´Ù.

/****       C, C++
 *
 ***

//****      C++
//
//***

(****       Pascal, Modula-2
 *
 ***
*)

{****       Pascal
 *
 ***
*}

;****       M68K assembler
;
;***

****        M68K assembler
*
***

C     ****  Fortran
C     
C     ***


REM ****    BASIC
REM *
REM ***

%****       LaTeX, TeX, Postscript
%
%***

#****       Tcl/Tk
#
#***

****  COBOL
*
***

--****      Occam
--
--***

|****       GNU Assembler
|
|***

!!****      FORTRAN 90
!!
!!***

3.2. Header Type

header typeÀº ÇöÀç ÀÛ¼ºÁßÀÎ Çì´õ°¡ ¹«¾ù¿¡ ´ëÇÑ Çì´õÀÎÁö¸¦ ¾Ë·ÁÁØ´Ù. Áï, ÇÔ¼ö¿¡ ´ëÇÑ Çì´õÀÎÁö ¸ðµâ¿¡ ´ëÇÑ Çì´õÀÎÁö¿¡ ´ëÇÑ Ç¥½ÃÀÎ °ÍÀÌ´Ù. Çì´õ¸¦ Ç¥½ÃÇÔÀ¸·Î½á Àε¦½Ì°ú Á¤·ÄÀ» È¿°úÀûÀ¸·Î ÇÒ¼ö ÀÖ°Ô µÈ´Ù.

¾ÕÀÇ begin marker ****f¿¡¼­ "f"°¡ ¹Ù·Î Çì´õ ŸÀÔÀÌ´Ù. Áö¿øÇÏ´Â Çì´õ ŸÀÔÀº ¾Æ·¡¿Í °°´Ù.

 h -- ¸ðµâ(module in project)
 f -- ÇÔ¼ö(function)
 s -- ±¸Á¶Ã¼(structure)
 c -- Ŭ·¡½º(class)
 m -- ¸Þ¼Òµå(method)
 v -- º¯¼ö(variable)
 d -- »ó¼ö(constant)
 * -- ÀϹÝ(generic header)

3.3. item

ROBODoc¿¡ Á¤ÀÇµÈ itemÀº ´ÙÀ½°ú °°À¸¸ç, robodoc.rcÆÄÀÏÀ» ÀÌ¿ëÇØ Ãß°¡ÇÒ ¼ö ÀÖ´Ù.

3.4. section

/****f* module-1/killhim ¿¡¼­ module-1/killhim¿¡ ÇØ´çÇÏ´Â ºÎºÐÀÌ sectionÀÌ´Ù. sectionÀº ¹®¼­ÀÇ °èÃþÈ­¸¦ À§Çؼ­ Á¸ÀçÇÑ´Ù. ÇÁ·ÎÁ§Æ®/¸ðµâ/(ÇÔ¼ö ¶Ç´Â º¯¼ö³ª class µî)À¸·Î °èÃþÀ» ³ª´©¾î sectionÀ» Ȱ¿ëÇÏ¸é ¹®¼­·Î º¯È¯ÇÒ ¶§ ROBODocÀº À̸¦ ÀνÄÇϰí À妽ÌÇØÁØ´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº ±¸Á¶ÀÇ ÇÁ·ÎÁ§Æ®°¡ ÀÖ´Ù°í ÇÏÀÚ.

-ProjectA -- module1 -- function1
                     -- variable1
	  -- module2 -- function2
	             -- function3

ÀÌ °æ¿ì °¢°¢ÀÇ Çì´õ´Â ´ÙÀ½°ú °°ÀÌ sectionÀ¸·Î ³ª´­ ¼ö ÀÖ´Ù.

/****h* ProjectA/module1
...
/****h* ProjectA/module2
...
/****f* module1/function1
...
/****v* module1/variable1
...
/****f* module2/function2
...
/****f* module2/function3
...

ÀÌ·¸°Ô sectionÀ» ÁöÁ¤ÇÑ ÈÄ ROBODocÀ» ÀÌ¿ëÇØ HTMLº¯È¯À» ÇÏ¸é ´ÙÀ½°ú °°ÀÌ indexing µÈ´Ù.

1 ProjectA/module1
1.1 module1/function1
1.2 module1/variable1
2 ProjectA/module2
2.1 module2/function2
2.2 moudle2/function3
..