LCOV - code coverage report
Current view: top level - gfx/graphite2/src/inc - Error.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 5 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*  GRAPHITE2 LICENSING
       2             : 
       3             :     Copyright 2013, SIL International
       4             :     All rights reserved.
       5             : 
       6             :     This library is free software; you can redistribute it and/or modify
       7             :     it under the terms of the GNU Lesser General Public License as published
       8             :     by the Free Software Foundation; either version 2.1 of License, or
       9             :     (at your option) any later version.
      10             : 
      11             :     This program is distributed in the hope that it will be useful,
      12             :     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14             :     Lesser General Public License for more details.
      15             : 
      16             :     You should also have received a copy of the GNU Lesser General Public
      17             :     License along with this library in the file named "LICENSE".
      18             :     If not, write to the Free Software Foundation, 51 Franklin Street, 
      19             :     Suite 500, Boston, MA 02110-1335, USA or visit their web page on the 
      20             :     internet at http://www.fsf.org/licenses/lgpl.html.
      21             : 
      22             : Alternatively, the contents of this file may be used under the terms of the
      23             : Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public
      24             : License, as published by the Free Software Foundation, either version 2
      25             : of the License or (at your option) any later version.
      26             : */
      27             : #pragma once
      28             : 
      29             : // numbers are explicitly assigned for future proofing
      30             : 
      31             : namespace graphite2
      32             : {
      33             : 
      34             : class Error
      35             : {
      36             : public:
      37           0 :     Error() : _e(0) {};
      38           0 :     operator bool() { return (_e != 0); }
      39           0 :     int error() { return _e; }
      40           0 :     void error(int e) { _e = e; }
      41           0 :     bool test(bool pr, int err) { return (_e = int(pr) * err); }
      42             : 
      43             : private:
      44             :     int _e;
      45             : };
      46             : 
      47             : enum errcontext {
      48             :     EC_READGLYPHS = 1,      // while reading glyphs
      49             :     EC_READSILF = 2,        // in Silf table
      50             :     EC_ASILF = 3,           // in Silf %d
      51             :     EC_APASS = 4,           // in Silf %d, pass %d
      52             :     EC_PASSCCODE = 5,       // in pass constraint code for Silf %d, pass %d
      53             :     EC_ARULE = 6,           // in Silf %d, pass %d, rule %d
      54             :     EC_ASTARTS = 7,         // in Silf %d, pass %d, start state %d
      55             :     EC_ATRANS = 8,          // in Silf %d, pass %d, fsm state %d
      56             :     EC_ARULEMAP = 9         // in Silf %d, pass %d, state %d
      57             : };
      58             : 
      59             : enum errors {
      60             :     E_OUTOFMEM = 1,         // Out of memory
      61             :     E_NOGLYPHS = 2,         // There are no glyphs in the font
      62             :     E_BADUPEM = 3,          // The units per em for the font is bad (0)
      63             :     E_BADCMAP = 4,          // The font does not contain any useful cmaps
      64             :     E_NOSILF = 5,           // Missing Silf table
      65             :     E_TOOOLD = 6,           // Silf table version is too old
      66             :     E_BADSIZE = 7,          // context object has the wrong structural size
      67             : // Silf Subtable Errors take a Silf subtable number * 256 in the context
      68             :     E_BADMAXGLYPH = 8,      // Silf max glyph id is too high
      69             :     E_BADNUMJUSTS = 9,      // Number of Silf justification blocks is too high
      70             :     E_BADENDJUSTS = 10,     // Silf justification blocks take too much of the Silf table space
      71             :     E_BADCRITFEATURES = 11, // Critical features section in a Silf table is too big
      72             :     E_BADSCRIPTTAGS = 12,   // Silf script tags area is too big
      73             :     E_BADAPSEUDO = 13,      // The pseudo glyph attribute number is too high
      74             :     E_BADABREAK = 14,       // The linebreak glyph attribute number is too high
      75             :     E_BADABIDI = 15,        // The bidi glyph attribute number is too high
      76             :     E_BADAMIRROR = 16,      // The mirrored glyph attribute number is too high
      77             :     E_BADNUMPASSES = 17,    // The number of passes is > 128
      78             :     E_BADPASSESSTART = 18,  // The Silf table is too small to hold any passes
      79             :     E_BADPASSBOUND = 19,    // The positioning pass number is too low or the substitution pass number is too high
      80             :     E_BADPPASS = 20,        // The positioning pass number is too high
      81             :     E_BADSPASS = 21,        // the substitution pass number is too high
      82             :     E_BADJPASSBOUND = 22,   // the justification pass must be higher than the positioning pass
      83             :     E_BADJPASS = 23,        // the justification pass is too high
      84             :     E_BADALIG = 24,         // the number of initial ligature component glyph attributes is too high
      85             :     E_BADBPASS = 25,        // the bidi pass number is specified and is either too high or too low
      86             :     E_BADNUMPSEUDO = 26,    // The number of pseudo glyphs is too high
      87             :     E_BADCLASSSIZE = 27,    // The size of the classes block is bad
      88             :     E_TOOMANYLINEAR = 28,   // The number of linear classes in the silf table is too high
      89             :     E_CLASSESTOOBIG = 29,   // There are too many classes for the space allocated in the Silf subtable
      90             :     E_MISALIGNEDCLASSES = 30,   // The class offsets in the class table don't line up with the number of classes
      91             :     E_HIGHCLASSOFFSET = 31, // The class offsets point out of the class table
      92             :     E_BADCLASSOFFSET = 32,  // A class offset is less than one following it
      93             :     E_BADCLASSLOOKUPINFO = 33,  // The search header info for a non-linear class has wrong values in it
      94             : // Pass subtable errors. Context has pass number * 65536
      95             :     E_BADPASSSTART = 34,    // The start offset for a particular pass is bad
      96             :     E_BADPASSEND = 35,      // The end offset for a particular pass is bad
      97             :     E_BADPASSLENGTH = 36,   // The length of the pass is too small
      98             :     E_BADNUMTRANS = 37,     // The number of transition states in the fsm is bad
      99             :     E_BADNUMSUCCESS = 38,   // The number of success states in the fsm is bad
     100             :     E_BADNUMSTATES = 39,    // The number of states in the fsm is bad
     101             :     E_NORANGES = 40,        // There are no columns in the fsm
     102             :     E_BADRULEMAPLEN = 41,   // The size of the success state to rule mapping is bad
     103             :     E_BADCTXTLENBOUNDS = 42,    // The precontext maximum is greater than its minimum
     104             :     E_BADCTXTLENS = 43,     // The lists of rule lengths or pre context lengths is bad
     105             :     E_BADPASSCCODEPTR = 44, // The pass constraint code position does not align with where the forward reference says it should be
     106             :     E_BADRULECCODEPTR = 45, // The rule constraint code position does not align with where the forward reference says it should be
     107             :     E_BADCCODELEN = 46,     // Bad rule/pass constraint code length
     108             :     E_BADACTIONCODEPTR = 47,    // The action code position does not align with where the forward reference says it should be
     109             :     E_MUTABLECCODE = 48,    // Constraint code edits slots. It shouldn't.
     110             :     E_BADSTATE = 49,        // Bad state transition referencing an illegal state
     111             :     E_BADRULEMAPPING = 50,  // The structure of the rule mapping is bad
     112             :     E_BADRANGE = 51,        // Bad column range structure including a glyph in more than one column
     113             :     E_BADRULENUM = 52,      // A reference to a rule is out of range (too high)
     114             :     E_BADACOLLISION = 53,   // Bad Silf table collision attribute number (too high)
     115             :     E_BADEMPTYPASS = 54,    // Can't have empty passes (no rules) except for collision passes
     116             :     E_BADSILFVERSION = 55,  // The Silf table has a bad version (probably too high)
     117             :     E_BADCOLLISIONPASS = 56,    // Collision flags set on a non positioning pass
     118             :     E_BADNUMCOLUMNS = 57,   // Arbitrarily limit number of columns in fsm
     119             : // Code errors
     120             :     E_CODEFAILURE = 60,     // Base code error. The following subcodes must align with Machine::Code::status_t in Code.h
     121             :     E_CODEALLOC = 61,       // Out of memory
     122             :     E_INVALIDOPCODE = 62,   // Invalid op code
     123             :     E_UNIMPOPCODE = 63,     // Unimplemented op code encountered
     124             :     E_OUTOFRANGECODE = 64,  // Code argument out of range
     125             :     E_BADJUMPCODE = 65,     // Code jumps past end of op codes
     126             :     E_CODEBADARGS = 66,     // Code arguments exhausted
     127             :     E_CODENORETURN = 67,    // Missing return type op code at end of code
     128             :     E_CODENESTEDCTXT = 68,   // Nested context encountered in code
     129             : // Compression errors
     130             :     E_BADSCHEME = 69,
     131             :     E_SHRINKERFAILED = 70,
     132             : };
     133             : 
     134             : }
     135             : 

Generated by: LCOV version 1.13