Home | History | Annotate | Download | only in web
      1 /*
      2  * Copyright (C) 2012 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  *  * Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  *  * Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef WebSpeechRecognitionHandle_h
     27 #define WebSpeechRecognitionHandle_h
     28 
     29 #include "../platform/WebCommon.h"
     30 #include "../platform/WebPrivatePtr.h"
     31 
     32 namespace blink {
     33 
     34 class SpeechRecognition;
     35 class WebSpeechRecognitionResult;
     36 class WebString;
     37 
     38 // WebSpeechRecognitionHandle is used by WebSpeechRecognizer to identify a
     39 // recognition session, and by WebSpeechRecognizerClient to route
     40 // recognition events.
     41 class WebSpeechRecognitionHandle {
     42 public:
     43     ~WebSpeechRecognitionHandle() { reset(); }
     44     WebSpeechRecognitionHandle() { }
     45 
     46     WebSpeechRecognitionHandle(const WebSpeechRecognitionHandle& other) { assign(other); }
     47     WebSpeechRecognitionHandle& operator=(const WebSpeechRecognitionHandle& other)
     48     {
     49         assign(other);
     50         return *this;
     51     }
     52 
     53     BLINK_EXPORT void reset();
     54     BLINK_EXPORT void assign(const WebSpeechRecognitionHandle&);
     55 
     56     // Comparison functions are provided so that WebSpeechRecognitionHandle objects
     57     // can be stored in a hash map.
     58     BLINK_EXPORT bool equals(const WebSpeechRecognitionHandle&) const;
     59     BLINK_EXPORT bool lessThan(const WebSpeechRecognitionHandle&) const;
     60 
     61 #if BLINK_IMPLEMENTATION
     62     explicit WebSpeechRecognitionHandle(SpeechRecognition*);
     63     WebSpeechRecognitionHandle& operator=(SpeechRecognition*);
     64     operator SpeechRecognition*() const;
     65 #endif
     66 
     67 private:
     68     WebPrivatePtr<SpeechRecognition> m_private;
     69 };
     70 
     71 inline bool operator==(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
     72 {
     73     return a.equals(b);
     74 }
     75 
     76 inline bool operator!=(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
     77 {
     78     return !(a == b);
     79 }
     80 
     81 inline bool operator<(const WebSpeechRecognitionHandle& a, const WebSpeechRecognitionHandle& b)
     82 {
     83     return a.lessThan(b);
     84 }
     85 
     86 } // namespace blink
     87 
     88 #endif // WebSpeechRecognitionHandle_h
     89