Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: GDAL 4 : * Purpose: Arrow Database Connectivity driver 5 : * Author: Even Rouault, <even dot rouault at spatialys.com> 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2024, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #include "ogr_adbc.h" 14 : #include "ogradbcdrivercore.h" 15 : 16 : /************************************************************************/ 17 : /* OGRADBCDriverOpen() */ 18 : /************************************************************************/ 19 : 20 1 : static GDALDataset *OGRADBCDriverOpen(GDALOpenInfo *poOpenInfo) 21 : { 22 1 : if (!OGRADBCDriverIdentify(poOpenInfo) || poOpenInfo->eAccess == GA_Update) 23 0 : return nullptr; 24 2 : auto poDS = std::make_unique<OGRADBCDataset>(); 25 1 : if (!poDS->Open(poOpenInfo)) 26 1 : return nullptr; 27 0 : return poDS.release(); 28 : } 29 : 30 : /************************************************************************/ 31 : /* RegisterOGRADBC() */ 32 : /************************************************************************/ 33 : 34 10 : void RegisterOGRADBC() 35 : { 36 10 : if (!GDAL_CHECK_VERSION(DRIVER_NAME)) 37 0 : return; 38 : 39 10 : if (GDALGetDriverByName(DRIVER_NAME) != nullptr) 40 0 : return; 41 : 42 10 : GDALDriver *poDriver = new GDALDriver(); 43 10 : OGRADBCDriverSetCommonMetadata(poDriver); 44 10 : poDriver->pfnOpen = OGRADBCDriverOpen; 45 10 : GetGDALDriverManager()->RegisterDriver(poDriver); 46 : }