• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 *******************************************************************************
3 *   Copyright (C) 2011, International Business Machines
4 *   Corporation and others.  All Rights Reserved.
5 *******************************************************************************
6 *   file name:  messageimpl.h
7 *   encoding:   US-ASCII
8 *   tab size:   8 (not used)
9 *   indentation:4
10 *
11 *   created on: 2011apr04
12 *   created by: Markus W. Scherer
13 */
14 
15 #ifndef __MESSAGEIMPL_H__
16 #define __MESSAGEIMPL_H__
17 
18 #include "unicode/utypes.h"
19 
20 #if !UCONFIG_NO_FORMATTING
21 
22 #include "unicode/messagepattern.h"
23 
24 U_NAMESPACE_BEGIN
25 
26 /**
27  * Helper functions for use of MessagePattern.
28  * In Java, these are package-private methods in MessagePattern itself.
29  * In C++, they are declared here and implemented in messagepattern.cpp.
30  */
31 class U_COMMON_API MessageImpl {
32 public:
33     /**
34      * @return TRUE if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
35      */
jdkAposMode(const MessagePattern & msgPattern)36     static UBool jdkAposMode(const MessagePattern &msgPattern) {
37         return msgPattern.getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED;
38     }
39 
40     /**
41      * Appends the s[start, limit[ substring to sb, but with only half of the apostrophes
42      * according to JDK pattern behavior.
43      */
44     static void appendReducedApostrophes(const UnicodeString &s, int32_t start, int32_t limit,
45                                          UnicodeString &sb);
46 
47     /**
48      * Appends the sub-message to the result string.
49      * Omits SKIP_SYNTAX and appends whole arguments using appendReducedApostrophes().
50      */
51     static UnicodeString &appendSubMessageWithoutSkipSyntax(const MessagePattern &msgPattern,
52                                                             int32_t msgStart,
53                                                             UnicodeString &result);
54 
55 private:
56     MessageImpl();  // no constructor: all static methods
57 };
58 
59 U_NAMESPACE_END
60 
61 #endif  // !UCONFIG_NO_FORMATTING
62 
63 #endif  // __MESSAGEIMPL_H__
64