| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| #ifndef __EntryPoint__H__ |
| #define __EntryPoint__H__ |
| |
| #include <string> |
| #include <vector> |
| #include <stdio.h> |
| |
| #include "Var.h" |
| |
| //--------------------------------------------------- |
| |
| typedef std::vector<Var> VarsArray; |
| |
| class EntryPoint { |
| public: |
| EntryPoint(); |
| virtual ~EntryPoint(); |
| bool parse(unsigned int lc, const std::string & str); |
| void reset(); // reset the class to empty; |
| void print(FILE *fp = stdout, bool newline = true, |
| const std::string & name_suffix = std::string(""), |
| const std::string & name_prefix = std::string(""), |
| const std::string & ctx_param = std::string("")) const; |
| const std::string & name() const { return m_name; } |
| const std::string & hostApiName() const { |
| if (m_customHostApi.empty()) return m_name; |
| return m_customHostApi; |
| } |
| VarsArray & vars() { return m_vars; } |
| const VarsArray & vars() const { return m_vars; } |
| Var & retval() { return m_retval; } |
| Var * var(const std::string & name); |
| const Var * var(const std::string & name) const; |
| bool hasPointers(); |
| bool unsupported() const { return m_unsupported; } |
| void setUnsupported(bool state) { m_unsupported = state; } |
| bool customDecoder() { return m_customDecoder; } |
| void setCustomDecoder(bool state) { m_customDecoder = state; } |
| bool notApi() const { return m_notApi; } |
| void setNotApi(bool state) { m_notApi = state; } |
| bool flushOnEncode() const { return m_flushOnEncode; } |
| void setFlushOnEncode(bool state) { m_flushOnEncode = state; } |
| void setCustomHostApi(const std::string& apiname) { m_customHostApi = apiname; } |
| int validateVarAttr(const std::string& varname, size_t lc) const; |
| int setAttribute(const std::string &line, size_t lc); |
| |
| private: |
| std::string m_name; |
| Var m_retval; |
| VarsArray m_vars; |
| bool m_unsupported; |
| bool m_customDecoder; |
| bool m_notApi; |
| bool m_flushOnEncode; |
| std::string m_customHostApi; |
| |
| void err(unsigned int lc, const char *msg) { |
| fprintf(stderr, "line %d: %s\n", lc, msg); |
| } |
| }; |
| |
| |
| #endif |