14da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org/*
24da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*******************************************************************************
34da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   Copyright (C) 2011, International Business Machines
44da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   Corporation and others.  All Rights Reserved.
54da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*******************************************************************************
64da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   file name:  messageimpl.h
74da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   encoding:   US-ASCII
84da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   tab size:   8 (not used)
94da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   indentation:4
104da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*
114da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   created on: 2011apr04
124da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*   created by: Markus W. Scherer
134da06ab3351f2a96f9216d96106db33a77b19644schenney@chromium.org*/
1445cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
1545cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org#ifndef __MESSAGEIMPL_H__
1645cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org#define __MESSAGEIMPL_H__
1745cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
1845cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org#include "unicode/utypes.h"
19a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org
20a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org#if !UCONFIG_NO_FORMATTING
21a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org
22a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org#include "unicode/messagepattern.h"
2345cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
2445cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.orgU_NAMESPACE_BEGIN
2545cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
26d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com/**
27f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina * Helper functions for use of MessagePattern.
28d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com * In Java, these are package-private methods in MessagePattern itself.
2945cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org * In C++, they are declared here and implemented in messagepattern.cpp.
3045cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org */
3145cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.orgclass U_COMMON_API MessageImpl {
3245cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.orgpublic:
3345cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    /**
3445cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     * @return TRUE if getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED
3545cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     */
3645cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    static UBool jdkAposMode(const MessagePattern &msgPattern) {
3745cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org        return msgPattern.getApostropheMode()==UMSGPAT_APOS_DOUBLE_REQUIRED;
3845cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    }
3945cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
4045cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    /**
4145cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     * Appends the s[start, limit[ substring to sb, but with only half of the apostrophes
4245cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     * according to JDK pattern behavior.
4345cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     */
4445cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    static void appendReducedApostrophes(const UnicodeString &s, int32_t start, int32_t limit,
45d6176b0dcacb124539e0cfd051e6d93a9782f020rmistry@google.com                                         UnicodeString &sb);
4645cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
4745cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    /**
4845cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     * Appends the sub-message to the result string.
4945cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     * Omits SKIP_SYNTAX and appends whole arguments using appendReducedApostrophes().
5045cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org     */
5145cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    static UnicodeString &appendSubMessageWithoutSkipSyntax(const MessagePattern &msgPattern,
5245cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org                                                            int32_t msgStart,
5345cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org                                                            UnicodeString &result);
5445cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
5545cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.orgprivate:
5645cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org    MessageImpl();  // no constructor: all static methods
5745cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org};
5845cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
5945cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.orgU_NAMESPACE_END
6045cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
6145cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org#endif  // !UCONFIG_NO_FORMATTING
6245cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org
6345cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org#endif  // __MESSAGEIMPL_H__
6445cbfdd53533693927ac13d44e42104269ce7a9eschenney@chromium.org