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);
44 MAPS_LOGE("OUT_OF_MEMORY(0x%08x)", MAPS_ERROR_OUT_OF_MEMORY);
45 return MAPS_ERROR_OUT_OF_MEMORY;
48 return MAPS_ERROR_NONE;
51 EXPORT_API int maps_place_contact_destroy(maps_place_contact_h place)
53 if (!maps_condition_check_maps_feature())
54 return MAPS_ERROR_NOT_SUPPORTED;
56 return MAPS_ERROR_INVALID_PARAMETER;
58 maps_place_contact_s *c = (maps_place_contact_s *) place;
67 g_slice_free(maps_place_contact_s, place);
68 return MAPS_ERROR_NONE;
71 EXPORT_API int maps_place_contact_clone(const maps_place_contact_h origin,
72 maps_place_contact_h *cloned)
74 if (!maps_condition_check_maps_feature())
75 return MAPS_ERROR_NOT_SUPPORTED;
76 if (!cloned || !origin)
77 return MAPS_ERROR_INVALID_PARAMETER;
79 int error = MAPS_ERROR_NONE;
81 error = maps_place_contact_create(cloned);
82 if (!(*cloned) || (error != MAPS_ERROR_NONE))
85 maps_place_contact_s *c = (maps_place_contact_s *) origin;
88 error = maps_place_contact_set_label(*cloned, c->label);
89 if (error != MAPS_ERROR_NONE)
94 error = maps_place_contact_set_type(*cloned, c->type);
95 if (error != MAPS_ERROR_NONE)
100 error = maps_place_contact_set_value(*cloned, c->value);
101 if (error != MAPS_ERROR_NONE)
105 return MAPS_ERROR_NONE;
108 maps_place_contact_destroy(*cloned);
113 /*----------------------------------------------------------------------------*/
115 EXPORT_API int maps_place_contact_get_label(const maps_place_contact_h place, char **label)
117 if (!maps_condition_check_maps_feature())
118 return MAPS_ERROR_NOT_SUPPORTED;
119 if (!place || !label)
120 return MAPS_ERROR_INVALID_PARAMETER;
121 if (!((maps_place_contact_s *) place)->label)
122 return MAPS_ERROR_NOT_FOUND;
123 return maps_get_string(((maps_place_contact_s *) place)->label,
124 _MAPS_PLACE_CONTACT_LABEL_MAX_LENGTH, label);
127 EXPORT_API int maps_place_contact_get_type(const maps_place_contact_h place, char **type)
129 if (!maps_condition_check_maps_feature())
130 return MAPS_ERROR_NOT_SUPPORTED;
132 return MAPS_ERROR_INVALID_PARAMETER;
133 if (!((maps_place_contact_s *) place)->type)
134 return MAPS_ERROR_NOT_FOUND;
135 return maps_get_string(((maps_place_contact_s *) place)->type,
136 _MAPS_PLACE_CONTACT_TYPE_MAX_LENGTH, type);
139 EXPORT_API int maps_place_contact_get_value(const maps_place_contact_h place, char **value)
141 if (!maps_condition_check_maps_feature())
142 return MAPS_ERROR_NOT_SUPPORTED;
143 if (!place || !value)
144 return MAPS_ERROR_INVALID_PARAMETER;
145 if (!((maps_place_contact_s *) place)->value)
146 return MAPS_ERROR_NOT_FOUND;
147 return maps_get_string(((maps_place_contact_s *) place)->value,
148 _MAPS_PLACE_CONTACT_VALUE_MAX_LENGTH, value);
151 /*----------------------------------------------------------------------------*/
153 EXPORT_API int maps_place_contact_set_label(maps_place_contact_h place, const char *label)
155 if (!maps_condition_check_maps_feature())
156 return MAPS_ERROR_NOT_SUPPORTED;
157 if (!place || !label)
158 return MAPS_ERROR_INVALID_PARAMETER;
159 return maps_set_string(label, _MAPS_PLACE_CONTACT_LABEL_MAX_LENGTH,
160 &((maps_place_contact_s *) place)->label);
163 EXPORT_API int maps_place_contact_set_type(maps_place_contact_h place, const char *type)
165 if (!maps_condition_check_maps_feature())
166 return MAPS_ERROR_NOT_SUPPORTED;
168 return MAPS_ERROR_INVALID_PARAMETER;
169 return maps_set_string(type, _MAPS_PLACE_CONTACT_TYPE_MAX_LENGTH,
170 &((maps_place_contact_s *) place)->type);
173 EXPORT_API int maps_place_contact_set_value(maps_place_contact_h place, const char *value)
175 if (!maps_condition_check_maps_feature())
176 return MAPS_ERROR_NOT_SUPPORTED;
177 if (!place || !value)
178 return MAPS_ERROR_INVALID_PARAMETER;
179 return maps_set_string(value, _MAPS_PLACE_CONTACT_VALUE_MAX_LENGTH,
180 &((maps_place_contact_s *) place)->value);