| /****************************************************************************** |
| |
| Copyright (c) 2009-2010, Terry Caton |
| All rights reserved. |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions are met: |
| * Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| * Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in the |
| documentation and/or other materials provided with the distribution. |
| * Neither the name of the projecct nor the names of its contributors |
| may be used to endorse or promote products derived from this software |
| without specific prior written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| ******************************************************************************/ |
| |
| #pragma once |
| |
| #include "elements.h" |
| |
| namespace json |
| { |
| |
| |
| class Visitor |
| { |
| public: |
| virtual ~Visitor() {} |
| |
| virtual void Visit(Array& array) = 0; |
| virtual void Visit(Object& object) = 0; |
| virtual void Visit(Number& number) = 0; |
| virtual void Visit(String& string) = 0; |
| virtual void Visit(Boolean& boolean) = 0; |
| virtual void Visit(Null& null) = 0; |
| }; |
| |
| class ConstVisitor |
| { |
| public: |
| virtual ~ConstVisitor() {} |
| |
| virtual void Visit(const Array& array) = 0; |
| virtual void Visit(const Object& object) = 0; |
| virtual void Visit(const Number& number) = 0; |
| virtual void Visit(const String& string) = 0; |
| virtual void Visit(const Boolean& boolean) = 0; |
| virtual void Visit(const Null& null) = 0; |
| }; |
| |
| |
| } // End namespace |