1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #include <Ice/Logger.h>
6 #include "ice.h"
7 #include "Util.h"
8 
9 using namespace std;
10 using namespace IceMatlab;
11 
12 extern "C"
13 {
14 
15 mxArray*
Ice_Logger_unref(void * self)16 Ice_Logger_unref(void* self)
17 {
18     delete reinterpret_cast<shared_ptr<Ice::Logger>*>(self);
19     return 0;
20 }
21 
22 mxArray*
Ice_Logger_print(void * self,mxArray * message)23 Ice_Logger_print(void* self, mxArray* message)
24 {
25     try
26     {
27         deref<Ice::Logger>(self)->print(getStringFromUTF16(message));
28     }
29     catch(const std::exception& ex)
30     {
31         return convertException(ex);
32     }
33     return 0;
34 }
35 
36 mxArray*
Ice_Logger_trace(void * self,mxArray * category,mxArray * message)37 Ice_Logger_trace(void* self, mxArray* category, mxArray* message)
38 {
39     try
40     {
41         deref<Ice::Logger>(self)->trace(getStringFromUTF16(category), getStringFromUTF16(message));
42     }
43     catch(const std::exception& ex)
44     {
45         return convertException(ex);
46     }
47     return 0;
48 }
49 
50 mxArray*
Ice_Logger_warning(void * self,mxArray * message)51 Ice_Logger_warning(void* self, mxArray* message)
52 {
53     try
54     {
55         deref<Ice::Logger>(self)->warning(getStringFromUTF16(message));
56     }
57     catch(const std::exception& ex)
58     {
59         return convertException(ex);
60     }
61     return 0;
62 }
63 
64 mxArray*
Ice_Logger_error(void * self,mxArray * message)65 Ice_Logger_error(void* self, mxArray* message)
66 {
67     try
68     {
69         deref<Ice::Logger>(self)->error(getStringFromUTF16(message));
70     }
71     catch(const std::exception& ex)
72     {
73         return convertException(ex);
74     }
75     return 0;
76 }
77 
78 mxArray*
Ice_Logger_getPrefix(void * self)79 Ice_Logger_getPrefix(void* self)
80 {
81     try
82     {
83         return createResultValue(createStringFromUTF8(deref<Ice::Logger>(self)->getPrefix()));
84     }
85     catch(const std::exception& ex)
86     {
87         return createResultException(convertException(ex));
88     }
89 }
90 
91 mxArray*
Ice_Logger_cloneWithPrefix(void * self,mxArray * prefix,void ** r)92 Ice_Logger_cloneWithPrefix(void* self, mxArray* prefix, void** r)
93 {
94     try
95     {
96         auto logger = deref<Ice::Logger>(self);
97         auto newLogger = logger->cloneWithPrefix(getStringFromUTF16(prefix));
98         *r = newLogger == logger ? 0 : new shared_ptr<Ice::Logger>(move(newLogger));
99     }
100     catch(const std::exception& ex)
101     {
102         return convertException(ex);
103     }
104     return 0;
105 }
106 
107 }
108