⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ugkfeaturedefn.cpp

📁 linux下一款GIS程序源码
💻 CPP
字号:
// ugkfeaturedefn.cpp: implementation of the UGKFeatureDefn class.////////////////////////////////////////////////////////////////////////#include "ugkfeaturedefn.h"#include "ugk_memopr.h"#include "ugk_string.h"#include "ugk_errhandle.h"/************************************************************************//*                           UGKFeatureDefn()                           *//************************************************************************/UGKFeatureDefn::UGKFeatureDefn( const char * pszName ){    pszFeatureClassName = UGKStrdup( pszName );    nRefCount = 0;    nFieldCount = 0;    papoFieldDefn = NULL;    eGeomType = wkbUnknown;}/************************************************************************//*                          ~UGKFeatureDefn()                           *//************************************************************************/UGKFeatureDefn::~UGKFeatureDefn(){    //assert(nRefCount != 0 );  只有nRefCount为零才能释放    assert(nRefCount == 0 ); //MOD --ZGQ --06/03/20    UGK_Free( pszFeatureClassName );    for( int i = 0; i < nFieldCount; i++ )    {        delete papoFieldDefn[i];    }    UGK_Free( papoFieldDefn );}/************************************************************************//*                               Clone()                                *//************************************************************************//** * \fn UGKFeatureDefn *UGKFeatureDefn::Clone(); * * Create a copy of this feature definition. * * Creates a deep copy of the feature definition.  *  * @return the copy.  */UGKFeatureDefn *UGKFeatureDefn::Clone(){    UGKFeatureDefn *poCopy;    poCopy = new UGKFeatureDefn( GetName() );    poCopy->SetGeomType( GetGeomType() );    for( int i = 0; i < GetFieldCount(); i++ )        poCopy->AddFieldDefn( GetFieldDefn( i ) );    return poCopy;}/************************************************************************//*                            GetFieldDefn()                            *//************************************************************************//** * Fetch field definition.  获取字段定义 * * @param iField the field to fetch, between 0 and GetFieldCount()-1. * * @return a pointer to an internal field definition object.  This object * should not be modified or freed by the application. */UGKFieldDefn *UGKFeatureDefn::GetFieldDefn( int iField ){        if( iField < 0 || iField >= nFieldCount )    {	UGKError(ET_Failure,UGKErr_IllegalArg,		 "UGKFeatureDefn::GetFieldDefn(),Invalid param iField!");        return NULL;    }    return papoFieldDefn[iField];}/************************************************************************//*                            AddFieldDefn()                            *//************************************************************************//** * Add a new field definition. * * This method should only be called while there are no UGKFeature * objects in existance based on this UGKFeatureDefn.  The UGKFieldDefn * passed in is copied, and remains the responsibility of the caller. * * @param poNewDefn the definition of the new field. */void UGKFeatureDefn::AddFieldDefn( UGKFieldDefn * poNewDefn ){    papoFieldDefn = (UGKFieldDefn **)        UGK_Realloc( papoFieldDefn, sizeof(void*)*(nFieldCount+1) );    papoFieldDefn[nFieldCount] = new UGKFieldDefn( poNewDefn );    nFieldCount++;}/************************************************************************//*                            SetGeomType()                             *//************************************************************************//** * Assign the base geometry type for this layer. * * All geometry objects using this type must be of the defined type or * a derived type.  The default upon creation is wkbUnknown which allows for * any geometry type.  The geometry type should generally not be changed * after any UGKFeatures have been created against this definition.  * * @param eNewType the new type to assign. */void UGKFeatureDefn::SetGeomType( UGKwkbGeometryType eNewType ){    eGeomType = eNewType;}/************************************************************************//*                           GetFieldIndex()                            *//************************************************************************//** * Find field by name. *  返回匹配给定参数的第一个字段           * The field index of the first field matching the passed field name (case * insensitively) is returned. * * @param pszFieldName the field name to search for. * * @return the field index, or -1 if no match found. */ int UGKFeatureDefn::GetFieldIndex( const char * pszFieldName ){    for( int i = 0; i < nFieldCount; i++ )    {        if( EQUAL(pszFieldName, papoFieldDefn[i]->GetNameRef() ) )            return i;    }    return -1;}/************************************************************************//*                         CreateFeatureDefn()                          *//************************************************************************/UGKFeatureDefn *UGKFeatureDefn::CreateFeatureDefn( const char *pszName ){    return new UGKFeatureDefn( pszName );}/************************************************************************//*                         DestroyFeatureDefn()                         *//************************************************************************/void UGKFeatureDefn::DestroyFeatureDefn( UGKFeatureDefn *poDefn ){    delete poDefn;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -