Difference between revisions of "OBJECT SETPROPERTY()"
Yvonnemilne (Talk | contribs) |
Yvonnemilne (Talk | contribs) |
||
(9 intermediate revisions by one user not shown) | |||
Line 14: | Line 14: | ||
<input parameters> | <input parameters> | ||
− | OBJECT objptr; | + | OBJECT objptr; /* Pointer to the object */ |
− | char | + | char *propertyname; /* property name to set */ |
<output parameters> | <output parameters> | ||
− | OBJARG | + | OBJARG buffer; /* pointer to an OBJARG buffer */ |
+ | |||
</code> | </code> | ||
Line 31: | Line 32: | ||
Example Recital program: | Example Recital program: | ||
+ | <code lang="recital"> | ||
test = newobject("myclass") | test = newobject("myclass") | ||
− | // Executes method | + | // Executes method 'define' and updates two properties |
? test.define("Error Message", -1000) | ? test.define("Error Message", -1000) | ||
? "test.objvalue.errorno",test.objvalue.errorno | ? "test.objvalue.errorno",test.objvalue.errorno | ||
? "test.objvalue.message",test.objvalue.message | ? "test.objvalue.message",test.objvalue.message | ||
+ | </code> | ||
Example in 'C'object: | Example in 'C'object: | ||
Line 45: | Line 48: | ||
DEFINE_METHOD(clsMyClass, Define) | DEFINE_METHOD(clsMyClass, Define) | ||
{ | { | ||
− | + | struct example_data *objectData = (struct example_data *)OBJECT_GETDATA(); | |
struct API_EXPRESSION result; | struct API_EXPRESSION result; | ||
− | char buffer | + | char buffer[512]; |
int rc; | int rc; | ||
Line 53: | Line 56: | ||
OBJECT_GETPROPERTY(objectData->prop_objvalue, "class", buffer); | OBJECT_GETPROPERTY(objectData->prop_objvalue, "class", buffer); | ||
rc = OBJECT_GETARG(buffer, &result); | rc = OBJECT_GETARG(buffer, &result); | ||
− | if (result.errno == 0 && result.type == 'C'&& | + | if (result.errno == 0 && result.type == 'C' && |
strcmp(result.character, "Exception") == 0) { | strcmp(result.character, "Exception") == 0) { | ||
switch (OBJECT_GETARGC()) { | switch (OBJECT_GETARGC()) { | ||
case 2: | case 2: | ||
rc = OBJECT_GETPARAMETER(2, &result); | rc = OBJECT_GETPARAMETER(2, &result); | ||
− | if (result.errno == 0 && result.type == | + | if (result.errno == 0 && result.type == 'N') { |
OBJECT_SETARG(buffer, &result); | OBJECT_SETARG(buffer, &result); | ||
rc = OBJECT_SETPROPERTY(objectData->prop_objvalue, "errorno", buffer); | rc = OBJECT_SETPROPERTY(objectData->prop_objvalue, "errorno", buffer); | ||
Line 65: | Line 68: | ||
case 1: | case 1: | ||
rc = OBJECT_GETPARAMETER(1, &result); | rc = OBJECT_GETPARAMETER(1, &result); | ||
− | if (result.errno == 0 && result.type == | + | if (result.errno == 0 && result.type == 'C') { |
OBJECT_SETARG(buffer, &result); | OBJECT_SETARG(buffer, &result); | ||
rc = OBJECT_SETPROPERTY(objectData->prop_objvalue, "message", buffer); | rc = OBJECT_SETPROPERTY(objectData->prop_objvalue, "message", buffer); | ||
Line 73: | Line 76: | ||
} | } | ||
− | result.type = | + | result.type = 'L'; |
− | result.logical = (rc == 0 ? | + | result.logical = (rc == 0 ? 'T' : 'F'); |
OBJECT_RETRESULT(&result); | OBJECT_RETRESULT(&result); | ||
} | } |
Latest revision as of 16:44, 26 March 2009
PURPOSE
Set a property from an OBJARG formatted string
SYNONYM
None
SYNOPSIS
#include "dbapi.h" OBJECT_SETPROPERTY(objptr, propertyname, buffer) <input parameters> OBJECT objptr; /* Pointer to the object */ char *propertyname; /* property name to set */ <output parameters> OBJARG buffer; /* pointer to an OBJARG buffer */
DESCRIPTION
The OBJECT_SETPROPERTY() macro is used to set the value of a property from an OBJARG formatted string.
EXAMPLE
In the following example OBJECT_SETPROPERTY () is used to set the value of the property "class" from an OBJARG string format returned from a parameter passed to the method.
Example Recital program:
test = newobject("myclass") // Executes method 'define' and updates two properties ? test.define("Error Message", -1000) ? "test.objvalue.errorno",test.objvalue.errorno ? "test.objvalue.message",test.objvalue.message
Example in 'C'object:
#include "dbapi.h" /* Define define method */ DEFINE_METHOD(clsMyClass, Define) { struct example_data *objectData = (struct example_data *)OBJECT_GETDATA(); struct API_EXPRESSION result; char buffer[512]; int rc; /* Check the object class */ OBJECT_GETPROPERTY(objectData->prop_objvalue, "class", buffer); rc = OBJECT_GETARG(buffer, &result); if (result.errno == 0 && result.type == 'C' && strcmp(result.character, "Exception") == 0) { switch (OBJECT_GETARGC()) { case 2: rc = OBJECT_GETPARAMETER(2, &result); if (result.errno == 0 && result.type == 'N') { OBJECT_SETARG(buffer, &result); rc = OBJECT_SETPROPERTY(objectData->prop_objvalue, "errorno", buffer); } case 1: rc = OBJECT_GETPARAMETER(1, &result); if (result.errno == 0 && result.type == 'C') { OBJECT_SETARG(buffer, &result); rc = OBJECT_SETPROPERTY(objectData->prop_objvalue, "message", buffer); } break; } } result.type = 'L'; result.logical = (rc == 0 ? 'T' : 'F'); OBJECT_RETRESULT(&result); }
SEE ALSO
DEFINE_CLASS(), DEFINE_METHOD(), DEFINE_PROPERTYGET(), DEFINE_PROPERTYSET(), DISPATCH_FACTORY(), DISPATCH_METHOD(), DISPATCH_PROPGET(), DISPATCH_PROPSET(), OBJECT_ASSIGN(), OBJECT_DELETE(), OBJECT_GETARG(), OBJECT_GETARGC(), OBJECT_GETDATA(), OBJECT_GETOBJECT(), OBJECT_GETPARAMETER(), OBJECT_GETPROPERTY(), OBJECT_GETTYPE(), OBJECT_GETVALUE(), OBJECT_NEW(), OBJECT_RETERROR(), OBJECT_RETPROPERTY(), OBJECT_RETRESULT(), OBJECT_SETARG(), OBJECT_SETDATA()