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 NdbDictionaryImpl;
friend class NdbDictInterface; friend class NdbDictInterface;
friend class NdbBlob; 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 #endif
public: public:

15
ndb/src/ndbapi/NdbImpl.hpp

@ -89,6 +89,15 @@ public:
return 0; 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 * NOTE free lists must be _after_ theNdbObjectIdMap take
* assure that destructors are run in correct order * 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); m_free_list = new T(ndb);
if (m_free_list == 0) if (m_free_list == 0)
{ {
ndb->theError.code = 4000;
NdbImpl::setNdbError(*ndb, 4000);
assert(false); assert(false);
return -1; return -1;
} }
@ -218,7 +227,7 @@ Ndb_free_list_t<T>::fill(Ndb* ndb, Uint32 cnt)
T* obj= new T(ndb); T* obj= new T(ndb);
if(obj == 0) if(obj == 0)
{ {
ndb->theError.code = 4000;
NdbImpl::setNdbError(*ndb, 4000);
assert(false); assert(false);
return -1; return -1;
} }
@ -250,7 +259,7 @@ Ndb_free_list_t<T>::seize(Ndb* ndb)
} }
else else
{ {
ndb->theError.code = 4000;
NdbImpl::setNdbError(*ndb, 4000);
assert(false); assert(false);
} }
return tmp; return tmp;

Loading…
Cancel
Save