LCOV - code coverage report
Current view: top level - data/include/storage - data_database_borrowed_stmt.inl (source / functions) Hit Total Coverage
Test: crystal-facet-uml_v1.62.0_covts Lines: 35 38 92.1 %
Date: 2024-12-21 18:34:41 Functions: 5 5 100.0 %

          Line data    Source code
       1             : /* File: data_database_borrowed_stmt.inl; Copyright and License: see below */
       2             : 
       3             : #include "u8/u8_log.h"
       4             : #include "u8/u8_trace.h"
       5             : #include <assert.h>
       6             : 
       7         407 : static inline void data_database_borrowed_stmt_init_void ( data_database_borrowed_stmt_t *this_ )
       8             : {
       9         407 :     (*this_).database = NULL;
      10         407 :     (*this_).db_statement = NULL;
      11         407 :     (*this_).borrow_flag = NULL;
      12         407 : }
      13             : 
      14         407 : static inline u8_error_t data_database_borrowed_stmt_init ( data_database_borrowed_stmt_t *this_,
      15             :                                                             data_database_t *database,
      16             :                                                             sqlite3_stmt *db_statement,
      17             :                                                             bool *borrow_flag )
      18             : {
      19         407 :     U8_TRACE_BEGIN();
      20         407 :     assert( database != NULL );
      21         407 :     assert( db_statement != NULL );
      22         407 :     assert( borrow_flag != NULL );
      23         407 :     u8_error_t result = U8_ERROR_NONE;
      24             : 
      25         407 :     (*this_).database = database;
      26         407 :     (*this_).db_statement = db_statement;
      27         407 :     (*this_).borrow_flag = borrow_flag;
      28         407 :     if ( *borrow_flag == true )
      29             :     {
      30           0 :         result = U8_ERROR_WRONG_STATE;
      31             :     }
      32             :     else
      33             :     {
      34         407 :         *((*this_).borrow_flag) = true;
      35             :     }
      36             : 
      37         407 :     U8_TRACE_END_ERR( result );
      38         407 :     return result;
      39             : }
      40             : 
      41         814 : static inline u8_error_t data_database_borrowed_stmt_destroy ( data_database_borrowed_stmt_t *this_ )
      42             : {
      43         814 :     U8_TRACE_BEGIN();
      44         814 :     u8_error_t result = U8_ERROR_NONE;
      45             : 
      46         814 :     if ( (*this_).borrow_flag != NULL )
      47             :     {
      48         407 :         assert( *((*this_).borrow_flag) == true ); /* noone interfered with the status */
      49         407 :         assert( (*this_).db_statement != NULL );
      50             : 
      51         407 :         const int sqlite_err = sqlite3_reset( (*this_).db_statement );
      52         407 :         if ( sqlite_err != SQLITE_OK )
      53             :         {
      54           0 :             U8_LOG_ERROR_INT( "sqlite3_reset() failed:", sqlite_err );
      55           0 :             result |= U8_ERROR_AT_DB;
      56             :         }
      57             : 
      58         407 :         *((*this_).borrow_flag) = false;
      59         407 :         (*this_).borrow_flag = NULL;
      60             :     }
      61             : 
      62         814 :     U8_TRACE_END_ERR( result );
      63         814 :     return result;
      64             : }
      65             : 
      66        2667 : static inline bool data_database_borrowed_stmt_is_valid ( const data_database_borrowed_stmt_t *this_ )
      67             : {
      68        2667 :     return ((*this_).database != NULL ) && ((*this_).db_statement != NULL ) && ((*this_).borrow_flag != NULL );
      69             : }
      70             : 
      71        2253 : static inline sqlite3_stmt * data_database_borrowed_stmt_get_statement ( const data_database_borrowed_stmt_t *this_ )
      72             : {
      73        2253 :     assert( (*this_).db_statement != NULL );
      74        2253 :     return (*this_).db_statement;
      75             : }
      76             : 
      77             : static inline data_database_t * data_database_borrowed_stmt_get_database ( data_database_borrowed_stmt_t *this_ )
      78             : {
      79             :     assert( (*this_).database != NULL );
      80             :     return (*this_).database;
      81             : }
      82             : 
      83             : 
      84             : /*
      85             : Copyright 2024-2024 Andreas Warnke
      86             : 
      87             : Licensed under the Apache License, Version 2.0 (the "License");
      88             : you may not use this file except in compliance with the License.
      89             : You may obtain a copy of the License at
      90             : 
      91             :     http://www.apache.org/licenses/LICENSE-2.0
      92             : 
      93             : Unless required by applicable law or agreed to in writing, software
      94             : distributed under the License is distributed on an "AS IS" BASIS,
      95             : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      96             : See the License for the specific language governing permissions and
      97             : limitations under the License.
      98             : */

Generated by: LCOV version 1.16