1 /* Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
17 #include "maps_error.h"
18 #include "maps_place_contact_plugin.h"
19 #include "maps_util.h"
20 #include "maps_condition.h"
22 typedef struct _maps_place_contact_s
27 } maps_place_contact_s;
29 const gsize _MAPS_PLACE_CONTACT_LABEL_MAX_LENGTH = MAPS_BASE_NAME_MAX_LEN;
30 const gsize _MAPS_PLACE_CONTACT_TYPE_MAX_LENGTH = MAPS_BASE_TYPE_MAX_LEN;
31 const gsize _MAPS_PLACE_CONTACT_VALUE_MAX_LENGTH = MAPS_BASE_DESC_MAX_LEN;
33 /*----------------------------------------------------------------------------*/
35 EXPORT_API int maps_place_contact_create(maps_place_contact_h *place)
37 if (!maps_condition_check_maps_feature())
38 return MAPS_ERROR_NOT_SUPPORTED;
40 return MAPS_ERROR_INVALID_PARAMETER;
42 *place = (maps_place_contact_h) g_slice_new0(maps_place_contact_s);
45 MAPS_LOGE("OUT_OF_MEMORY(0x%08x)", MAPS_ERROR_OUT_OF_MEMORY);
46 return MAPS_ERROR_OUT_OF_MEMORY;
50 return MAPS_ERROR_NONE;
53 EXPORT_API int maps_place_contact_destroy(maps_place_contact_h place)
55 if (!maps_condition_check_maps_feature())
56 return MAPS_ERROR_NOT_SUPPORTED;
58 return MAPS_ERROR_INVALID_PARAMETER;
60 maps_place_contact_s *c = (maps_place_contact_s *) place;
69 g_slice_free(maps_place_contact_s, place);
70 return MAPS_ERROR_NONE;
73 EXPORT_API int maps_place_contact_clone(const maps_place_contact_h origin,
74 maps_place_contact_h *cloned)
76 if (!maps_condition_check_maps_feature())
77 return MAPS_ERROR_NOT_SUPPORTED;
78 if (!cloned || !origin)
79 return MAPS_ERROR_INVALID_PARAMETER;
81 int error = MAPS_ERROR_NONE;
83 error = maps_place_contact_create(cloned);
84 if (!(*cloned) || (error != MAPS_ERROR_NONE))
87 maps_place_contact_s *c = (maps_place_contact_s *) origin;
90 error = maps_place_contact_set_label(*cloned, c->label);
91 if (error != MAPS_ERROR_NONE)
96 error = maps_place_contact_set_type(*cloned, c->type);
97 if (error != MAPS_ERROR_NONE)
102 error = maps_place_contact_set_value(*cloned, c->value);
103 if (error != MAPS_ERROR_NONE)
107 return MAPS_ERROR_NONE;
111 maps_place_contact_destroy(*cloned);
117 /*----------------------------------------------------------------------------*/
119 EXPORT_API int maps_place_contact_get_label(const maps_place_contact_h place, char **label)
121 if (!maps_condition_check_maps_feature())
122 return MAPS_ERROR_NOT_SUPPORTED;
123 if (!place || !label)
124 return MAPS_ERROR_INVALID_PARAMETER;
125 if (!((maps_place_contact_s *) place)->label)
126 return MAPS_ERROR_NOT_FOUND;
127 return maps_get_string(((maps_place_contact_s *) place)->label,
128 _MAPS_PLACE_CONTACT_LABEL_MAX_LENGTH, label);
131 EXPORT_API int maps_place_contact_get_type(const maps_place_contact_h place, char **type)
133 if (!maps_condition_check_maps_feature())
134 return MAPS_ERROR_NOT_SUPPORTED;
136 return MAPS_ERROR_INVALID_PARAMETER;
137 if (!((maps_place_contact_s *) place)->type)
138 return MAPS_ERROR_NOT_FOUND;
139 return maps_get_string(((maps_place_contact_s *) place)->type,
140 _MAPS_PLACE_CONTACT_TYPE_MAX_LENGTH, type);
143 EXPORT_API int maps_place_contact_get_value(const maps_place_contact_h place, char **value)
145 if (!maps_condition_check_maps_feature())
146 return MAPS_ERROR_NOT_SUPPORTED;
147 if (!place || !value)
148 return MAPS_ERROR_INVALID_PARAMETER;
149 if (!((maps_place_contact_s *) place)->value)
150 return MAPS_ERROR_NOT_FOUND;
151 return maps_get_string(((maps_place_contact_s *) place)->value,
152 _MAPS_PLACE_CONTACT_VALUE_MAX_LENGTH, value);
155 /*----------------------------------------------------------------------------*/
157 EXPORT_API int maps_place_contact_set_label(maps_place_contact_h place, const char *label)
159 if (!maps_condition_check_maps_feature())
160 return MAPS_ERROR_NOT_SUPPORTED;
161 if (!place || !label)
162 return MAPS_ERROR_INVALID_PARAMETER;
163 return maps_set_string(label, _MAPS_PLACE_CONTACT_LABEL_MAX_LENGTH,
164 &((maps_place_contact_s *) place)->label);
167 EXPORT_API int maps_place_contact_set_type(maps_place_contact_h place, const char *type)
169 if (!maps_condition_check_maps_feature())
170 return MAPS_ERROR_NOT_SUPPORTED;
172 return MAPS_ERROR_INVALID_PARAMETER;
173 return maps_set_string(type, _MAPS_PLACE_CONTACT_TYPE_MAX_LENGTH,
174 &((maps_place_contact_s *) place)->type);
177 EXPORT_API int maps_place_contact_set_value(maps_place_contact_h place, const char *value)
179 if (!maps_condition_check_maps_feature())
180 return MAPS_ERROR_NOT_SUPPORTED;
181 if (!place || !value)
182 return MAPS_ERROR_INVALID_PARAMETER;
183 return maps_set_string(value, _MAPS_PLACE_CONTACT_VALUE_MAX_LENGTH,
184 &((maps_place_contact_s *) place)->value);