1 /*
2  **********************************************************************
3  *   Copyright (C) 2005-2012, International Business Machines
4  *   Corporation and others.  All Rights Reserved.
5  **********************************************************************
6  */
7 
8 #ifndef __CSMATCH_H
9 #define __CSMATCH_H
10 
11 #include "unicode/uobject.h"
12 
13 #if !UCONFIG_NO_CONVERSION
14 
15 U_NAMESPACE_BEGIN
16 
17 class InputText;
18 class CharsetRecognizer;
19 
20 /*
21  * CharsetMatch represents the results produced by one Charset Recognizer for one input text
22  *              Any confidence > 0 indicates a possible match, meaning that the input bytes
23  *              are at least legal.
24  *
25  *              The full results of a detect are represented by an array of these
26  *              CharsetMatch objects, each representing a possible matching charset.
27  *
28  *              Note that a single charset recognizer may detect multiple closely related
29  *              charsets, and set different names depending on the exact input bytes seen.
30  */
31 class CharsetMatch : public UMemory
32 {
33  private:
34     InputText               *textIn;
35     int32_t                  confidence;
36     const char              *fCharsetName;
37     const char              *fLang;
38 
39  public:
40     CharsetMatch();
41 
42     /**
43       * fully set the state of this CharsetMatch.
44       * Called by the CharsetRecognizers to record match results.
45       * Default (NULL) parameters for names will be filled by calling the
46       *   corresponding getters on the recognizer.
47       */
48     void set(InputText               *input,
49              const CharsetRecognizer *cr,
50              int32_t                  conf,
51              const char              *csName=NULL,
52              const char              *lang=NULL);
53 
54     /**
55       * Return the name of the charset for this Match
56       */
57     const char *getName() const;
58 
59     const char *getLanguage()const;
60 
61     int32_t getConfidence()const;
62 
63     int32_t getUChars(UChar *buf, int32_t cap, UErrorCode *status) const;
64 };
65 
66 U_NAMESPACE_END
67 
68 #endif
69 #endif /* __CSMATCH_H */
70