00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 00002 /* 00003 * This file is part of the libetonyek project. 00004 * 00005 * This Source Code Form is subject to the terms of the Mozilla Public 00006 * License, v. 2.0. If a copy of the MPL was not distributed with this 00007 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 00008 */ 00009 00010 #ifndef IWORKTOKENINFO_H_INCLUDED 00011 #define IWORKTOKENINFO_H_INCLUDED 00012 00013 namespace libetonyek 00014 { 00015 00016 template<class Parser> 00017 struct IWORKTokenInfo 00018 { 00019 }; 00020 00021 class IWORKParser; 00022 class KEY1Parser; 00023 class KEY2Parser; 00024 class NUM1Parser; 00025 class PAG1Parser; 00026 00027 template<> 00028 struct IWORKTokenInfo<IWORKParser> 00029 { 00030 static const int first = 1; 00031 static const int last = first + 1000; 00032 }; 00033 00034 template<> 00035 struct IWORKTokenInfo<KEY1Parser> 00036 { 00037 static const int first = IWORKTokenInfo<IWORKParser>::last + 1; 00038 static const int last = first + 1000; 00039 }; 00040 00041 template<> 00042 struct IWORKTokenInfo<KEY2Parser> 00043 { 00044 static const int first = IWORKTokenInfo<KEY1Parser>::last + 1; 00045 static const int last = first + 1000; 00046 }; 00047 00048 template<> 00049 struct IWORKTokenInfo<NUM1Parser> 00050 { 00051 static const int first = IWORKTokenInfo<KEY2Parser>::last + 1; 00052 static const int last = first + 1000; 00053 }; 00054 00055 template<> 00056 struct IWORKTokenInfo<PAG1Parser> 00057 { 00058 static const int first = IWORKTokenInfo<NUM1Parser>::last + 1; 00059 static const int last = first + 1000; 00060 }; 00061 00062 } 00063 00064 #endif // IWORKTOKENINFO_H_INCLUDED 00065 00066 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */