Line data Source code
1 : /****************************************************************************** 2 : * 3 : * Project: VFK Reader - Property definition 4 : * Purpose: Implements VFKProperty class. 5 : * Author: Martin Landa, landa.martin gmail.com 6 : * 7 : ****************************************************************************** 8 : * Copyright (c) 2009-2010, Martin Landa <landa.martin gmail.com> 9 : * 10 : * SPDX-License-Identifier: MIT 11 : ****************************************************************************/ 12 : 13 : #include "vfkreader.h" 14 : #include "vfkreaderp.h" 15 : 16 : #include "cpl_conv.h" 17 : #include "cpl_error.h" 18 : 19 : /*! 20 : \brief Set VFK property (null) 21 : */ 22 4005 : VFKProperty::VFKProperty() : m_bIsNull(true), m_iValue(0), m_dValue(0.0) 23 : { 24 4005 : } 25 : 26 : /*! 27 : \brief Set VFK property (integer) 28 : */ 29 2205 : VFKProperty::VFKProperty(int iValue) 30 2205 : : m_bIsNull(false), m_iValue(iValue), m_dValue(0.0) 31 : { 32 2205 : } 33 : 34 : /*! 35 : \brief Set VFK property (big integer) 36 : */ 37 3870 : VFKProperty::VFKProperty(GIntBig iValue) 38 3870 : : m_bIsNull(false), m_iValue(iValue), m_dValue(0.0) 39 : { 40 3870 : } 41 : 42 : /*! 43 : \brief Set VFK property (double) 44 : */ 45 390 : VFKProperty::VFKProperty(double dValue) 46 390 : : m_bIsNull(false), m_iValue(0), m_dValue(dValue) 47 : { 48 390 : } 49 : 50 : /*! 51 : \brief Set VFK property (string) 52 : */ 53 1320 : VFKProperty::VFKProperty(const char *pszValue) 54 : : m_bIsNull(false), m_iValue(0), m_dValue(0.0), 55 1320 : m_strValue(nullptr != pszValue ? pszValue : "") 56 : { 57 1320 : } 58 : 59 : /*! 60 : \brief Set VFK property (string) 61 : */ 62 0 : VFKProperty::VFKProperty(CPLString const &strValue) 63 0 : : m_bIsNull(false), m_iValue(0), m_dValue(0.0), m_strValue(strValue) 64 : { 65 0 : } 66 : 67 : /*! 68 : \brief VFK property destructor 69 : */ 70 22710 : VFKProperty::~VFKProperty() 71 : { 72 22710 : } 73 : 74 : /*! 75 : \brief Get string property 76 : 77 : \param escape true to escape characters for SQL 78 : 79 : \return string buffer 80 : */ 81 1320 : const char *VFKProperty::GetValueS(bool escape) const 82 : { 83 1320 : if (!escape) 84 0 : return m_strValue.c_str(); 85 : 86 2640 : CPLString strValue(m_strValue); 87 1320 : size_t ipos = 0; 88 1320 : while (std::string::npos != (ipos = strValue.find("'", ipos))) 89 : { 90 0 : strValue.replace(ipos, 1, "\'\'", 2); 91 0 : ipos += 2; 92 : } 93 : 94 1320 : return CPLSPrintf("%s", strValue.c_str()); 95 : }