/* * Copyright © 2026 Google, Inc. * * This is part of HarfBuzz, a text shaping library. * * Permission is hereby granted, without written agreement and without * license or royalty fees, to use, copy, modify, and distribute this * software and its documentation for any purpose, provided that the * above copyright notice and the following two paragraphs appear in * all copies of this software. * * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * Google Author(s): Garret Rieger */ #ifndef GRAPH_GRAPH_RESULT_HH #define GRAPH_GRAPH_RESULT_HH #include "../hb-result.hh" namespace graph { enum graph_error_t { ALLOCATION_FAILURE, LIMIT_EXCEEDED, INVALID_ARGUMENT, CYCLE_DETECTED, SANITIZE_FAILURE, OUT_OF_BOUNDS, ORPHANED_NODES, OVERFLOW_RESOLUTION_FAILED, UNKNOWN, }; static inline const char* to_string(graph_error_t e) { switch (e) { case ALLOCATION_FAILURE: return "Memory Allocation Failed"; case LIMIT_EXCEEDED: return "Limit Exceeded"; case INVALID_ARGUMENT: return "Invalid Argument"; case CYCLE_DETECTED: return "Cycle in Graph"; case SANITIZE_FAILURE: return "Failed Sanitization"; case OUT_OF_BOUNDS: return "Out of Bounds"; case ORPHANED_NODES: return "Graph is not fully connected"; case OVERFLOW_RESOLUTION_FAILED: return "Overflows are not able to be resolved"; case UNKNOWN: default: return "Unknown Error"; } } template using graph_result_t = hb_result_t; } // namespace graph #endif /* GRAPH_GRAPH_RESULT_HH */