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

📄 _piobj.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		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 + -