1 /*
2 * Copyright 2016 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 *
7 */
8
9 //
10 //
11 //
12
13 #include <stdlib.h>
14 #include <stdio.h>
15
16 //
17 //
18 //
19
20 #include "assert_skc.h"
21
22 //
23 //
24 //
25
26 #define SKC_ERR_TO_STR(err) case err: return #err
27
28 //
29 //
30 //
31
32 char const *
skc_get_error_string(skc_err const err)33 skc_get_error_string(skc_err const err)
34 {
35 switch(err)
36 {
37 SKC_ERR_TO_STR(SKC_ERR_SUCCESS);
38 SKC_ERR_TO_STR(SKC_ERR_NOT_IMPLEMENTED);
39 SKC_ERR_TO_STR(SKC_ERR_POOL_EMPTY);
40 SKC_ERR_TO_STR(SKC_ERR_CONDVAR_WAIT);
41 SKC_ERR_TO_STR(SKC_ERR_LAYER_ID_INVALID);
42 SKC_ERR_TO_STR(SKC_ERR_LAYER_NOT_EMPTY);
43 SKC_ERR_TO_STR(SKC_ERR_TRANSFORM_WEAKREF_INVALID);
44 SKC_ERR_TO_STR(SKC_ERR_STROKE_STYLE_WEAKREF_INVALID);
45 SKC_ERR_TO_STR(SKC_ERR_COMMAND_NOT_READY);
46 SKC_ERR_TO_STR(SKC_ERR_COMMAND_NOT_COMPLETED);
47 SKC_ERR_TO_STR(SKC_ERR_COMMAND_NOT_STARTED);
48 SKC_ERR_TO_STR(SKC_ERR_COMMAND_NOT_READY_OR_COMPLETED);
49 SKC_ERR_TO_STR(SKC_ERR_COMPOSITION_SEALED);
50 SKC_ERR_TO_STR(SKC_ERR_STYLING_SEALED);
51 SKC_ERR_TO_STR(SKC_ERR_HANDLE_INVALID);
52 SKC_ERR_TO_STR(SKC_ERR_HANDLE_OVERFLOW);
53
54 default:
55 return "UNKNOWN SKC ERROR CODE";
56 }
57 }
58
59 //
60 //
61 //
62
63 skc_err
assert_skc(skc_err const err,char const * const file,int const line,bool const abort)64 assert_skc(skc_err const err, char const * const file, int const line, bool const abort)
65 {
66 if (err != SKC_ERR_SUCCESS)
67 {
68 char const * const skc_err_str = skc_get_error_string(err);
69
70 fprintf(stderr,
71 "\"%s\", line %d: skc_assert (%d) = \"%s\"",
72 file,line,err,skc_err_str);
73
74 if (abort)
75 {
76 // stop profiling and reset device here if necessary
77 exit(err);
78 }
79 }
80
81 return err;
82 }
83
84 //
85 //
86 //
87