Hi,
Gerrit Voss wrote:
On Mon, 2008-06-16 at 18:27 -0500, Carsten Neumann wrote:
Similar the node children should be NULL checked as no NULL child
is allowed, and other parts of the code rely on this.
Changed as well. Can we consider moving to a generated Node class ?
I hope I got all the semantic side effects ;-)
Therefore the .fcd has now supports the following:
generatePushToField = "true" / "false
hasPushToField = "true" / "false"
pushToFieldAs = "myAddFunctionName"
generate<funcname> implies has<funcname>
<funcname>As implies has<funcname>
Of course the first two are only relevant for fields with
ptrFieldAccess="custom", otherwise the functions are generated either
with the given or default name.
why is anything generated for the custom case ??. I would treat it all
or nothing. If custom is selected all functions must be implemented
inside the class and nothing remains in the base class. I don't see
a reason to implement one half and have the other half generated.
So I don't see the need for the generate part. The 'has' part if fine
to select if the generic interface should support a particular function.
I removed that part.
hmm, something seems to be slightly off, your commit still had both
items unresolved ?? Or am I missing something. At least the generate
part seems to be inactive as far as I can tell.
this must be a case of me being thick, but I don't get what you are
referring to here, sorry.
If a pointer field has custom access no functions are generated, for the
other two access types they are generated. Lines 380-450 of Field.py
have the relevant code for that. This sets the generate<FuncName>
variables which are tested in the template files.
BTW these variables are not new, they were called write<FuncName>
before, but I had renamed them to match the option in the .fcd files -
which does not exist anymore, patch to go back to use write<FuncName> is
attached (there is no difference in the generated code).
The reason for not testing the access type in the template files is that
nullcheck and std access produce different sets of functions, so one
needs finer control here anyways. Why they produce different sets of
functions is not clear to me, but the last time I asked about it your
answer seemed to imply it was on purpose so I left it alone ;)
I'll update the node part myself as I'm more concerned about that one.
Could you look at the generate part.
Apparently I messed up my patch on that one, I'm pretty sure I had made
that change at one point; apologies for the problems.
Carsten
diff --git a/Tools/fcd2code/Field.py b/Tools/fcd2code/Field.py
index d6c1ac0..2bbb04c 100644
--- a/Tools/fcd2code/Field.py
+++ b/Tools/fcd2code/Field.py
@@ -379,77 +379,77 @@ class Field(FCDElement):
self.m_log.warning("finalize: \"visibility\" has invalid value: %s",
self.getFCD("visibility"));
- self["generatePushToField"] = False;
- self["hasPushToField"] = False;
- self["generateAssignMField"] = False;
- self["hasAssignMField"] = False;
- self["generateInsertIntoMField"] = False;
- self["hasInsertIntoMField"] = False;
- self["generateReplaceInMFieldIndex"] = False;
- self["hasRemoveFromMFieldIndex"] = False;
- self["generateReplaceInMFieldObject"] = False;
- self["hasReplaceInMFieldObject"] = False;
- self["generateRemoveFromMFieldIndex"] = False;
- self["hasRemoveFromMFieldIndex"] = False;
- self["generateRemoveFromMFieldObject"] = False;
- self["hasRemoveFromMFieldObject"] = False;
- self["generateClearField"] = False;
- self["hasClearField"] = False;
-
- self["ptrFieldCustomAccess"] = False;
- self["ptrFieldNullCheckAccess"] = False;
- self["ptrFieldStandardAccess"] = False;
+ self["writePushToField"] = False;
+ self["hasPushToField"] = False;
+ self["writeAssignMField"] = False;
+ self["hasAssignMField"] = False;
+ self["writeInsertIntoMField"] = False;
+ self["hasInsertIntoMField"] = False;
+ self["writeReplaceInMFieldIndex"] = False;
+ self["hasRemoveFromMFieldIndex"] = False;
+ self["writeReplaceInMFieldObject"] = False;
+ self["hasReplaceInMFieldObject"] = False;
+ self["writeRemoveFromMFieldIndex"] = False;
+ self["hasRemoveFromMFieldIndex"] = False;
+ self["writeRemoveFromMFieldObject"] = False;
+ self["hasRemoveFromMFieldObject"] = False;
+ self["writeClearField"] = False;
+ self["hasClearField"] = False;
+
+ self["ptrFieldCustomAccess"] = False;
+ self["ptrFieldNullCheckAccess"] = False;
+ self["ptrFieldStandardAccess"] = False;
if self.getFCD("ptrFieldAccess") == "std":
- self["ptrFieldStandardAccess"] = True;
- self["generatePushToField"] = True;
- self["hasPushToField"] = True;
- self["generateRemoveFromMFieldIndex"] = True;
- self["hasRemoveFromMFieldIndex"] = True;
- self["generateRemoveFromMFieldObject"] = True;
- self["hasRemoveFromMFieldObject"] = True;
- self["generateClearField"] = True;
- self["hasClearField"] = True;
- self["generateAssignMField"] = True;
- self["hasAssignMField"] = True;
+ self["ptrFieldStandardAccess"] = True;
+ self["writePushToField"] = True;
+ self["hasPushToField"] = True;
+ self["writeRemoveFromMFieldIndex"] = True;
+ self["hasRemoveFromMFieldIndex"] = True;
+ self["writeRemoveFromMFieldObject"] = True;
+ self["hasRemoveFromMFieldObject"] = True;
+ self["writeClearField"] = True;
+ self["hasClearField"] = True;
+ self["writeAssignMField"] = True;
+ self["hasAssignMField"] = True;
elif self.getFCD("ptrFieldAccess") == "nullCheck":
- self["ptrFieldNullCheckAccess"] = True;
- self["generatePushToField"] = True;
- self["hasPushToField"] = True;
- self["generateAssignMField"] = True;
- self["hasAssignMField"] = True;
- self["generateInsertIntoMField"] = True;
- self["hasInsertIntoMField"] = True;
- self["generateReplaceInMFieldIndex"] = True;
- self["hasReplaceInMFieldIndex"] = True;
- self["generateReplaceInMFieldObject"] = True;
- self["hasReplaceInMFieldObject"] = True;
- self["generateRemoveFromMFieldIndex"] = True;
- self["hasRemoveFromMFieldIndex"] = True;
- self["generateRemoveFromMFieldObject"] = True;
- self["hasRemoveFromMFieldObject"] = True;
- self["generateClearField"] = True;
- self["hasClearField"] = True;
+ self["ptrFieldNullCheckAccess"] = True;
+ self["writePushToField"] = True;
+ self["hasPushToField"] = True;
+ self["writeAssignMField"] = True;
+ self["hasAssignMField"] = True;
+ self["writeInsertIntoMField"] = True;
+ self["hasInsertIntoMField"] = True;
+ self["writeReplaceInMFieldIndex"] = True;
+ self["hasReplaceInMFieldIndex"] = True;
+ self["writeReplaceInMFieldObject"] = True;
+ self["hasReplaceInMFieldObject"] = True;
+ self["writeRemoveFromMFieldIndex"] = True;
+ self["hasRemoveFromMFieldIndex"] = True;
+ self["writeRemoveFromMFieldObject"] = True;
+ self["hasRemoveFromMFieldObject"] = True;
+ self["writeClearField"] = True;
+ self["hasClearField"] = True;
elif self.getFCD("ptrFieldAccess") == "custom":
- self["ptrFieldCustomAccess"] = True;
- self["hasPushToField"] = (self.getFCD("hasPushToField") == "true" or
- self.getFCD("pushToFieldAs") != "" );
- self["hasAssignMField"] = (self.getFCD("hasAssignMField") == "true" or
- self.getFCD("assignMFieldAs") != "" );
- self["hasInsertIntoMField"] = (self.getFCD("hasInsertIntoMField") == "true" or
- self.getFCD("insertIntoMFieldAs") != "" );
- self["hasReplaceInMFieldIndex"] = (self.getFCD("hasReplaceInMFieldIndex") == "true" or
- self.getFCD("replaceInMFieldIndexAs") != "" );
- self["hasReplaceInMFieldObject"] = (self.getFCD("hasReplaceInMFieldObject") == "true" or
- self.getFCD("replaceInMFieldObjectAs") != "" );
- self["hasRemoveFromMFieldIndex"] = (self.getFCD("hasRemoveFromMFieldIndex") == "true" or
- self.getFCD("removeFromMFieldIndexAs") != "" );
- self["hasRemoveFromMFieldObject"] = (self.getFCD("hasRemoveFromMFieldObject") == "true" or
- self.getFCD("removeFromMFieldObjectAs") != "" );
- self["hasClearField"] = (self.getFCD("hasClearField") == "true" or
- self.getFCD("clearFieldAs") != "" );
+ self["ptrFieldCustomAccess"] = True;
+ self["hasPushToField"] = (self.getFCD("hasPushToField") == "true" or
+ self.getFCD("pushToFieldAs") != "" );
+ self["hasAssignMField"] = (self.getFCD("hasAssignMField") == "true" or
+ self.getFCD("assignMFieldAs") != "" );
+ self["hasInsertIntoMField"] = (self.getFCD("hasInsertIntoMField") == "true" or
+ self.getFCD("insertIntoMFieldAs") != "" );
+ self["hasReplaceInMFieldIndex"] = (self.getFCD("hasReplaceInMFieldIndex") == "true" or
+ self.getFCD("replaceInMFieldIndexAs") != "" );
+ self["hasReplaceInMFieldObject"] = (self.getFCD("hasReplaceInMFieldObject") == "true" or
+ self.getFCD("replaceInMFieldObjectAs") != "" );
+ self["hasRemoveFromMFieldIndex"] = (self.getFCD("hasRemoveFromMFieldIndex") == "true" or
+ self.getFCD("removeFromMFieldIndexAs") != "" );
+ self["hasRemoveFromMFieldObject"] = (self.getFCD("hasRemoveFromMFieldObject") == "true" or
+ self.getFCD("removeFromMFieldObjectAs") != "" );
+ self["hasClearField"] = (self.getFCD("hasClearField") == "true" or
+ self.getFCD("clearFieldAs") != "" );
else:
print "Unknown pointer field acess mode ", self.getFCD("ptrFieldAccess")
diff --git a/Tools/fcd2code/TemplateFieldContainerBase_cpp.txt b/Tools/fcd2code/TemplateFieldContainerBase_cpp.txt
index d15d496..2f3b46f 100644
--- a/Tools/fcd2code/TemplateFieldContainerBase_cpp.txt
+++ b/Tools/fcd2code/TemplateFieldContainerBase_cpp.txt
@@ -324,7 +324,7 @@ const @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps!@ [EMAIL PROTECTED]@B
@@BeginMFFieldLoop@@
@@if field.isPtrField
@@if !field.noAccess
- @@if field.generatePushToField
+ @@if field.writePushToField
void @[EMAIL PROTECTED]::@!field.PushToField!@(@!field.Type!@ const value)
{
@@if field.ptrFieldNullCheckAccess
@@ -337,8 +337,8 @@ void @[EMAIL PROTECTED]::@!field.PushToField!@(@!field.Type!@ const value)
[EMAIL PROTECTED]@.push_back(value);
}
- @@endif // field.generatePushToField
- @@if field.generateAssignMField
+ @@endif // field.writePushToField
+ @@if field.writeAssignMField
void @[EMAIL PROTECTED]::@!field.AssignMField:15!@(const @!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:15!@ &value)
{
@!field.FieldTypeNS!@@!field.CARD!@@!field.FieldTypeCaps:15!@::const_iterator elemIt =
@@ -356,8 +356,8 @@ void @[EMAIL PROTECTED]::@!field.AssignMField:15!@(const @!field.FieldTypeNS!@@!f
}
}
- @@endif // field.generateAssignMField
- @@if field.generateInsertIntoMField
+ @@endif // field.writeAssignMField
+ @@if field.writeInsertIntoMField
void @[EMAIL PROTECTED]::@!field.InsertIntoMField!@(UInt32 uiIndex,
@!field.Type!@ const value )
{
@@ -375,8 +375,8 @@ void @[EMAIL PROTECTED]::@!field.InsertIntoMField!@(UInt32 uiIndex,
[EMAIL PROTECTED]@.insert(fieldIt, value);
}
- @@endif // field.generateInsertIntoMField
- @@if field.generateReplaceInMFieldIndex
+ @@endif // field.writeInsertIntoMField
+ @@if field.writeReplaceInMFieldIndex
void @[EMAIL PROTECTED]::@!field.ReplaceInMFieldIndex!@(UInt32 uiIndex,
@!field.Type!@ const value )
{
@@ -393,8 +393,8 @@ void @[EMAIL PROTECTED]::@!field.ReplaceInMFieldIndex!@(UInt32 uiIn
[EMAIL PROTECTED]@.replace(uiIndex, value);
}
- @@endif // field.generateReplaceInMFieldIndex
- @@if field.generateReplaceInMFieldObject
+ @@endif // field.writeReplaceInMFieldIndex
+ @@if field.writeReplaceInMFieldObject
void @[EMAIL PROTECTED]::@!field.ReplaceInMFieldObject!@(@!field.Type!@ const pOldElem,
@!field.Type!@ const pNewElem)
{
@@ -413,8 +413,8 @@ void @[EMAIL PROTECTED]::@!field.ReplaceInMFieldObject!@(@!field.Type!@ const pOl
}
}
- @@endif // field.generateReplaceInMFieldObject
- @@if field.generateRemoveFromMFieldIndex
+ @@endif // field.writeReplaceInMFieldObject
+ @@if field.writeRemoveFromMFieldIndex
void @[EMAIL PROTECTED]::@!field.RemoveFromMFieldIndex!@(UInt32 uiIndex)
{
if(uiIndex < [EMAIL PROTECTED]@.size())
@@ -429,8 +429,8 @@ void @[EMAIL PROTECTED]::@!field.RemoveFromMFieldIndex!@(UInt32 uiIndex)
}
}
- @@endif // field.generateRemoveFromMFieldIndex
- @@if field.generateRemoveFromMFieldObject
+ @@endif // field.writeRemoveFromMFieldIndex
+ @@if field.writeRemoveFromMFieldObject
void @[EMAIL PROTECTED]::@!field.RemoveFromMFieldObject!@(@!field.Type!@ const value)
{
Int32 iElemIdx = [EMAIL PROTECTED]@.findIndex(value);
@@ -446,8 +446,8 @@ void @[EMAIL PROTECTED]::@!field.RemoveFromMFieldObject!@(@!field.Type!@ const va
@@endif // field.isRemoveToSet
}
}
- @@endif // field.generateRemoveFromMFieldObject
- @@if field.generateClearField
+ @@endif // field.writeRemoveFromMFieldObject
+ @@if field.writeClearField
void @[EMAIL PROTECTED]::@!field.ClearField!@(void)
{
editMField(@[EMAIL PROTECTED], [EMAIL PROTECTED]@);
@@ -469,7 +469,7 @@ void @[EMAIL PROTECTED]::@!field.ClearField!@(void)
@@endif // field.doClearMField
@@endif // field.isRemoveToSet
}
- @@endif // field.generateClearField
+ @@endif // field.writeClearField
@@endif //!field.noAccess
@@endif // field.isPtrField
diff --git a/Tools/fcd2code/TemplateFieldContainerBase_h.txt b/Tools/fcd2code/TemplateFieldContainerBase_h.txt
index dcd60d0..66b004f 100644
--- a/Tools/fcd2code/TemplateFieldContainerBase_h.txt
+++ b/Tools/fcd2code/TemplateFieldContainerBase_h.txt
@@ -293,31 +293,31 @@ class @[EMAIL PROTECTED] : public @!Parent!@
@@endif
@@if field.ptrFieldCustomAccess
- @@if field.generatePushToField
+ @@if field.writePushToField
void @!field.pushToField:15!@ (@!field.Type!@ const value );
@@endif
- @@if field.generateAssignMField
+ @@if field.writeAssignMField
void @!field.AssignMField:15!@ (const @!field.TypeNamespace!@@!field.CARD!@@!field.FieldTypeCaps:15!@ &value);
@@endif
- @@if field.generateClearField
+ @@if field.writeClearField
void @!field.ClearField:15!@ (void );
@@endif
- @@if field.generateInsertIntoMField
+ @@if field.writeInsertIntoMField
void @!field.InsertIntoMField:15!@ (UInt32 uiIndex,
@!field.Type!@ const value );
@@endif
- @@if field.generateReplaceInMFieldIndex
+ @@if field.writeReplaceInMFieldIndex
void @!field.ReplaceInMFieldIndex:15!@ ( UInt32 uiIndex,
@!field.Type!@ const value );
@@endif
- @@if field.generateReplaceInMFieldObject
+ @@if field.writeReplaceInMFieldObject
void @!field.ReplaceInMFieldObject:15!@ (@!field.Type!@ const pOldElem,
@!field.Type!@ const pNewElem);
@@endif
- @@if field.generateRemoveFromMFieldIndex
+ @@if field.writeRemoveFromMFieldIndex
void @!field.RemoveFromMFieldIndex:15!@ (UInt32 uiIndex );
@@endif
- @@if field.generateRemoveFromMFieldObject
+ @@if field.writeRemoveFromMFieldObject
void @!field.RemoveFromMFieldObject:15!@(@!field.Type!@ const value );
@@endif
@@ -546,31 +546,31 @@ class @[EMAIL PROTECTED] : public @!Parent!@
@@endif
@@if field.ptrFieldCustomAccess
- @@if field.generatePushToField
+ @@if field.writePushToField
void @!field.pushToField:15!@ (@!field.Type!@ const value );
@@endif
- @@if field.generateAssignMField
+ @@if field.writeAssignMField
void @!field.AssignMField:15!@ (const @!field.TypeNamespace!@@!field.CARD!@@!field.FieldTypeCaps:15!@ &value);
@@endif
- @@if field.generateClearField
+ @@if field.writeClearField
void @!field.ClearField:15!@ (void );
@@endif
- @@if field.generateInsertIntoMField
+ @@if field.writeInsertIntoMField
void @!field.InsertIntoMField:15!@ (UInt32 uiIndex,
@!field.Type!@ const value );
@@endif
- @@if field.generateReplaceInMFieldIndex
+ @@if field.writeReplaceInMFieldIndex
void @!field.ReplaceInMFieldIndex:15!@ ( UInt32 uiIndex,
@!field.Type!@ const value );
@@endif
- @@if field.generateReplaceInMFieldObject
+ @@if field.writeReplaceInMFieldObject
void @!field.ReplaceInMFieldObject:15!@ (@!field.Type!@ const pOldElem,
@!field.Type!@ const pNewElem);
@@endif
- @@if field.generateRemoveFromMFieldIndex
+ @@if field.writeRemoveFromMFieldIndex
void @!field.RemoveFromMFieldIndex:15!@ (UInt32 uiIndex );
@@endif
- @@if field.generateRemoveFromMFieldObject
+ @@if field.writeRemoveFromMFieldObject
void @!field.RemoveFromMFieldObject:15!@(@!field.Type!@ const value );
@@endif
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Opensg-core mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-core