本文整理汇总了C++中CoreObject::getUserData方法的典型用法代码示例。如果您正苦于以下问题:C++ CoreObject::getUserData方法的具体用法?C++ CoreObject::getUserData怎么用?C++ CoreObject::getUserData使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CoreObject
的用法示例。
在下文中一共展示了CoreObject::getUserData方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ConfParser_read
FALCON_FUNC ConfParser_read( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_stream = vm->param(0);
bool bRes;
if( i_stream == 0 )
{
vm->idle();
bRes = cfile->load();
vm->unidle();
}
else {
bool bValid = false;
if ( i_stream->isObject() )
{
CoreObject *streamObj = i_stream->asObject();
if ( streamObj->derivedFrom( "Stream" ) )
{
Stream *base = (Stream *) streamObj->getUserData();
bRes = cfile->load( base );
bValid = true;
}
}
if ( ! bValid )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ).extra( "Stream" ) );
return;
}
}
if ( ! bRes )
{
// is this an I/O or a parsing error?
if ( cfile->fsError() != 0 )
{
throw new IoError( ErrorParam( e_loaderror, __LINE__ ).
sysError( cfile->fsError() ).
extra( cfile->errorMessage() ) );
}
else {
String msg = cfile->errorMessage() + " at ";
msg.writeNumber( (int64) cfile->errorLine() );
self->setProperty( "error", cfile->errorMessage() );
self->setProperty( "errorLine", (int64) cfile->errorLine() );
throw new ParseError( ErrorParam( FALCP_ERR_INVFORMAT, __LINE__ )
.desc( FAL_STR(cp_msg_invformat) )
.extra( msg ) );
}
}
}
示例2: ConfParser_write
/*#
@method write ConfParser
@brief Write the INI file.
@optparam stream An optional output stream on which to write the configuration file.
@raise IoError on write error.
Writes the content of a modified or entirely generated configuration file on the
given stream, that must be a valid Falcon stream opened for output. If a stream
is not given, then the file name provided to the ConfParser constructor is
opened for writing. In case the name has not been given in the constructor, the
method raises an error.
*/
FALCON_FUNC ConfParser_write( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_stream = vm->param(0);
bool bRes;
if( i_stream == 0 )
{
bRes = cfile->save();
}
else {
bool bValid = false;
if ( i_stream->isObject() )
{
CoreObject *streamObj = i_stream->asObject();
if ( streamObj->derivedFrom( "Stream" ) )
{
Stream *base = (Stream *) streamObj->getUserData();
bRes = cfile->save( base );
bValid = true;
}
}
if ( ! bValid )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ).extra( "Stream" ) );
return;
}
}
if ( ! bRes )
{
// is this a file error?
if ( cfile->fsError() )
{
throw new IoError( ErrorParam( e_file_output, __LINE__ ).
sysError( cfile->fsError() ).
extra( cfile->errorMessage() ) );
}
else
{
// no -- it's a configuration file.d
self->setProperty( "error", cfile->errorMessage() );
self->setProperty( "errorLine", (int64) cfile->errorLine() );
throw new ParseError( ErrorParam( FALCP_ERR_STORE, __LINE__ ).
desc( FAL_STR(cp_msg_errstore) ).extra( cfile->errorMessage() ) );
}
}
}
示例3: Handle_lselect
/*#
@method lselect Handle
@brief Returns a "select" query configured to access a sub-recordset.
@param sql The query (excluded the "select" command).
@optparam begin The first row to be returned (0 based).
@optparam count The number of rows to be returned.
@return A fully configured sql command that can be fed into @a Handle.query
This method should create a "select" query adding the commands and/or the
parameters needed by the engine to limit the resultset to a specified part
part of the dataset.
The query parameter must be a complete query EXCEPT for the "select" command,
which is added by the engine. It must NOT terminate with a ";", which, in case
of need is added by the engine.
For example, to limit the following query to rows 5-14 (row 5 is the 6th row):
@code
SELECT field1, field2 FROM mytable WHERE key = ?;
@endcode
write this Falcon code:
@code
// dbh is a DBI handle
rset = dbh.query(
dbh.lselect( "field1, field2 FROM mytable WHERE key = ?", 5, 10 ),
"Key value" )
@endcode
The @b count parameter can be 0 or @b nil to indicate "from @b begin to the end".
It's not possible to return the n-last elements; to do that, reverse the
query ordering logic.
@note If the engine doesn't support limited recordsets, the limit parameters are
ignored.
*/
void Handle_lselect( VMachine *vm )
{
Item* i_sql = vm->param(0);
Item* i_nBegin = vm->param(1);
Item* i_nCount = vm->param(2);
if( i_sql == 0 || ! i_sql->isString()
|| ( i_nBegin != 0 && ! (i_nBegin->isOrdinal() || i_nBegin->isNil() ) )
|| ( i_nCount != 0 && ! i_nCount->isOrdinal() )
)
{
throw new ParamError(ErrorParam( e_inv_params, __LINE__ )
.extra( "S,[N],[N]") );
}
CoreObject *self = vm->self().asObject();
DBIHandle *dbh = static_cast<DBIHandle *>( self->getUserData() );
CoreString* result = new CoreString;
dbh->selectLimited( *i_sql->asString(),
i_nBegin == 0 ? 0 : i_nBegin->forceInteger(),
i_nCount == 0 ? 0 : i_nCount->forceInteger(), *result );
vm->retval( result );
}
示例4: Handle_result
void Handle_result( VMachine *vm )
{
Item* i_sql = vm->param(0);
if ( i_sql == 0 || ! i_sql->isString() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ )
.extra( "S, ..." ) );
}
CoreObject *self = vm->self().asObject();
DBIHandle *dbt = static_cast<DBIHandle *>( self->getUserData() );
int32 pCount = vm->paramCount();
Item result;
if( pCount > 1 )
{
ItemArray params( pCount - 1 );
for( int32 i = 1; i < vm->paramCount(); i++)
{
params.append( *vm->param(i) );
}
// Query may throw.
dbt->result( *i_sql->asString(), result, ¶ms );
}
else
{
dbt->result( *i_sql->asString(), result );
}
vm->retval(result);
}
示例5: Handle_aquery
void Handle_aquery( VMachine *vm )
{
Item* i_sql = vm->param(0);
Item* i_params = vm->param(1);
if ( i_sql == 0 || ! i_sql->isString()
|| i_params == 0 || ! i_params->isArray() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ )
.extra( "S,A" ) );
}
CoreObject *self = vm->self().asObject();
DBIHandle *dbt = static_cast<DBIHandle *>( self->getUserData() );
DBIRecordset* res = 0;
res = dbt->query( *i_sql->asString(), &i_params->asArray()->items() );
if( res != 0 )
{
Item* rset_item = vm->findWKI( "%Recordset" );
fassert( rset_item != 0 );
fassert( rset_item->isClass() );
CoreObject* rset = rset_item->asClass()->createInstance();
rset->setUserData( res );
vm->retval( rset );
}
}
示例6: ConfParser_getCategoryKeys
/*#
@method getCategoryKeys ConfParser
@brief Get the keys filed under a given category.
@param category The category of which the key list is required
@optparam section If provided, the section where the category is defined.
@return All the keys listed in the given category.
This method returns a list of all the keys belonging to a certain category.
See the "Categorized keys" section in @a ConfParser.
*/
FALCON_FUNC ConfParser_getCategoryKeys( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_keyMask = vm->param( 0 );
Item *i_section = vm->param( 1 );
if ( i_keyMask == 0 || ! i_keyMask->isString() ||
( i_section != 0 && ! i_section->isString() && ! i_section->isNil() )
)
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ) );
return;
}
String key;
CoreArray *ret = new CoreArray;
bool next;
if ( i_section != 0 && ! i_section->isNil() ) {
next = cfile->getFirstKey( *i_section->asString(), *i_keyMask->asString(), key );
}
else {
next = cfile->getFirstKey( *i_keyMask->asString(), key );
}
while ( next )
{
ret->append( new CoreString( String( key, i_keyMask->asString()->length() + 1 ) ) );
next = cfile->getNextKey( key );
}
vm->retval( ret );
}
示例7: Handle_expand
void Handle_expand( VMachine *vm )
{
Item* i_sql = vm->param(0);
if ( i_sql == 0 || ! i_sql->isString() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ )
.extra( "S, ..." ) );
}
CoreObject *self = vm->self().asObject();
DBIHandle *dbt = static_cast<DBIHandle *>( self->getUserData() );
DBIRecordset* res = 0;
int32 pCount = vm->paramCount();
CoreString* target = new CoreString;
ItemArray params( pCount - 1 );
for( int32 i = 1; i < vm->paramCount(); i++)
{
params.append( *vm->param(i) );
}
// May throw
dbt->sqlExpand( *i_sql->asString(), *target, params );
vm->retval( target );
}
示例8: ConfParser_getOne
/*#
@method getOne ConfParser
@brief Retreives the value associated with a key.
@param key The key of which the value is to be read.
@optparam section If provided, the section where the key is found.
@return The value (or values) of associated to the key, or nil if not found.
This method is equivalent to the @a ConfParser.get method, except for the fact that if more
than one value has been given for the determined key in the configuration file,
only the last one among them is returned.
*/
FALCON_FUNC ConfParser_getOne( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_key = vm->param(0);
Item *i_section = vm->param(1);
if ( i_key == 0 || ! i_key->isString() ||
( i_section != 0 && ! i_section->isString() && ! i_section->isNil() )
)
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ) );
}
String value;
if ( i_section != 0 && ! i_section->isNil() )
{
if ( ! cfile->getValue( *i_section->asString(), *i_key->asString(), value ) )
{
vm->retnil();
return;
}
}
else {
if ( ! cfile->getValue( *i_key->asString(), value ) )
{
vm->retnil();
return;
}
}
vm->retval( value );
}
示例9: Statement_aexec
void Statement_aexec( VMachine *vm )
{
Item* i_params = vm->param(0);
if( i_params == 0 || ! i_params->isArray() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ )
.extra( "A" ) );
}
CoreObject *self = vm->self().asObject();
DBIStatement *dbt = static_cast<DBIStatement *>( self->getUserData() );
DBIRecordset* res;
res = dbt->execute( &i_params->asArray()->items() );
if( res != 0 )
{
Item* rset_item = vm->findWKI( "%Recordset" );
fassert( rset_item != 0 );
fassert( rset_item->isClass() );
CoreObject* rset = rset_item->asClass()->createInstance();
rset->setUserData( res );
vm->retval( rset );
}
else
{
vm->retnil();
}
}
示例10: DBIError_init
void DBIError_init( VMachine *vm )
{
CoreObject *einst = vm->self().asObject();
if( einst->getUserData() == 0 )
einst->setUserData( new DBIError );
::Falcon::core::Error_init( vm );
}
示例11: ConfParser_getDictionary
/*#
@method getDictionary ConfParser
@brief Retreives keys and values given under a certain category.
@optparam section If given, the section from which to extract the dictionary.
@return A dictionary containing a pair of key-values in the given section.
This method retrieves all the pairs of key and values in the main section, or if
a non-nil section parameter is provided, from the given section. If the
requested section cannot be found, or if it doesn't contain any entry, an empty
dictionary is returned. If a key has multiple values, its element is set to an
array containing all the values.
*/
FALCON_FUNC ConfParser_getDictionary( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_section = vm->param( 0 );
if ( i_section != 0 && ! i_section->isString() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ) );
}
String key;
LinearDict *ret = new LinearDict();
LinearDict *current = ret;
bool next;
if ( i_section != 0 ) {
next = cfile->getFirstKey( *i_section->asString(), "", key );
}
else {
next = cfile->getFirstKey( "", key );
}
while( next )
{
String value;
// seeking a value won't alter key iterators.
if( i_section != 0 )
cfile->getValue( *i_section->asString(), key, value );
else
cfile->getValue( key, value );
// we have at least one value. but do we have more?
String value1;
if ( cfile->getNextValue( value1 ) )
{
CoreArray *array = new CoreArray( 5 );
array->append( new CoreString( value ) );
array->append( new CoreString( value1 ) );
while( cfile->getNextValue( value1 ) )
array->append( new CoreString( value1 ) );
current->put( new CoreString( key ), array );
}
else {
current->put( new CoreString( key ), new CoreString( value ) );
}
next = cfile->getNextKey( key );
}
vm->retval( new CoreDict(ret) );
}
示例12: Recordset_discard
void Recordset_discard( VMachine *vm )
{
Item *i_count = vm->param( 0 );
if ( i_count == 0 || ! i_count->isOrdinal() ) {
throw new ParamError( ErrorParam( e_inv_params, __LINE__ )
.extra( "N" ) );
}
CoreObject *self = vm->self().asObject();
DBIRecordset *dbr = static_cast<DBIRecordset *>( self->getUserData() );
vm->regA().setBoolean( dbr->discard( i_count->forceInteger() ) );
}
示例13: ConfParser_removeSection
FALCON_FUNC ConfParser_removeSection( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_section = vm->param(0);
if ( i_section == 0 || ! i_section->isString() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ).extra( "S" ) );
}
vm->retval( (int64) ( cfile->removeSection( *i_section->asString() ) ? 1: 0) );
}
示例14: ConfParser_get
/*#
@method get ConfParser
@brief Retreives the value associated with a key.
@param key The key of which the value is to be read.
@optparam section If provided, the section where the key is found.
@return The value (or values) of associated to the key, or nil if not found.
The method retrieves the value associated with a given key. If section parameter
is not provided, or if it's nil, the key is searched in the main section, else
it is searched in the given section.
If the section does not exist, or if the key is not present in the given
section, the method returns nil. If the key exist but has no value associated
with it, an empty string is returned. If there is only one instance of the key,
a single string containing the value is returned. If multiple entries for the
given key are found, all the values are returned as strings in an array.
The caller should verify the if the returned value is a string or an array using
typeOf() function. Alternatively, it is possible to use @a ConfParser.getOne to be sure to
retrieve only strings.
Categorized keys can be retrieved with this method by providing their full name.
*/
FALCON_FUNC ConfParser_get( ::Falcon::VMachine *vm )
{
CoreObject *self = vm->self().asObject();
ConfigFile *cfile = (ConfigFile *) self->getUserData();
Item *i_key = vm->param(0);
Item *i_section = vm->param(1);
if ( i_key == 0 || ! i_key->isString() ||
( i_section != 0 && ! i_section->isString() && ! i_section->isNil() )
)
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ ) );
}
String value;
if ( i_section != 0 && ! i_section->isNil() )
{
if ( ! cfile->getValue( *i_section->asString(), *i_key->asString(), value ) )
{
vm->retnil();
return;
}
}
else {
if ( ! cfile->getValue( *i_key->asString(), value ) )
{
vm->retnil();
return;
}
}
// we have at least one value. but do we have more?
String value1;
if ( cfile->getNextValue( value1 ) )
{
CoreArray *array = new CoreArray( 5 );
array->append( new CoreString( value ) );
array->append( new CoreString( value1 ) );
while( cfile->getNextValue( value1 ) )
array->append( new CoreString( value1 ) );
vm->retval( array );
}
else {
vm->retval( value );
}
}
示例15: Handle_prepare
void Handle_prepare( VMachine *vm )
{
Item* i_sql = vm->param(0);
if ( i_sql == 0 || ! i_sql->isString() )
{
throw new ParamError( ErrorParam( e_inv_params, __LINE__ )
.extra( "S, ..." ) );
}
CoreObject *self = vm->self().asObject();
DBIHandle *dbt = static_cast<DBIHandle *>( self->getUserData() );
DBIStatement* stmt = dbt->prepare( *i_sql->asString() );
internal_stmt_open(vm, stmt);
}