Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: XLS Translator 4 : * Purpose: Implements OGRXLSDriver. 5 : * Author: Even Rouault, even dot rouault at spatialys.com 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2011, Even Rouault <even dot rouault at spatialys.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #include "ogr_xls.h" 14 : #include "ogrxlsdrivercore.h" 15 : #include "cpl_conv.h" 16 : 17 : /************************************************************************/ 18 : /* Open() */ 19 : /************************************************************************/ 20 : 21 5 : static GDALDataset *OGRXLSDriverOpen(GDALOpenInfo *poOpenInfo) 22 : 23 : { 24 5 : if ((poOpenInfo->nOpenFlags & GDAL_OF_UPDATE) != 0) 25 : { 26 0 : return nullptr; 27 : } 28 : 29 5 : if (!EQUAL(CPLGetExtension(poOpenInfo->pszFilename), "XLS")) 30 : { 31 0 : return nullptr; 32 : } 33 : 34 5 : OGRXLSDataSource *poDS = new OGRXLSDataSource(); 35 : 36 5 : if (!poDS->Open(poOpenInfo->pszFilename, false)) 37 : { 38 1 : delete poDS; 39 1 : poDS = nullptr; 40 : } 41 : 42 5 : return poDS; 43 : } 44 : 45 : /************************************************************************/ 46 : /* RegisterOGRXLS() */ 47 : /************************************************************************/ 48 : 49 10 : void RegisterOGRXLS() 50 : 51 : { 52 10 : if (GDALGetDriverByName(DRIVER_NAME) != nullptr) 53 0 : return; 54 : 55 10 : GDALDriver *poDriver = new GDALDriver(); 56 10 : OGRXLSDriverSetCommonMetadata(poDriver); 57 : 58 10 : poDriver->pfnOpen = OGRXLSDriverOpen; 59 : 60 10 : GetGDALDriverManager()->RegisterDriver(poDriver); 61 : }