Browse Source

Construction does not work on hpux aCC, so some refactoring

pull/73/head
tomas@whalegate.ndb.mysql.com 19 years ago
parent
commit
53cee9f2bf
  1. 13
      ndb/include/ndbapi/Ndb.hpp
  2. 15
      ndb/src/ndbapi/NdbImpl.hpp

13
ndb/include/ndbapi/Ndb.hpp

@ -1051,18 +1051,7 @@ class Ndb
friend class NdbDictionaryImpl;
friend class NdbDictInterface;
friend class NdbBlob;
friend class Ndb_free_list_t<NdbRecAttr>;
friend class Ndb_free_list_t<NdbApiSignal>;
friend class Ndb_free_list_t<NdbLabel>;
friend class Ndb_free_list_t<NdbBranch>;
friend class Ndb_free_list_t<NdbSubroutine>;
friend class Ndb_free_list_t<NdbCall>;
friend class Ndb_free_list_t<NdbBlob>;
friend class Ndb_free_list_t<NdbReceiver>;
friend class Ndb_free_list_t<NdbIndexScanOperation>;
friend class Ndb_free_list_t<NdbOperation>;
friend class Ndb_free_list_t<NdbIndexOperation>;
friend class Ndb_free_list_t<NdbTransaction>;
friend class NdbImpl;
#endif
public:

15
ndb/src/ndbapi/NdbImpl.hpp

@ -89,6 +89,15 @@ public:
return 0;
}
/*
We need this friend accessor function to work around a HP compiler problem,
where template class friends are not working.
*/
static inline void setNdbError(Ndb &ndb,int code){
ndb.theError.code = code;
return;
}
/**
* NOTE free lists must be _after_ theNdbObjectIdMap take
* assure that destructors are run in correct order
@ -208,7 +217,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
m_free_list = new T(ndb);
if (m_free_list == 0)
{
ndb->theError.code = 4000;
NdbImpl::setNdbError(*ndb, 4000);
assert(false);
return -1;
}
@ -218,7 +227,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
T* obj= new T(ndb);
if(obj == 0)
{
ndb->theError.code = 4000;
NdbImpl::setNdbError(*ndb, 4000);
assert(false);
return -1;
}
@ -250,7 +259,7 @@ Ndb_free_list_t<T>::seize(Ndb* ndb)
}
else
{
ndb->theError.code = 4000;
NdbImpl::setNdbError(*ndb, 4000);
assert(false);
}
return tmp;

Loading…
Cancel
Save