<html><body bgcolor="#FFFFFF"><div>I think all modifications should return error, and probably all parent/child queries too. <br><br>- tim<div><br></div></div><div><br>On Aug 27, 2010, at 11:03 AM, Mark Beall <<a href="mailto:mbeall@simmetrix.com">mbeall@simmetrix.com</a>> wrote:<br><br></div><div></div><blockquote type="cite"><div>It certainly seems that the root set is special in some ways. I guess the question is, in which ways is it special?<div><br></div><div>For example, calling iMesh_addEntToSet or iMesh_rmvEntFromSet on the root set doesn't make sense and should probably be an error, right?</div><div><br></div><div>So, clearly there are case where the root set is specified to behave differently, but at the current time I doubt it's clear all the cases that it should.</div><div><br></div><div>mark</div><div><br><div><div>On Aug 27, 2010, at 11:45 AM, Miller, Mark C. wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div ocsi="x"><div style="font-family: Tahoma; direction: ltr; color: rgb(0, 0, 0); font-size: 13px; "><div></div><div dir="ltr"><font color="#000000" size="2" face="Tahoma">Hi Folks,</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">I am gaining some experience with the implementations that suggests that root set is</font></div><div dir="ltr"><font size="2" face="tahoma">treated very differently than other sets. While I understand there are probably good</font></div><div dir="ltr"><font size="2" face="tahoma">reasons from an implementation standpoint to do this, consider a very simple tool like</font></div><div dir="ltr"><font size="2" face="tahoma">eyeMesh browser. What that tool basically does is traverse the set containment</font></div><div dir="ltr"><font size="2" face="tahoma">hierarchy (the hierarchy defined by getEntSets() and then descending into each of those</font></div><div dir="ltr"><font size="2" face="tahoma">sets). As eyeMesh traverses the hierarchy it gathers all the information it can regarding</font></div><div dir="ltr"><font size="2" face="tahoma">each set; getNumTopo, getNumOfTopoType, isList, getNumPrnt, getNumChld, etc. eyeMesh</font></div><div dir="ltr"><font size="2" face="tahoma">then presents this data in a textual oriented gui that allows you to browse what is there.</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">It is coded using a simple recursion starting from the root set. Because of that, it queries</font></div><div dir="ltr"><font size="2" face="tahoma">everything it ordinarily would, even on root set; isList, getNumPrnt for example. These calls</font></div><div dir="ltr"><font size="2" face="tahoma">have shown to be problematic on a few implementations as no one expected to have to</font></div><div dir="ltr"><font size="2" face="tahoma">implement them with the possibility that the given set might be the root set.</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">In further investigating, I've learned that, for example, addPrntChld is not necessarily</font></div><div dir="ltr"><font size="2">e<font face="tahoma">xpected to work with root set as well there might be other calls in iMesh that are</font></font></div><div dir="ltr"><font size="2" face="tahoma">problematic to support on the root set.</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">But, these are all impelementation issues and are not part of the data model. From the</font></div><div dir="ltr"><font size="2" face="tahoma">point of view of the data model, the only thing that makes the root set 'special' is that</font></div><div dir="ltr"><font size="2" face="tahoma">all other things are contained within it. It is effectively the 'universe' set. It cannot have</font></div><div dir="ltr"><font size="2" face="tahoma">'parents' or be 'contained in' another set.</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">So, in my view, with my data model hat on and working only from the iMesh.h header</font></div><div dir="ltr"><font size="2" face="tahoma">file (not from an implementation), I think that the root set ought to behave 'just like any</font></div><div dir="ltr"><font size="2" face="tahoma">other set' and that there should be no implementation-driven restrictions upon its use</font></div><div dir="ltr"><font size="2" face="tahoma">in the API other than<span class="Apple-converted-space"> </span></font><font size="2" face="tahoma">those that can be derived directly from the data model. In particular,</font></div><div dir="ltr"><font size="2" face="tahoma">implementations should be coded to operate 'reasonably' in all cases where an entity set</font></div><div dir="ltr"><font size="2" face="tahoma">handle is required and caller passes root set for such. If the call does not make any sense</font></div><div dir="ltr"><font size="2" face="tahoma">in the data model, then it is ok for the call to error out. However, if there is no legitimate</font></div><div dir="ltr"><font size="2" face="tahoma">argument that the call does NOT make sense from the perspective of the data model</font></div><div dir="ltr"><font size="2" face="tahoma">when 'entity set handle' is replaced with 'root set', then the call should return normally</font></div><div dir="ltr"><font size="2" face="tahoma">and with reasonable results.</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">If this is not consistent with others understanding of the data model and implementations,</font></div><div dir="ltr"><font size="2" face="tahoma">please speak up loudly now so we can identify all the issues.</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma"></font> </div><div dir="ltr"><font size="2" face="tahoma">Mark</font></div><div dir="ltr"><font size="2" face="tahoma"></font> </div></div></div></span></blockquote></div><br></div></div></blockquote></body></html>