cmdline.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:9k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /**********************************************************************
  2. MPEG-4 Audio VM
  3. Command line module
  4. This software module was originally developed by
  5. Charalampos Ferkidis (University of Hannover / ACTS-MoMuSys)
  6. Heiko Purnhagen (University of Hannover / ACTS-MoMuSys)
  7. partially based on a concept by FhG IIS, Erlangen
  8. and edited by
  9. in the course of development of the MPEG-2 NBC/MPEG-4 Audio standard
  10. ISO/IEC 13818-7, 14496-1,2 and 3. This software module is an
  11. implementation of a part of one or more MPEG-2 NBC/MPEG-4 Audio tools
  12. as specified by the MPEG-2 NBC/MPEG-4 Audio standard. ISO/IEC gives
  13. users of the MPEG-2 NBC/MPEG-4 Audio standards free license to this
  14. software module or modifications thereof for use in hardware or
  15. software products claiming conformance to the MPEG-2 NBC/ MPEG-4 Audio
  16. standards. Those intending to use this software module in hardware or
  17. software products are advised that this use may infringe existing
  18. patents. The original developer of this software module and his/her
  19. company, the subsequent editors and their companies, and ISO/IEC have
  20. no liability for use of this software module or modifications thereof
  21. in an implementation. Copyright is not released for non MPEG-2
  22. NBC/MPEG-4 Audio conforming products. The original developer retains
  23. full right to use the code for his/her own purpose, assign or donate
  24. the code to a third party and to inhibit third party from using the
  25. code for non MPEG-2 NBC/MPEG-4 Audio conforming products. This
  26. copyright notice must be included in all copies or derivative works.
  27. Copyright (c) 1996.
  28. Header file: cmdline.h
  29. $Id: cmdline.h,v 1.2 2002/05/13 15:54:11 mvillari Exp $
  30. Required modules:
  31. common.o common module
  32. Authors:
  33.       partially based on a concept by FHG <iis.fhg.de>
  34. CF    Charalampos Ferekidis, Uni Hannover <ferekidi@tnt.uni-hannover.de>
  35. HP    Heiko Purnhagen, Uni Hannover <purnhage@tnt.uni-hannover.de>
  36. Changes:
  37. 28-may-96   CF    added functions for parsing of init files and strings
  38. 05-jun-96   HP    several changes
  39.                   moved ErrorMsg() to seperat module
  40. 06-jun-96   HP    setDefault added to CmdLineEval()
  41. 07-jun-96   HP    use CommonProgName(), CommonWarning(), CommonExit()
  42. 10-jun-96   HP    ...
  43. 13-jun-96   HP    changed ComposeFileName()
  44. 19-jun-96   HP    changed ComposeFileName()
  45. 20-jun-96   HP    added NOTE re CmdLineParseString()
  46. 08-aug-96   HP    changed string handling in CmdLineParseString()
  47.                   changed handling of variable length argument list
  48.                   added CmdLineEvalFree(), CmdLineParseFree()
  49. 09-aug-96   HP    ...
  50. 26-aug-96   HP    CVS
  51. 07-apr-97   HP    "-" support in CmdLineEval() and ComposeFileName()
  52. 04-may-98   HP/BT unsigned in ComposeFileName()
  53. **********************************************************************/
  54. #ifndef _cmdline_h_
  55. #define _cmdline_h_
  56. /* ---------- declarations ---------- */
  57. typedef struct { /* cmdline parameter info list element */
  58.   void *argument; /* ptr to argument */
  59. /*  NULL to mark end of paraList !!! */
  60.   char *format; /* format of argument (e.g. "%d") */
  61. /*  "%s"    char *string -> *argument */
  62. /*  NULL    int varArgIdx[] -> *argument */
  63. /*           variable length argument list: */
  64. /*           varArgIdx[] contains the indices of all */
  65. /*           remaining entries in argv[] that are */
  66. /*           not switches. */
  67. /*           varArgIdx[] is terminated by -1. */
  68. /*           (The next entry in paraList must be */
  69. /*           the end mark *argument=NULL.) */
  70. /*  others  value -> *argument */
  71.   char *help; /* description of parameter for help */
  72. /*  (e.g. "<filename>") */
  73. } CmdLinePara;  
  74. typedef struct { /* cmdline switch info list element */
  75.   char *switchName; /* switch name (case sensitive, without '-') */
  76. /*  NULL to mark end of switchList !!! */
  77.   void *argument; /* ptr to argument */
  78. /*  NULL for help switch !!! */
  79. /*  (format, defaultValue, usedFlag are ignored) */
  80.   char *format; /* format of argument (e.g. "%d") */
  81. /*  "%s"    char* -> *argument */
  82. /*  NULL    switch used flag -> *(int*)argument */
  83. /*           (0=not used  1=used) */
  84. /*           (for switch without argument) */
  85. /*  others  value -> *argument */
  86.   char *defaultValue; /* default value string for argument */
  87. /*  argument value unchanged if defaultValue==NULL */
  88. /*  default value ignored if format==NULL */
  89.   int  *usedFlag; /* ptr to switch used flag */
  90. /*  0=not used  1=used */
  91. /*  NULL if not required */
  92.   char *help; /* description of switch for help */
  93. /*  'n' can be used to separate multiple lines */
  94. /*  if defaultValue!=NULL the */
  95. /*  " (dftl: <defaultValue>)" is appended */
  96. /*  (appending "nb" places "dflt:..." on next line */
  97. } CmdLineSwitch;
  98. /* ---------- functions ---------- */
  99. #ifdef __cplusplus
  100. extern "C" {
  101. #endif
  102. /* CmdLineInit() */
  103. /* Init command line module. */
  104. void CmdLineInit (
  105.   int debugLevel); /* in: debug level */
  106. /*     0=off  1=basic  2=full */
  107. /* CmdLineEval() */
  108. /* Evaluate parameters and switches in argv[]. */
  109. /* Command line mode (progNamePtr!=NULL): */
  110. /*   Evaluate command line in argv[] from main() and extract program name */
  111. /*   from argv[0]. Pass program name to CommonProgName(). */
  112. /*   Switches are identified by preceding '-' in the command line. */
  113. /* Token list mode (progNamePtr==NULL): */
  114. /*   Evaluate token list in argv[] (as generated by CmdLineParseString() or */
  115. /*   CmdLineParseFile()). Switches are identified by preceding '-' if */
  116. /*   paraList!=NULL. Switches don't have a preceding '-' if paraList==NULL. */
  117. int CmdLineEval (
  118.   int argc, /* in: num command line args */
  119.   char *argv[], /* in: command line args */
  120.   CmdLinePara *paraList, /* in: parameter info list */
  121. /*     or NULL */
  122.   CmdLineSwitch *switchList, /* in: switch info list */
  123. /*     or NULL */
  124.   int setDefault, /* in: 0 = leave switch used flags and args */
  125. /*         unchanged */
  126. /*     1 = init switch used flags and args */
  127. /*         with defaultValue */
  128.   char **progNamePtr); /* out: program name */
  129. /*      or NULL */
  130. /* returns: */
  131. /*  0=OK  1=help switch  2=error */
  132. /* CmdLineEvalFree() */
  133. /* Free memory allocated by CmdLineEval() for variable length */
  134. /* argument list. */
  135. void CmdLineEvalFree (
  136.   CmdLinePara *paraList); /* in: parameter info list */
  137. /*     or NULL */
  138. /* CmdLineHelp() */
  139. /* Print help text about program usage including description of */
  140. /* command line parameters and switches. */
  141. void CmdLineHelp (
  142.   char *progName, /* in: program name */
  143. /*     or NULL */
  144.   CmdLinePara *paraList, /* in: parameter info list */
  145. /*     or NULL */
  146.   CmdLineSwitch *switchList, /* in: switch info list */
  147. /*     or NULL */
  148.   FILE *outStream); /* in: output stream */
  149. /*     (e.g. stdout) */
  150. /* CmdLineParseString() */
  151. /* Parse a copy of string into tokens separated by sepaChar. */
  152. /* Resulting token list can be evaluated by CmdLineEval(). */
  153. char **CmdLineParseString (
  154.   char *string, /* in: string to be parsed */
  155. /*     NOTE: string is not modified */
  156.   char *sepaChar, /* in: token separator characters */
  157.   int *count); /* out: number of tokens generated by parser */
  158. /*      (corresponds to argc) */
  159. /* returns: */
  160. /*  list of tokens generated by parser */
  161. /*  (corresponds to argv[]) */
  162. /* CmdLineParseFile() */
  163. /* Parse init file into tokens separated by sepaChar. */
  164. /* Comments preceded by a commentSepaChar are ingnored. */
  165. /* Resulting token list can be evaluated by CmdLineEval(). */
  166. char **CmdLineParseFile (
  167.   char *fileName, /* in: file name of init file */
  168.   char *sepaChar, /* in: token separator characters */
  169.   char *commentSepaChar, /* in: comment separator characters */
  170.   int *count); /* out: number of tokens generated by parser */
  171. /*      (corresponds to argc) */
  172. /* returns: */
  173. /*  list of tokens generated by parser */
  174. /*  (corresponds to argv[]) */
  175. /*  or NULL if file error */
  176. /* CmdLineParseFree() */
  177. /* Free memory allocated by CmdLineParseString() or CmdLineParseFile(). */
  178. void CmdLineParseFree (
  179.   char **tokenList); /* in: token list returned by */
  180. /*     CmdLineParseString() or */
  181. /*     CmdLineParseFile() */
  182. /* ComposeFileName() */
  183. /* Compose filename using default path and extension if required. */
  184. /* Handles Unix & DOS paths. "-" is passed through directly. */
  185. int ComposeFileName (
  186.   char *inName, /* in: input filename */
  187.   int forceDefault, /* in: 0=keep input path and/or extension if */
  188. /*       available, otherwise use default(s) */
  189. /*     1=force usage of default */
  190. /*       path and extension */
  191.   char *defaultPath, /* in: default path */
  192. /*     or NULL */
  193.   char *defaultExt, /* in: default extension */
  194. /*     or NULL */
  195.   char *fileName, /* out: composed filename */
  196.   unsigned int fileNameMaxLen); /* in: fileName max length */
  197. /* returns: */
  198. /*  0=OK  1=result too long */
  199. #ifdef __cplusplus
  200. }
  201. #endif
  202. #endif /* #ifndef _cmdline_h_ */
  203. /* end of cmdline.h */