File Coverage

lib/Encode/Detect/Detector.xs
Criterion Covered Total %
statement 11 13 84.6
branch 5 10 50.0
condition n/a
subroutine n/a
pod n/a
total 16 23 69.5


line stmt bran cond sub pod time code
1             // ***** BEGIN LICENSE BLOCK *****
2             // Version: MPL 1.1/GPL 2.0/LGPL 2.1
3             //
4             // The contents of this file are subject to the Mozilla Public License Version
5             // 1.1 (the "License"); you may not use this file except in compliance with
6             // the License. You may obtain a copy of the License at
7             // http://www.mozilla.org/MPL/
8             //
9             // Software distributed under the License is distributed on an "AS IS" basis,
10             // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11             // for the specific language governing rights and limitations under the
12             // License.
13             //
14             // The Original Code is Encode::Detect wrapper
15             //
16             // The Initial Developer of the Original Code is
17             // Proofpoint, Inc.
18             // Portions created by the Initial Developer are Copyright (C) 2005
19             // the Initial Developer. All Rights Reserved.
20             //
21             // Contributor(s):
22             //
23             // Alternatively, the contents of this file may be used under the terms of
24             // either the GNU General Public License Version 2 or later (the "GPL"), or
25             // the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26             // in which case the provisions of the GPL or the LGPL are applicable instead
27             // of those above. If you wish to allow use of your version of this file only
28             // under the terms of either the GPL or the LGPL, and not to allow others to
29             // use your version of this file under the terms of the MPL, indicate your
30             // decision by deleting the provisions above and replace them with the notice
31             // and other provisions required by the GPL or the LGPL. If you do not delete
32             // the provisions above, a recipient may use your version of this file under
33             // the terms of any one of the MPL, the GPL or the LGPL.
34             //
35             // ***** END LICENSE BLOCK *****
36              
37             extern "C" {
38             #define PERL_NO_GET_CONTEXT /* we want efficiency */
39             #include "EXTERN.h"
40             #include "perl.h"
41              
42             // work around perlbug #39634
43             #if __GNUC__ == 3 && __GNUC_MINOR__ <= 3
44             #undef HASATTRIBUTE_UNUSED
45             #endif
46              
47             #include "XSUB.h"
48             }
49              
50             #include "nscore.h"
51             #include "nsUniversalDetector.h"
52              
53             class Detector: public nsUniversalDetector {
54             public:
55 4 50         Detector() {};
    50          
56 8           virtual ~Detector() {}
57             const char *getresult() { return mDetectedCharset; }
58 0           virtual void Reset() { this->nsUniversalDetector::Reset(); }
59             protected:
60 4           virtual void Report(const char* aCharset) { mDetectedCharset = aCharset; }
61             };
62              
63              
64             MODULE = Encode::Detect::Detector PACKAGE = Encode::Detect::Detector
65             PROTOTYPES: ENABLE
66              
67              
68             Detector *
69             Detector::new()
70              
71             void
72             Detector::DESTROY()
73              
74             int
75             Detector::handle(SV *buf)
76             CODE:
77             STRLEN len;
78 1 50         char *ptr = SvPV(buf, len);
79 1           RETVAL = THIS->HandleData(ptr, len);
80             OUTPUT:
81             RETVAL
82              
83             void
84             Detector::eof()
85             CODE:
86 1           THIS->DataEnd();
87              
88             void
89             Detector::reset()
90             CODE:
91 0           THIS->Reset();
92              
93             const char *
94             Detector::getresult()
95             CODE:
96             RETVAL = THIS->getresult();
97             OUTPUT:
98             RETVAL
99              
100              
101             const char *
102             detect(buf)
103             SV *buf
104             CODE:
105             STRLEN len;
106 3 50         char *ptr = SvPV(buf, len);
107              
108 3           Detector *det = new Detector;
109 3           det->HandleData(ptr, len);
110 3           det->DataEnd();
111             RETVAL = det->getresult();
112 3 50         delete det;
113             OUTPUT:
114             RETVAL
115