Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
60141ce
abstract class with non-virtual destructor
mpictor Oct 13, 2013
5b14529
warning about comparison that was always true
mpictor Oct 13, 2013
bf39d90
_mainRegistry wasn't initialized
mpictor Oct 13, 2013
ffd0da9
default to case insensitive when searching by instance type
mpictor Oct 13, 2013
6419146
functions to look up instance type in file
mpictor Dec 6, 2013
2d060e7
minor changes to judyLArray.h, judy.c
mpictor Dec 8, 2013
6004ba4
remove outdated comment from inverse_attr2.cc
mpictor Dec 9, 2013
9144443
doxify comments in classes_misc.c
mpictor Dec 15, 2013
259750e
split a big fprintf up for readability
mpictor Dec 15, 2013
57d3d2f
improve some comments for doxygen
mpictor Dec 17, 2013
7867505
macro CONST -> const
mpictor Dec 19, 2013
f3cd328
add a FIXME
mpictor Mar 6, 2014
6e636d1
add variable names to some prototypes in ErrorDescriptor header
mpictor Mar 16, 2014
d1062cd
use lazyInstMgr for inverse_attr3.cc
mpictor Oct 13, 2013
b1387b7
improve comments, a few other small changes that don't affect behavior
mpictor Oct 13, 2013
35ead38
include subsuperiterators header
mpictor Oct 28, 2013
0188910
add lazyRefs.h
mpictor Oct 28, 2013
b3b4646
trivial changes
mpictor Dec 6, 2013
ca56023
use lazyRefs in lazyInstMgr
mpictor Dec 8, 2013
bd402b2
add STEPinvAttrList for inv attr descs and setter/getter pointers
mpictor Dec 15, 2013
d5f693a
use STEPinvAttrList in sdaiApplication_Instance
mpictor Dec 15, 2013
e17938a
generated c++: static setter/getter for inverse attrs
mpictor Dec 15, 2013
ef2c01d
in generated c++: in constructors, populate iAttrs
mpictor Dec 15, 2013
647ecbc
in generated c++: ensure that pointers are zeroed (DataMemberInitiali…
mpictor Dec 16, 2013
1fddd17
in generated c++: ensure pointer is non-null before calling shallowCopy
mpictor Dec 17, 2013
4b3e433
in generated c++: create data members for null pointers
mpictor Dec 17, 2013
f6078d8
eliminate unused buffer
mpictor Dec 16, 2013
ebb7a92
use InstMgrBase instead of InstMgr in most stepcore classes
mpictor Dec 17, 2013
51acb99
whoops, don't pretend an instance can't be found if it is already loaded
mpictor Dec 17, 2013
7222c91
update inverse attr test 3
mpictor Dec 17, 2013
fdcdd5a
forgot to replace InstMgr with InstMgrBase in selects.c
mpictor Dec 17, 2013
d9c89b9
when printing initializers, skip derived attrs
mpictor Dec 17, 2013
a74dc1d
forgot to add 'const' keyword in several places after changing the ..…
mpictor Dec 19, 2013
800453e
split entity methods out of ATTRprint_access_methods into 2 new funcs
mpictor Dec 19, 2013
d4f13e0
replace entity access member code with call to new func
mpictor Dec 19, 2013
aaa1ca0
fix a few comments
mpictor Dec 19, 2013
23a5a62
formatting
mpictor Dec 19, 2013
2ae605d
rename var - 'class' may not be a C keyword, but it's confusing
mpictor Mar 1, 2014
64dd1d2
two libstructor_print calls missing neededAttr param
mpictor Mar 1, 2014
118d8b2
merge with instMgrBase commit
mpictor Mar 1, 2014
6cb750a
don't print const for getter
mpictor Mar 1, 2014
d6bb20d
use instMgrBase in SDAI_Select operator test
mpictor Mar 2, 2014
236778a
generated code: also print a const getter in class header when attr i…
mpictor Mar 2, 2014
d64bbc3
move count var so that derived attrs are counted
mpictor Mar 2, 2014
5c0bea3
add braces and indenting to two LISTdo..LISTod's
mpictor Mar 2, 2014
3132089
note that unity headers are probably useless since the main schema he…
mpictor Mar 2, 2014
4a01038
fix a couple comments
mpictor Mar 2, 2014
cd08570
print const and non-const getters for select attrs
mpictor Mar 2, 2014
f638355
move string/binary access methods into 2 small funcs
mpictor Mar 2, 2014
47d42ad
invert sense of test in logging code - wouldn't print unless null
mpictor Mar 2, 2014
521a999
change const getter for entity attr's
mpictor Mar 2, 2014
62ef3c6
add const getter for string/bin attr's
mpictor Mar 2, 2014
14d7b32
remove duplicate function prototypes that masked a signature change
mpictor Mar 4, 2014
ea339e2
exp2cxx: move select getters into own function, print const and non-c…
mpictor Mar 4, 2014
9cf54cf
add attrIsObj(), which returns true if const and non-const methods ar…
mpictor Mar 4, 2014
acdc338
static setter/getter won't always have the same signature
mpictor Mar 4, 2014
ea24200
make STEPinvAttrList work with the new setter/getter variants
mpictor Mar 4, 2014
b9db456
CONST -> const in a few more places
mpictor Mar 4, 2014
6117e53
move much of ATTRprint_access_methods into a series of smaller funcs
mpictor Mar 4, 2014
3133165
modify const-ness in AGGRprint_access_methods
mpictor Mar 4, 2014
9e1d078
add 2 protos to classes_attribute header
mpictor Mar 4, 2014
66deaaf
change behavior of attrIsObj() fn in classes_attribute
mpictor Mar 4, 2014
73b3c1b
fix assertion - can either be aggregate or instance
mpictor Mar 6, 2014
06bfc7d
handle both aggr and non-aggr inverses
mpictor Mar 6, 2014
b31ffa3
more changes to attrIsObj()
mpictor Mar 6, 2014
6955a03
check for both aggr and non-aggr inverse attributes
mpictor Mar 16, 2014
4bde538
add comment with express that fails
mpictor Mar 16, 2014
4093158
fix test dependency so 'make test ARGS=-jN' works
mpictor Mar 30, 2014
7089bdb
when loading instance dependencies, seek to original position afterwards
mpictor Mar 30, 2014
9db1170
improve some comments in lazy loading code
mpictor Mar 30, 2014
674fa94
delete the array of names after creating a STEPcomplex
mpictor Mar 30, 2014
c2c0a64
reformat some error message code, add one message for complex insts
mpictor Mar 30, 2014
7842742
redo some comments
mpictor May 11, 2014
4df86e5
schema name changed for some p21 tests - update it
mpictor May 11, 2014
1e95f8f
remove LIBcopy_constructor() - unused since 1992(!)
mpictor May 18, 2014
7ae3434
indents in generated code
mpictor May 19, 2014
168e7a9
split up a 32-line fprintf
mpictor May 19, 2014
712d965
improve comments, whitespace
mpictor Jun 1, 2014
01db378
silence a signed-unsigned warning by using size_t
mpictor Jun 1, 2014
14689c6
split ENTITYprint_new() into two, print into different files
mpictor Jun 1, 2014
c6d8417
initialize entity iAttrs using eDesc
mpictor Jun 1, 2014
2374029
cleanup
mpictor Jun 1, 2014
65c703b
work on inverse attrs
mpictor Aug 21, 2014
98283dc
more work on inverse attrs, code generation
mpictor Nov 29, 2014
9efd75e
add some small schemas and a .p21; should be examined, maybe moved/si…
mpictor Nov 29, 2014
c8cfac3
some types still print in SdaiAll
mpictor Nov 29, 2014
86bbc32
cleanup
mpictor Nov 29, 2014
d36d12c
fix failing schema
mpictor Dec 8, 2014
0b42b2f
oops, move eDesc initialization back into SdaiAll
mpictor Dec 8, 2014
7976c8b
loop through ed's with inverse attrs, connecting them to what they po…
mpictor Dec 8, 2014
febbb63
allow const or non-const for ed iter
mpictor Dec 8, 2014
c91109b
add functions to access schema class members
mpictor Dec 8, 2014
87c66bb
flesh out InitIAttrs() in eDesc, instance
mpictor Dec 8, 2014
31bf315
const correctness in superInvAttrIter
mpictor Dec 8, 2014
5df2f69
inching forward on inverse attrs
mpictor Dec 22, 2014
921de86
closer...
mpictor Dec 22, 2014
9313b8e
move some attr-specific stuff from classes_entity to classes_attribut…
mpictor Dec 23, 2014
ff3fd1f
_complex is now bool, not int - update STEPcomplex ctors
mpictor Dec 26, 2014
6bac26d
add index to struct Variable_, fix some whitespace
mpictor Dec 26, 2014
37901af
redo attribute numbering, print inverse attr access members separately
mpictor Dec 26, 2014
efb8285
don't print code for inverse data members, they're in iAMap now
mpictor Dec 26, 2014
8273ce1
lazyRefs works now
mpictor Dec 26, 2014
5f702fb
fix dumpComplexInst func, stupid mistake - was using wrong data member
mpictor Dec 26, 2014
653625f
fix crash with lazy loading and unexpected newlines, found in cd209 f…
mpictor Dec 26, 2014
e74d4dc
fix inverse attr initialization; attr was being found but it wasn't e…
mpictor Dec 26, 2014
50452e8
fix inv attr code in SDAI_Application_instance
mpictor Dec 26, 2014
dfe69a9
bug in superInvAttrIter allowed null pointer return for ia
mpictor Dec 26, 2014
bfbd8df
minor cleanup
mpictor Dec 26, 2014
0f5179e
oops, forgot an include
mpictor Dec 26, 2014
c8f14a0
bump version (0.8), update AUTHORS, NEWS for v0.8, add travis-ci buil…
mpictor Dec 26, 2014
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
more work on inverse attrs, code generation
  • Loading branch information
mpictor committed Dec 26, 2014
commit 98283dca3409e5098fa9926f2540761a077244db
50 changes: 29 additions & 21 deletions src/cllazyfile/lazyRefs.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,27 +75,29 @@ class lazyRefs {
//3c - for each item in both _refMap and edL, add it to _referentInstances
potentialReferentInsts( edL );
//3d - load each inst
invAttrListNode * invNode = invAttr( _inst, ia /*, iaList*/ );
/*invAttrListNode * invNode*/
iAstruct * ias = invAttr( _inst, ia /*, iaList*/ );
referentInstances_t::iterator insts = _referentInstances.begin();
for( ; insts != _referentInstances.end(); ++insts ) {
loadInstIFFreferent( *insts, invNode );
loadInstIFFreferent( *insts, ias, ia );
}
//3f - cache edL - TODO
}

void loadInstIFFreferent( instanceID inst, invAttrListNode * invNode ) {
void loadInstIFFreferent( instanceID inst, iAstruct * ias, const Inverse_attribute * ia ) {
bool prevLoaded = _lim->isLoaded( inst );
SDAI_Application_instance * rinst = _lim->loadInstance( inst );
bool ref = refersToCurrentInst( invNode->inverseADesc(), rinst );
bool ref = refersToCurrentInst( ia, rinst );
if( ref ) {
if( invNode->isAggregate() ) {
EntityAggregate * ea = ( ( invAttrListNodeA * )invNode )->getter()( _inst );
if( ia->inverted_attr_()->IsAggrType() ) {
EntityAggregate * ea = ias->a;
assert( ea && "is it possible for this to be null here? if so, must create & assign");
//TODO check if duplicate
ea->AddNode( new EntityNode( rinst ) );
} else {
SDAI_Application_instance * ai = ( ( invAttrListNodeI * )invNode )->getter()( _inst );
SDAI_Application_instance * ai = ias->i;
if( !ai ) {
( ( invAttrListNodeI * )invNode )->setter()( _inst, rinst );
ias->i = rinst;
} else if( ai->GetFileId() != inst ) {
std::cerr << "ERROR: two instances (" << rinst << " and " << ai->GetFileId() << ") refer to inst ";
std::cerr << _inst->GetFileId() << ", but its inverse attribute is not an aggregation type!" << std::endl;
Expand All @@ -110,7 +112,7 @@ class lazyRefs {
}

///3e - check if actually inverse ref
bool refersToCurrentInst( Inverse_attribute * ia, SDAI_Application_instance * referrer ) {
bool refersToCurrentInst( const Inverse_attribute * ia, SDAI_Application_instance * referrer ) {
//find the attr
int rindex = attrIndex( referrer, ia->_inverted_attr_id, ia->_inverted_entity_id );
STEPattribute sa = referrer->attributes[ rindex ];
Expand Down Expand Up @@ -155,7 +157,7 @@ class lazyRefs {
return -1;
}

invAttrListNode * invAttr( SDAI_Application_instance * inst, const Inverse_attribute * ia /*, iaList_t & iaList */ ) {
iAstruct * invAttr( SDAI_Application_instance * inst, const Inverse_attribute * ia /*, iaList_t & iaList */ ) {
/* looks for iAttrs in schemas/sdai_ap214e3/entity/SdaiGeometric_representation_context.cc, but the ctors don't populate it
* shouldn't the parent class ctor populate it?
ENTITY representation_context;
Expand All @@ -171,16 +173,22 @@ SUBTYPE OF (representation_context);
coordinate_space_dimension : dimension_count;
END_ENTITY; -- 10303-42: geometry_schema
*/
invAttrListNode * n = ( invAttrListNode * ) inst->iAttrs.GetHead();
while( n ) {
if( n->inverseADesc() == ia ) {
return n;
SDAI_Application_instance::iAMap_t map = inst->getInvAttrs();
SDAI_Application_instance::iAMap_t::iterator iai = map.begin();
while( iai != map.end() ) {
if( iai->first == ia ) {
return &( iai->second );
}
n = ( invAttrListNode * ) n->NextNode();
++iai;
}
std::cerr << "Error! inverse attr " << ia->Name() << " (" << ia << ") not found in iAttrs (";
std::cerr << ( void * )( & ( inst->iAttrs ) ) << ") - entity " << inst->eDesc->Name() << "." << std::endl;
return 0;
iai = map.begin();
//FIXME treat as unrecoverable?
std::cerr << "Error! inverse attr " << ia->Name() << " (" << ia << ") not found in iAMap for entity " << inst->getEDesc()->Name() << ". Map contents:" << std::endl;
for( ; iai != map.end(); ++iai ) {
std::cerr << iai->first->Name() << ": " << (void*)(iai->second.a) << ", ";
}
std::cerr << std::endl;
return NULL;
}

/** 3c. compare the type of each item in R with types in A
Expand Down Expand Up @@ -208,13 +216,13 @@ END_ENTITY; -- 10303-42: geometry_schema
const Inverse_attribute * iAttr;
for( ; !supersIter.empty(); ++supersIter ) {
//look at attrs of *si
InverseAItr iai( ( *supersIter )->InverseAttr() );
InverseAItr iai( &( ( *supersIter )->InverseAttr() ) );
while( 0 != ( iAttr = iai.NextInverse_attribute() ) ) {
iaList.insert( iAttr );
}
}
// look at our own attrs
InverseAItr invAttrIter( ed->InverseAttr() );
InverseAItr invAttrIter( &( ed->InverseAttr() ) );
while( 0 != ( iAttr = invAttrIter.NextInverse_attribute() ) ) {
iaList.insert( iAttr );
}
Expand Down Expand Up @@ -272,7 +280,7 @@ END_ENTITY; -- 10303-42: geometry_schema


// 1. find inverse attrs with recursion
getInverseAttrs( ai->eDesc, _iaList );
getInverseAttrs( ai->getEDesc(), _iaList );

//2. find reverse refs, map id to type (stop if there are no inverse attrs or no refs)
if( _iaList.size() == 0 || !mapRefsToTypes() ) {
Expand Down
2 changes: 1 addition & 1 deletion src/cllazyfile/sectionReader.cc
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ SDAI_Application_instance * sectionReader::getRealInstance( const Registry * reg
if( !comment.empty() ) {
inst->AddP21Comment( comment );
}
assert( inst->eDesc );
assert( inst->getEDesc() );
_file.seekg( begin );
findNormalString( "(" );
_file.unget();
Expand Down
31 changes: 28 additions & 3 deletions src/clstepcore/ExpDict.cc
Original file line number Diff line number Diff line change
Expand Up @@ -554,9 +554,9 @@ const AttrDescriptor * AttrDescItr::NextAttrDesc() {
return 0;
}

const Inverse_attribute * InverseAItr::NextInverse_attribute() {
Inverse_attribute * InverseAItr::NextInverse_attribute() {
if( cur ) {
const Inverse_attribute * ia = cur->Inverse_attr();
Inverse_attribute * ia = cur->Inverse_attr();
cur = ( Inverse_attributeLinkNode * )( cur->NextNode() );
return ia;
}
Expand Down Expand Up @@ -811,6 +811,31 @@ EntityDescriptor::~EntityDescriptor() {
delete _uniqueness_rules;
}

/** initialize inverse attrs
* call once per eDesc (once per EXPRESS entity type)
* must be called _after_ init_Sdai* functions for any ia->inverted_entity_id_'s
*
*/
void EntityDescriptor::InitIAttrs( entFinderFn entFinder ) {
InverseAItr iai( &( InverseAttr() ) );
Inverse_attribute * ia;
while( 0 != ( ia = iai.NextInverse_attribute() ) ) {
const AttrDescriptor * ad;
const char * aid = ia->inverted_attr_id_();
const char * eid = ia->inverted_entity_id_();
const EntityDescriptor * e = entFinder( eid );
AttrDescItr adl( e->ExplicitAttr() ); //TODO does this include inherited attrs? redefined? etc...
while( ( 0 != ( ad = adl.NextAttrDesc() ) ) && !strcmp( aid, ad->Name() ) ) {
// loop condition side effects do everything
}
if( !ad ) {
std::cerr << "Inverse attr " << ia->Name() << " for " << Name() << ": cannot find AttrDescriptor " << aid << " for entity " << eid << "." << std::endl;
//FIXME should we abort? or is there a sensible recovery path?
}
ia->inverted_attr_( ad );
}
}

const char * EntityDescriptor::GenerateExpress( std::string & buf ) const {
std::string sstr;
int count;
Expand Down Expand Up @@ -878,7 +903,7 @@ const char * EntityDescriptor::GenerateExpress( std::string & buf ) const {
}
/////////

InverseAItr iai( _inverseAttr );
InverseAItr iai( &_inverseAttr );

iai.ResetItr();
const Inverse_attribute * ia = iai.NextInverse_attribute();
Expand Down
63 changes: 46 additions & 17 deletions src/clstepcore/ExpDict.h
Original file line number Diff line number Diff line change
Expand Up @@ -664,6 +664,7 @@ class SC_CORE_EXPORT Schema : public Dictionary_instance {
protected:
const char * _name;
EntityDescriptorList _entList; // list of entities in the schema
EntityDescriptorList _entsWithInverseAttrs;
TypeDescriptorList _typeList; // list of types in the schema
TypeDescriptorList _unnamed_typeList; // list of unnamed types in the schema (for cleanup)
Interface_spec _interface; // list of USE and REF interfaces (SDAI)
Expand Down Expand Up @@ -729,15 +730,31 @@ class SC_CORE_EXPORT Schema : public Dictionary_instance {
EntityDescLinkNode * AddEntity( EntityDescriptor * ed ) {
return _entList.AddNode( ed );
}
/// must be called in addition to AddEntity()
EntityDescLinkNode * AddEntityWInverse( EntityDescriptor * ed ) {
return _entsWithInverseAttrs.AddNode( ed );
}

TypeDescLinkNode * AddType( TypeDescriptor * td ) {
return _typeList.AddNode( td );
}

TypeDescLinkNode * AddUnnamedType( TypeDescriptor * td ) {
return _unnamed_typeList.AddNode( td );
}

const EntityDescriptorList * Entities() const {
return & _entList;
}
const EntityDescriptorList * EntsWInverse() const {
return & _entsWithInverseAttrs;
}
const TypeDescriptorList * Types() const {
return & _typeList;
}
const TypeDescriptorList * UnnamedTypes() const {
return & _unnamed_typeList;
}

// the whole schema
void GenerateExpress( ostream & out ) const;

Expand Down Expand Up @@ -811,7 +828,7 @@ class SC_CORE_EXPORT Inverse_attributeLinkNode : public SingleLinkNode {
Inverse_attributeLinkNode();
virtual ~Inverse_attributeLinkNode();

const Inverse_attribute * Inverse_attr() const {
Inverse_attribute * Inverse_attr() const {
return _invAttr;
}
void Inverse_attr( Inverse_attribute * ia ) {
Expand All @@ -833,18 +850,21 @@ class SC_CORE_EXPORT Inverse_attributeList : public SingleLinkList {

class SC_CORE_EXPORT InverseAItr {
protected:
const Inverse_attributeList & ial;
const Inverse_attributeList * ial;
const Inverse_attributeLinkNode * cur;

public:
InverseAItr( const Inverse_attributeList & iaList );
InverseAItr( const Inverse_attributeList * iaList );
virtual ~InverseAItr();

void ResetItr() {
cur = ( Inverse_attributeLinkNode * )( ial.GetHead() );
void ResetItr( const Inverse_attributeList * iaList = 0 ) {
if( iaList ) {
ial = iaList;
}
cur = ( Inverse_attributeLinkNode * )( ial->GetHead() );
}

const Inverse_attribute * NextInverse_attribute();
Inverse_attribute * NextInverse_attribute();
};

/**
Expand Down Expand Up @@ -1072,7 +1092,7 @@ class SC_CORE_EXPORT Inverse_attribute : public AttrDescriptor {
const char * _inverted_attr_id;
const char * _inverted_entity_id;
protected:
AttrDescriptor * _inverted_attr; // not implemented (?!)
const AttrDescriptor * _inverted_attr; // not implemented (?!) (perhaps this means "not used"?)
public:

Inverse_attribute(
Expand Down Expand Up @@ -1107,22 +1127,23 @@ class SC_CORE_EXPORT Inverse_attribute : public AttrDescriptor {
_inverted_entity_id = iei;
}

/// FIXME not implemented (?!)
class AttrDescriptor * inverted_attr_() {
/// FIXME not implemented (?!) (perhaps this means "not set"?)
//set _inverted_attr in an extra init step in generated code? any other way to ensure pointers are valid?
const class AttrDescriptor * inverted_attr_() const {
return _inverted_attr;
}

void inverted_attr_( AttrDescriptor * ia ) {
void inverted_attr_( const AttrDescriptor * ia ) {
_inverted_attr = ia;
}

// below are obsolete (and not implemented anyway)
class AttrDescriptor * InverseAttribute() {
return _inverted_attr;
}
void InverseOf( AttrDescriptor * invAttr ) {
_inverted_attr = invAttr;
}
// class AttrDescriptor * InverseAttribute() {
// return _inverted_attr;
// }
// void InverseOf( AttrDescriptor * invAttr ) {
// _inverted_attr = invAttr;
// }
};

/** \class SchRename
Expand Down Expand Up @@ -1473,9 +1494,14 @@ class SC_CORE_EXPORT EnumTypeDescriptor : public TypeDescriptor {
* will be building the same thing but using the new schema info.
* nodes (i.e. EntityDesc nodes) for each entity.
*/

class Registry;

class SC_CORE_EXPORT EntityDescriptor : public TypeDescriptor {

protected:
//used in InitIAttrs so we don't have to #include registry.h

SDAI_LOGICAL _abstractEntity;
SDAI_LOGICAL _extMapping;
// does external mapping have to be used to create an instance of
Expand All @@ -1487,6 +1513,7 @@ class SC_CORE_EXPORT EntityDescriptor : public TypeDescriptor {
Inverse_attributeList _inverseAttr; // OPTIONAL
std::string _supertype_stmt;
public:
typedef const EntityDescriptor * (*entFinderFn)(const char *);
Uniqueness_rule__set_var _uniqueness_rules; // initially a null pointer

// pointer to a function that will create a new instance of a SDAI_Application_instance
Expand All @@ -1502,6 +1529,8 @@ class SC_CORE_EXPORT EntityDescriptor : public TypeDescriptor {

virtual ~EntityDescriptor();

void InitIAttrs( entFinderFn entFinder );

const char * GenerateExpress( std::string & buf ) const;

const char * QualifiedName( std::string & s ) const;
Expand Down
4 changes: 2 additions & 2 deletions src/clstepcore/ExpDict.inline.cc
Original file line number Diff line number Diff line change
Expand Up @@ -162,9 +162,9 @@ Inverse_attributeLinkNode * Inverse_attributeList::AddNode( Inverse_attribute *
return node;
}

InverseAItr::InverseAItr( const Inverse_attributeList & iaList )
InverseAItr::InverseAItr( const Inverse_attributeList * iaList )
: ial( iaList ) {
cur = ( Inverse_attributeLinkNode * )( ial.GetHead() );
cur = ( Inverse_attributeLinkNode * )( ial->GetHead() );
}

InverseAItr::~InverseAItr() {
Expand Down
2 changes: 1 addition & 1 deletion src/clstepcore/Registry.inline.cc
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ SDAI_Application_instance * Registry::ObjCreate( const char * nm, const char * s
se->Error().severity( SEVERITY_WARNING );
se->Error().UserMsg( "ENTITY requires external mapping" );
}
se->eDesc = entd;
se->setEDesc( entd );
return se;
} else {
return ENTITY_NULL;
Expand Down
Loading