| 77 | } |
| 78 | |
| 79 | void read_array_metadata() { |
| 80 | // Create TileDB context |
| 81 | Context ctx; |
| 82 | |
| 83 | // Open array for reading |
| 84 | Array array(ctx, array_name, TILEDB_READ); |
| 85 | |
| 86 | // Read with key |
| 87 | tiledb_datatype_t v_type; |
| 88 | uint32_t v_num; |
| 89 | const void* v; |
| 90 | array.get_metadata("aaa", &v_type, &v_num, &v); |
| 91 | std::cout << "Details of item with key: aaa\n"; |
| 92 | std::cout << "- Value type: " |
| 93 | << ((v_type == TILEDB_INT32) ? "INT32" : "something went wrong") |
| 94 | << "\n"; |
| 95 | std::cout << "- Value num: " << v_num << "\n"; |
| 96 | std::cout << "- Value: " << *(const int*)v << "\n"; |
| 97 | |
| 98 | array.get_metadata("bb", &v_type, &v_num, &v); |
| 99 | std::cout << "Details of item with key: bb\n"; |
| 100 | std::cout << "- Value type: " |
| 101 | << ((v_type == TILEDB_FLOAT32) ? "FLOAT32" : "something went wrong") |
| 102 | << "\n"; |
| 103 | std::cout << "- Value num: " << v_num << "\n"; |
| 104 | std::cout << "- Value: " << ((const float*)v)[0] << " " |
| 105 | << ((const float*)v)[1] << "\n"; |
| 106 | |
| 107 | // Enumerate all metadata items |
| 108 | std::string key; |
| 109 | uint64_t num = array.metadata_num(); |
| 110 | printf("Enumerate all metadata items:\n"); |
| 111 | for (uint64_t i = 0; i < num; ++i) { |
| 112 | array.get_metadata_from_index(i, &key, &v_type, &v_num, &v); |
| 113 | |
| 114 | std::cout << "# Item " << i << "\n"; |
| 115 | const char* v_type_str = (v_type == TILEDB_INT32) ? "INT32" : "FLOAT32"; |
| 116 | std::cout << "- Key: " << key << "\n"; |
| 117 | std::cout << "- Value type: " << v_type_str << "\n"; |
| 118 | std::cout << "- Value num: " << v_num << "\n"; |
| 119 | std::cout << "- Value: "; |
| 120 | if (v_type == TILEDB_INT32) { |
| 121 | for (uint32_t j = 0; j < v_num; ++j) |
| 122 | std::cout << ((const int*)v)[j] << " "; |
| 123 | } else if (v_type == TILEDB_FLOAT32) { |
| 124 | for (uint32_t j = 0; j < v_num; ++j) |
| 125 | std::cout << ((const float*)v)[j] << " "; |
| 126 | } |
| 127 | std::cout << "\n"; |
| 128 | } |
| 129 | |
| 130 | // Close array |
| 131 | array.close(); |
| 132 | } |
| 133 | |
| 134 | int main() { |
| 135 | create_array(); |
no test coverage detected