|
20 | 20 | as_c_contiguous,
|
21 | 21 | dataarray_to_matrix,
|
22 | 22 | sequence_to_ctypes_array,
|
| 23 | + strings_to_ctypes_array, |
23 | 24 | vectors_to_arrays,
|
24 | 25 | )
|
25 | 26 | from pygmt.clib.loading import load_libgmt
|
@@ -897,13 +898,9 @@ def put_vector(self, dataset, column, vector):
|
897 | 898 |
|
898 | 899 | gmt_type = self._check_dtype_and_dim(vector, ndim=1)
|
899 | 900 | if gmt_type in (self["GMT_TEXT"], self["GMT_DATETIME"]):
|
900 |
| - vector_pointer = (ctp.c_char_p * len(vector))() |
901 | 901 | if gmt_type == self["GMT_DATETIME"]:
|
902 |
| - vector_pointer[:] = np.char.encode( |
903 |
| - np.datetime_as_string(array_to_datetime(vector)) |
904 |
| - ) |
905 |
| - else: |
906 |
| - vector_pointer[:] = np.char.encode(vector) |
| 902 | + vector = np.datetime_as_string(array_to_datetime(vector)) |
| 903 | + vector_pointer = strings_to_ctypes_array(vector) |
907 | 904 | else:
|
908 | 905 | vector_pointer = vector.ctypes.data_as(ctp.c_void_p)
|
909 | 906 | status = c_put_vector(
|
@@ -960,13 +957,12 @@ def put_strings(self, dataset, family, strings):
|
960 | 957 | restype=ctp.c_int,
|
961 | 958 | )
|
962 | 959 |
|
963 |
| - strings_pointer = (ctp.c_char_p * len(strings))() |
964 |
| - strings_pointer[:] = np.char.encode(strings) |
965 |
| - |
966 | 960 | family_int = self._parse_constant(
|
967 | 961 | family, valid=FAMILIES, valid_modifiers=METHODS
|
968 | 962 | )
|
969 | 963 |
|
| 964 | + strings_pointer = strings_to_ctypes_array(strings) |
| 965 | + |
970 | 966 | status = c_put_strings(
|
971 | 967 | self.session_pointer, family_int, dataset, strings_pointer
|
972 | 968 | )
|
|
0 commit comments