home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gettext-0.10.24-src.tgz / tar.out / fsf / gettext / src / message.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  129 lines

  1. /* GNU gettext - internationalization aids
  2.    Copyright (C) 1995, 1996 Free Software Foundation, Inc.
  3.  
  4.    This file was written by Peter Miller <pmiller@agso.gov.au>
  5.  
  6. This program is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  19.  
  20. #ifndef _MESSAGE_H
  21. #define _MESSAGE_H
  22.  
  23. #include "po-lex.h"
  24. #include "str-list.h"
  25.  
  26. /* According to Sun's Uniforum proposal the default message domain is
  27.    named `messages'.  */
  28. #define MESSAGE_DOMAIN_DEFAULT "messages"
  29.  
  30.  
  31. /* Is current msgid a format string?  */
  32. enum is_c_format
  33. {
  34.   undecided,
  35.   yes,
  36.   no,
  37.   possible,
  38.   impossible
  39. };
  40.  
  41. typedef struct message_variant_ty message_variant_ty;
  42. struct message_variant_ty
  43. {
  44.   const char *domain;
  45.   lex_pos_ty pos;
  46.   const char *msgstr;
  47. };
  48.  
  49. typedef struct message_ty message_ty;
  50. struct message_ty
  51. {
  52.   /* Plain comments (#) appearing before the message.  */
  53.   string_list_ty *comment;
  54.  
  55.   /* Extracted comments (#.) appearing before the message.  */
  56.   string_list_ty *comment_dot;
  57.  
  58.   /* File position comments (#:) appearing before the message, one for
  59.      each unique file position instance, sorted by file name and then
  60.      by line.  */
  61.   size_t filepos_count;
  62.   lex_pos_ty *filepos;
  63.  
  64.   /* Informations from special comments (e.g. generated by msgmerge).  */
  65.   int is_fuzzy;
  66.   enum is_c_format is_c_format;
  67.  
  68.   /* Do we want the string to be wrapped in the emitted PO file?  */
  69.   enum is_c_format do_wrap;
  70.  
  71.   /* The msgid string.  */
  72.   const char *msgid;
  73.  
  74.   /* The msgstr strings, one for each observed domain in the file.  */
  75.   size_t variant_count;
  76.   message_variant_ty *variant;
  77.  
  78.   /* Used for checking that messages have been used, in the msgcmp and
  79.      msgmerge programs.  */
  80.   int used;
  81.  
  82.   /* If set the message is obsolete and while writing out it should be
  83.      commented out.  */
  84.   int obsolete;
  85. };
  86.  
  87. message_ty *message_alloc PARAMS ((char *msgid));
  88. void message_free PARAMS ((message_ty *));
  89.  
  90. message_variant_ty *message_variant_search PARAMS ((message_ty *mp,
  91.                             const char *domain));
  92. void message_variant_append PARAMS ((message_ty *mp, const char *domain,
  93.                      const char *msgstr,
  94.                      const lex_pos_ty *pp));
  95. void message_comment_append PARAMS ((message_ty *, const char *));
  96. void message_comment_dot_append PARAMS ((message_ty *, const char *));
  97. message_ty *message_copy PARAMS ((message_ty *));
  98. message_ty *message_merge PARAMS ((message_ty *def, message_ty *ref));
  99. void message_comment_filepos PARAMS ((message_ty *, const char *, size_t));
  100. void message_print_style_indent PARAMS ((void));
  101. void message_print_style_uniforum PARAMS ((void));
  102. void message_print_style_escape PARAMS ((int));
  103.  
  104.  
  105. typedef struct message_list_ty message_list_ty;
  106. struct message_list_ty
  107. {
  108.   message_ty **item;
  109.   size_t nitems;
  110.   size_t nitems_max;
  111. };
  112.  
  113. message_list_ty *message_list_alloc PARAMS ((void));
  114. void message_list_free PARAMS ((message_list_ty *));
  115. void message_list_append PARAMS ((message_list_ty *, message_ty *));
  116. message_ty *message_list_search PARAMS ((message_list_ty *, const char *));
  117. message_ty *message_list_search_fuzzy PARAMS ((message_list_ty *,
  118.                            const char *));
  119. void message_list_print PARAMS ((message_list_ty *, const char *, int, int));
  120. void message_list_sort_by_msgid PARAMS ((message_list_ty *));
  121. void message_list_sort_by_filepos PARAMS ((message_list_ty *));
  122.  
  123. enum is_c_format parse_c_format_description_string PARAMS ((const char *s));
  124. enum is_c_format parse_c_width_description_string PARAMS ((const char *s));
  125. int possible_c_format_p PARAMS ((enum is_c_format));
  126. void message_page_width_set PARAMS ((size_t width));
  127.  
  128. #endif /* message.h */
  129.