Line data Source code
1 : /* File: data_node_set.inl; Copyright and License: see below */ 2 : 3 : #include "u8/u8_log.h" 4 : #include <assert.h> 5 : 6 3 : static inline bool data_node_set_is_valid ( const data_node_set_t *this_ ) 7 : { 8 3 : return data_classifier_is_valid( &((*this_).classifier) ); 9 : } 10 : 11 : static inline void data_node_set_invalidate ( data_node_set_t *this_ ) 12 : { 13 : data_classifier_reinit_empty( &((*this_).classifier) ); 14 : } 15 : 16 5 : static inline void data_node_set_private_destroy_features( data_node_set_t *this_ ) 17 : { 18 5 : assert( (*this_).feature_count <= DATA_NODE_SET_MAX_FEATURES ); 19 : 20 6 : for ( int index = 0; index < (*this_).feature_count; index ++ ) 21 : { 22 1 : data_feature_destroy ( &((*this_).features[index]) ); 23 : } 24 : 25 5 : (*this_).feature_count = 0; 26 5 : } 27 : 28 5 : static inline void data_node_set_private_destroy_relationships( data_node_set_t *this_ ) 29 : { 30 5 : assert( (*this_).relationship_count <= DATA_NODE_SET_MAX_RELATIONSHIPS ); 31 : 32 7 : for ( int index = 0; index < (*this_).relationship_count; index ++ ) 33 : { 34 2 : data_relationship_destroy ( &((*this_).relationships[index]) ); 35 : } 36 : 37 5 : (*this_).relationship_count = 0; 38 5 : } 39 : 40 1 : static inline const data_classifier_t *data_node_set_get_classifier_const ( const data_node_set_t *this_ ) 41 : { 42 1 : return &((*this_).classifier); 43 : } 44 : 45 1 : static inline data_classifier_t *data_node_set_get_classifier_ptr ( data_node_set_t *this_ ) 46 : { 47 1 : return &((*this_).classifier); 48 : } 49 : 50 4 : static inline uint32_t data_node_set_get_feature_count ( const data_node_set_t *this_ ) 51 : { 52 4 : return (*this_).feature_count; 53 : } 54 : 55 1 : static inline const data_feature_t *data_node_set_get_feature_const ( const data_node_set_t *this_, uint32_t index ) 56 : { 57 1 : assert( (*this_).feature_count <= DATA_NODE_SET_MAX_FEATURES ); 58 : 59 : const data_feature_t *result; 60 1 : if ( index < (*this_).feature_count ) 61 : { 62 1 : result = &((*this_).features[index]); 63 : } 64 : else 65 : { 66 0 : result = NULL; 67 0 : U8_LOG_ERROR_INT( "index out of bounds (>=(*this_).feature_count)", index ); 68 : } 69 : 70 1 : return result; 71 : } 72 : 73 1 : static inline data_feature_t *data_node_set_get_feature_ptr ( data_node_set_t *this_, uint32_t index ) 74 : { 75 1 : assert( (*this_).feature_count <= DATA_NODE_SET_MAX_FEATURES ); 76 : 77 : data_feature_t *result; 78 1 : if ( index < (*this_).feature_count ) 79 : { 80 1 : result = &((*this_).features[index]); 81 : } 82 : else 83 : { 84 0 : result = NULL; 85 0 : U8_LOG_ERROR_INT( "index out of bounds (>=(*this_).feature_count)", index ); 86 : } 87 : 88 1 : return result; 89 : } 90 : 91 1 : static inline const data_feature_t *data_node_set_get_feature_by_id_const ( const data_node_set_t *this_, data_row_id_t row_id ) 92 : { 93 1 : assert( (*this_).feature_count <= DATA_NODE_SET_MAX_FEATURES ); 94 1 : const data_feature_t *result = NULL; 95 : 96 1 : for ( int index = 0; index < (*this_).feature_count; index ++ ) 97 : { 98 : const data_feature_t *probe; 99 1 : probe = &((*this_).features[index]); 100 1 : if ( row_id == data_feature_get_row_id( probe ) ) 101 : { 102 1 : result = probe; 103 1 : break; 104 : } 105 : } 106 : 107 1 : return result; 108 : } 109 : 110 1 : static inline data_feature_t *data_node_set_get_feature_by_id_ptr ( data_node_set_t *this_, data_row_id_t row_id ) 111 : { 112 1 : assert( (*this_).feature_count <= DATA_NODE_SET_MAX_FEATURES ); 113 1 : data_feature_t *result = NULL; 114 : 115 1 : for ( int index = 0; index < (*this_).feature_count; index ++ ) 116 : { 117 : data_feature_t *probe; 118 1 : probe = &((*this_).features[index]); 119 1 : if ( row_id == data_feature_get_row_id( probe ) ) 120 : { 121 1 : result = probe; 122 1 : break; 123 : } 124 : } 125 : 126 1 : return result; 127 : } 128 : 129 1 : static inline data_feature_t *data_node_set_get_feature_list_ptr ( data_node_set_t *this_ ) 130 : { 131 1 : assert( (*this_).feature_count <= DATA_NODE_SET_MAX_FEATURES ); 132 1 : return (*this_).features; 133 : } 134 : 135 3 : static inline uint32_t data_node_set_get_relationship_count ( const data_node_set_t *this_ ) 136 : { 137 3 : return (*this_).relationship_count; 138 : } 139 : 140 2 : static inline const data_relationship_t *data_node_set_get_relationship_const ( const data_node_set_t *this_, uint32_t index ) 141 : { 142 2 : assert( (*this_).relationship_count <= DATA_NODE_SET_MAX_RELATIONSHIPS ); 143 : 144 : const data_relationship_t *result; 145 2 : if ( index < (*this_).relationship_count ) 146 : { 147 2 : result = &((*this_).relationships[index]); 148 : } 149 : else 150 : { 151 0 : result = NULL; 152 0 : U8_LOG_ERROR_INT( "index out of bounds (>=(*this_).relationship_count)", index ); 153 : } 154 : 155 2 : return result; 156 : } 157 : 158 1 : static inline data_relationship_t *data_node_set_get_relationship_ptr ( data_node_set_t *this_, uint32_t index ) 159 : { 160 1 : assert( (*this_).relationship_count <= DATA_NODE_SET_MAX_RELATIONSHIPS ); 161 : 162 : data_relationship_t *result; 163 1 : if ( index < (*this_).relationship_count ) 164 : { 165 1 : result = &((*this_).relationships[index]); 166 : } 167 : else 168 : { 169 0 : result = NULL; 170 0 : U8_LOG_ERROR_INT( "index out of bounds (>=(*this_).relationship_count)", index ); 171 : } 172 : 173 1 : return result; 174 : } 175 : 176 1 : static inline const data_relationship_t *data_node_set_get_relationship_by_id_const ( const data_node_set_t *this_, data_row_id_t row_id ) 177 : { 178 1 : assert( (*this_).relationship_count <= DATA_NODE_SET_MAX_RELATIONSHIPS ); 179 1 : const data_relationship_t *result = NULL; 180 : 181 1 : for ( int index = 0; index < (*this_).relationship_count; index ++ ) 182 : { 183 : const data_relationship_t *probe; 184 1 : probe = &((*this_).relationships[index]); 185 1 : if ( row_id == data_relationship_get_row_id( probe ) ) 186 : { 187 1 : result = probe; 188 1 : break; 189 : } 190 : } 191 : 192 1 : return result; 193 : } 194 : 195 1 : static inline data_relationship_t *data_node_set_get_relationship_by_id_ptr ( data_node_set_t *this_, data_row_id_t row_id ) 196 : { 197 1 : assert( (*this_).relationship_count <= DATA_NODE_SET_MAX_RELATIONSHIPS ); 198 1 : data_relationship_t *result = NULL; 199 : 200 1 : for ( int index = 0; index < (*this_).relationship_count; index ++ ) 201 : { 202 : data_relationship_t *probe; 203 1 : probe = &((*this_).relationships[index]); 204 1 : if ( row_id == data_relationship_get_row_id( probe ) ) 205 : { 206 1 : result = probe; 207 1 : break; 208 : } 209 : } 210 : 211 1 : return result; 212 : } 213 : 214 : 215 : /* 216 : Copyright 2020-2024 Andreas Warnke 217 : 218 : Licensed under the Apache License, Version 2.0 (the "License"); 219 : you may not use this file except in compliance with the License. 220 : You may obtain a copy of the License at 221 : 222 : http://www.apache.org/licenses/LICENSE-2.0 223 : 224 : Unless required by applicable law or agreed to in writing, software 225 : distributed under the License is distributed on an "AS IS" BASIS, 226 : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 227 : See the License for the specific language governing permissions and 228 : limitations under the License. 229 : */