# Script object reference in C++

This topic is 1579 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi,

I'm writing a debugger for my project using AngelScript 2.27.1. I've registered a callback and able to extract the variables. I have a nice display showing the variables. For references I'd like to write if it is null or not.

for ( int varIx = 0; varIx < context->GetVarCount( level ); varIx++ )
watch->Show( context->GetVarName( varIx, level )
, context->GetVarTypeId( varIx, level )
, context->GetAddressOfVar( varIx, level ) );


This way I enumerate the variables. In Show, I get the object type:

asIObjectType* objType = ScriptEngine::Instance().GetAsEngine()->GetObjectTypeById( typeId );


And then I have a TODO now

if ( objType->GetFlags() & asOBJ_REF )
{
const asIScriptObject* object = (const asIScriptObject*)address;
bool isValidRef = true; // TODO

item->setText( 2, isValidRef ? "valid ref" : "null ref" );
}


I can cast the address of the property to an asIScriptObject, but I can't still determine if it is null reference or not. I've checked if the address pointer is maybe null, but it is not null even for null ref objects.

Is there a way to check if it is a null ref or not?

Thank you.

Edited by brumi

##### Share on other sites

GetAddressOfVar() will return the address of the value in the variable. If the variable is a primitive type then the address will point to the value of the primitive, if the variable is a handle then the address will point to the handle, if the variable is local object (even if it is a ref type) then the address will point to the object.

You can use the typeId to know if the variable is a handle or not by checking for the bit asTYPEID_OBJHANDLE. If it is not a handle, then the variable will not be null.

I suggest you take a look at the CDebugger add-on in the SDK, particularly the ToString() and PrintValue() methods. It shows how to interpret the information you get about the variables.

Regards,

Andreas

##### Share on other sites

I wasn't aware of the Debugger addon. Thank you, checked it, and now I have a nice game editor with a full angelscript IDE. :) Like this:

[attachment=17951:editor.jpg]

##### Share on other sites

Wow nice work! that looks amazingly useful. I'll have to look into that, maybe not a full blown GUI like that, but at least a Debug() function that could automatically output all the local variables to log file as best it can sure would beat hacking in output to console statements for each var I want to look at.

##### Share on other sites

Thank you, I now have only one feature left before I'll release it to the public; Skinned animation.

##### Share on other sites

This looks really nice indeed.

Do you have a site for your project that I can link to on the users list?