📄 _piobj.cpp
字号:
PIConfigString *pString = (PIConfigString *)PIUserType_getValue(
(PIUserType *)PIDBIterator_current( pIter, &pVariable ) );
const char *pValue = PIConfigString_getString( pString );
/* --- generate location string --- */
const char *pFile = pString->GetFileName();
PIOStrStream osLocation;
if ( pFile )
{
long lLine = pString->GetY();
/* --- if line position is 0, this is the previous line --- */
if ( !pString->GetX() && lLine>0 )
{ lLine--; };
osLocation << "[" << pFile << ", line " << lLine << "] " << ends;
};
/* --- no variable --- */
if ( !pVariable || !*pVariable )
{
osLocation << "ReadParameters: Internal error reading \
variable." << ends;
CONFIG_ERR( pObject, osLocation.str() );
PIDBIterator_delete( pIter );
return 0;
};
/* --- no value --- */
if ( !pValue || !*pValue )
{
osLocation << "ReadParameters: no value for \
variable '" << pVariable << "'" << ends;
CONFIG_ERR( pObject, osLocation.str() );
PIDBIterator_delete( pIter );
return 0;
};
/* --- ignore 'Name' or 'Class' parameters --- */
if ( !PIUtil_stricmp( PIDBKEY_CONF_NAME, pVariable ) ||
!PIUtil_stricmp( PIDBKEY_CONF_CLASS, pVariable ) )
{ continue; };
DeQuote tUnQuoted( pValue );
if ( !(fnParameter)( pParam, pVariable, tUnQuoted, osLocation.str() ) )
{
return 0;
};
};
PIDBIterator_delete( pIter );
return 1;
}
/*____________________________________________________________________________*\
*
Function:
Synopsis:
Description:
\*____________________________________________________________________________*/
_PIObject *PIObject::New( const _PIClass *pTheClass, PIDB *pDB,
PIConfigDB *pConf, const char *pObjectName, int iArgc,
const char *ppArgv[] )
{
assert( pTheClass && pDB && pObjectName );
if ( !pTheClass || !pDB || !pObjectName )
{ return 0; };
_PIObject *pObj = PI_NEW( _PIObject(pObjectName, pTheClass, pDB, pConf ) );
if ( pTheClass->Constructor( pObj, iArgc, ppArgv ) )
{
Delete( pObj, 0, 0 );
pObj = 0;
};
return pObj;
}
/*____________________________________________________________________________*\
*
Function:
Synopsis:
Description:
\*____________________________________________________________________________*/
int _PIObject::Delete( _PIObject *pObj, int iArgc, const char *ppArgv[] )
{
assert( pObj && pObj->GetClass() );
int iRet = pObj->GetClass()->Destructor( pObj, iArgc, ppArgv );
PI_DELETE( pObj );
return iRet;
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
_PIObject *_PIObject::Copy( const _PIObject *pObject, int iArgc,
const char *ppArgv[] )
{
assert( pObject );
_PIObject *pNewObject = PI_NEW( _PIObject( *pObject ) );
if ( pNewObject->GetClass()->CopyConstructor( pNewObject, iArgc, ppArgv ) )
{
if ( pNewObject->bConstructed == 1) Delete( pNewObject, 0, 0 );
pNewObject = 0;
};
return pNewObject;
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI PIObject *PIObject_load( PIDB *pDB, PIConfigDB *pConfig,
const char *pName, int iArgc, const char *ppArgv[] )
{
if ( !pDB || !pName )
{ return 0; };
return _PIObject::Load( pDB, pConfig, pName, iArgc, ppArgv );
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI PIObject *PIObject_loadFromLine( PIDB *pDB, PIConfigDB *pConfig,
const char *pObjectLine )
{
if ( !pDB || !pObjectLine || !*pObjectLine )
{ return 0; };
return _PIObject::LoadFromLine( pDB, pConfig, pObjectLine );
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI PIObject *PIObject_loadEx( const PIObject *pParent,
const char *pObjectKey )
{
if ( !pParent || !pObjectKey )
{ return 0; };
return _PIObject::LoadEx( pParent, pObjectKey );
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI int PIObject_readParameters(
PIObject *pObject,
int iArgc,
const char *ppArgv[],
int (* fnParameter)( void *, const char *, const char *, const char *),
void *pParam )
{
return _PIObject::ReadParameters( pObject, iArgc, ppArgv, fnParameter,
pParam );
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI PIObject *PIObject_new( const PIClass *pClass, PIDB *pDB,
PIConfigDB *pConfig, const char *pName, int iArgc, const char *ppArgv[] )
{
if ( !pClass || !pDB || !pName )
{ return 0; };
return _PIObject::New( pClass, pDB, pConfig, pName, iArgc, ppArgv );
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI _PIObject *PIObject_copy( const _PIObject *pObject,
int iArgc, const char *ppArgv[] )
{
if ( !pObject )
{ return 0; };
return _PIObject::Copy( pObject, iArgc, ppArgv );
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI const char *PIObject_getName( const PIObject *pObj )
{
if ( !pObj )
{ return 0; };
return pObj->GetName();
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI PIDB *PIObject_getDB( const PIObject *pObj )
{
if ( !pObj )
{ return 0; };
return pObj->GetDB();
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI int PIObject_setDB( PIObject *pObj, PIDB *pDB )
{
if ( !pObj )
{ return PIAPI_EINVAL; };
pObj->SetDB( pDB );
return PIAPI_COMPLETED;
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI PIConfigDB *PIObject_getConfigurationDB( const PIObject *pObj )
{
if ( !pObj )
{ return 0; };
return pObj->GetConfigurationDB();
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI int PIObject_setConfigurationDB( PIObject *pObj,
PIConfigDB *pConfig )
{
if ( !pObj )
{ return PIAPI_EINVAL; };
pObj->SetConfigurationDB( pConfig );
return PIAPI_COMPLETED;
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI const PIClass *PIObject_getClass( const PIObject *pObj )
{
if ( !pObj )
{ return 0; };
return pObj->GetClass();
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI void *PIObject_getUserData( const PIObject *pObj )
{
if ( !pObj )
{ return 0; };
return pObj->GetUserData();
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI int PIObject_setUserData( PIObject *pObj, void *pData )
{
if ( !pObj )
{ return PIAPI_EINVAL; };
pObj->SetUserData( pData );
return PIAPI_COMPLETED;
}
/*____________________________________________________________________________*\
*
Description:
See API header files in ../piapi for full description
\*____________________________________________________________________________*/
PUBLIC_PIAPI int PIObject_delete( PIObject *pObj, int iArgc,
const char *ppArgv[] )
{
if ( !pObj )
{ return PIAPI_COMPLETED; };
return _PIObject::Delete( pObj, iArgc, ppArgv );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -