*From*: aba@atlas.ex.ac.uk*Date*: Thu, 22 Sep 94 18:05:57 +0100*To*: sage-users@cica.indiana.edu*Subject*: friend functions in sage++-1.7

I have a sage program which uses the following code to check whether a member function is a friend function or not. This used to work under sage++-1.3 but no longer works with sage++-1.7. SgClassSymb* user_class = isSgClassSymb( symbol ); if ( user_class ) { SgMemberFuncSymb* member_function = isSgMemberFuncSymb( user_class->field( 1 ) ); if ( member_function ) { SgDescriptType* descriptor = isSgDescriptType( member_function->type() ); if ( descriptor ) { friend = descriptor->modifierFlag() & BIT_FRIEND; if ( friend_function ) { cout << "friend function " << endl; } } } } Am I doing something obviously wrong? Or is there a different mechanism in sage++-1.7 for discovering whether a function is a friend function of a class? I am trying to match the code: class test { public: friend test operator+(const test&, const test&); } int main() { test x, y; x + y; } What I am doing above is looking at the class symbol test. The operator+ function shows up as member_function, but isSgDescriptType() fails for member_function->type(). Printing out member_function->type()->variant() shows it to be T_DERIVED_TYPE. It is not a derived class and should not be derived from anything as test is a simple class. Unless the fact that a member function is a sgDerivedType() is used to mean that the member function is a friend function? Adam _______________________________________________________________ email:aba@dcs.exeter.ac.uk http://dcs.exeter.ac.uk/~aba/

- Prev:
**Re: friend functions in sage++-1.7** - Next:
**No Subject** - Index:
**sage-users mail archive**