Browse Source

Added bbObjectStringcast() and bbObjectArraycast() functions.

woollybah 6 years ago
parent
commit
0c28d0f66c
2 changed files with 18 additions and 0 deletions
  1. 16 0
      blitz.mod/blitz_object.c
  2. 2 0
      blitz.mod/blitz_object.h

+ 16 - 0
blitz.mod/blitz_object.c

@@ -104,6 +104,22 @@ void bbObjectReserved(){
 	bbExThrowCString( "Illegal call to reserved method" );
 }
 
+BBObject *bbObjectStringcast( BBObject *o ){
+	if (o->clas == &bbStringClass) {
+		return o;
+	} else {
+		return &bbEmptyString;
+	}
+}
+
+BBObject *bbObjectArraycast( BBObject *o ){
+	if (o->clas == &bbArrayClass) {
+		return o;
+	} else {
+		return &bbEmptyArray;
+	}
+}
+
 BBObject *bbObjectDowncast( BBObject *o,BBClass *t ){
 	BBClass *p=o->clas;
 	while( p && p!=t ) p=p->super;

+ 2 - 0
blitz.mod/blitz_object.h

@@ -75,6 +75,8 @@ BBObject*	bbObjectSendMessage( BBObject * o, BBObject *m,BBObject *s );
 void		bbObjectReserved();
 
 BBObject*	bbObjectDowncast( BBObject *o,BBClass *t );
+BBObject*	bbObjectStringcast( BBObject *o );
+BBObject*	bbObjectArraycast( BBObject *o );
 
 void		bbObjectRegisterType( BBClass *clas );
 BBClass**	bbObjectRegisteredTypes( int *count );