Diff for /Amaya/amaya/templateInstantiate.c between versions 1.18 and 1.19

version 1.18, 2007/01/29 11:17:16 version 1.19, 2007/01/30 13:35:57
Line 1 Line 1
   /*
    *
    *  COPYRIGHT INRIA and W3C, 2006-2007
    *  Please first read the full copyright statement in file COPYRIGHT.
    *
    */
   
 #include "templates.h"  #include "templates.h"
   
 #define THOT_EXPORT extern  #define THOT_EXPORT extern
Line 332  Element Template_GetNewXmlElementInstanc Line 339  Element Template_GetNewXmlElementInstanc
 }  }
   
 /*----------------------------------------------------------------------  /*----------------------------------------------------------------------
   Template_GetNewComponentInstance  
   Create an new instance of xt:use/Component  
   The decl attribute must embed Component declaration (no validation).  
   The returned element is the xt:use of the element.  
   @param decl Declaration of new element  
   @param parent Future parent element  
   @param doc Document  
   @return The new element  
   ----------------------------------------------------------------------*/  
 Element Template_GetNewComponentInstance(Document doc, Element parent, Declaration decl)  
 {  
   Element           newEl = NULL;  
 #ifdef TEMPLATES  
   newEl = TtaCopyTree(decl->componentType.content, doc, doc, parent);  
   ProcessAttr(decl->declaredIn, newEl, doc);  
 #endif /* TEMPLATES */  
   return newEl;  
 }  
   
   
 /*----------------------------------------------------------------------  
   Template_InsertUseChildren    Template_InsertUseChildren
   Insert children to a xt:use    Insert children to a xt:use
   The dec parameter must be valid and will not be verified. It must be a    The dec parameter must be valid and will not be verified. It must be a
Line 363  Element Template_GetNewComponentInstance Line 349  Element Template_GetNewComponentInstance
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 Element Template_InsertUseChildren(Document doc, Element el, Declaration dec)  Element Template_InsertUseChildren(Document doc, Element el, Declaration dec)
 {  {
   Element newEl   = NULL;    Element     newEl   = NULL;
 #ifdef TEMPLATES  #ifdef TEMPLATES
   Element current = NULL;    Element     current = NULL;
   Element child   = NULL;    Element     child   = NULL;
   char*     attrCurrentTypeValue;    //char       *attrCurrentTypeValue;
   ElementType elType;    //ElementType elType;
       
   switch (dec->nature)    switch (dec->nature)
   {    {
     case SimpleTypeNat:      case SimpleTypeNat:
       newEl = Template_GetNewSimpleTypeInstance(doc, el, dec);        newEl = Template_GetNewSimpleTypeInstance(doc, el, dec);
       TtaInsertFirstChild(&newEl, el, doc);        TtaInsertFirstChild (&newEl, el, doc);
       break;        break;
     case XmlElementNat:      case XmlElementNat:
       newEl = Template_GetNewXmlElementInstance(doc, el, dec);        newEl = Template_GetNewXmlElementInstance(doc, el, dec);
       TtaInsertFirstChild(&newEl, el, doc);        TtaInsertFirstChild (&newEl, el, doc);
       break;        break;
     case ComponentNat:      case ComponentNat:
       newEl = Template_GetNewComponentInstance(doc, el, dec);        newEl = TtaCopyTree(dec->componentType.content, doc, doc, el);
         ProcessAttr (dec->declaredIn, newEl, doc);
               
       /* Copy elements from new use to existing use. */        /* Copy elements from new use to existing use. */
       while((child = TtaGetFirstChild(newEl)))        while((child = TtaGetFirstChild(newEl)))
       {        {
         TtaRemoveTree(child, doc);          TtaRemoveTree (child, doc);
         if(current)          if(current)
         {            TtaInsertSibling (child, current, FALSE, doc);
           TtaInsertSibling(child, current, FALSE, doc);  
         }  
         else          else
         {            TtaInsertFirstChild (&child, el, doc);      
           TtaInsertFirstChild(&child, el, doc);        
         }  
         current = child;           current = child; 
       }        }
               
       /* Copy currentType attribute. */        /* Copy currentType attribute. */
       attrCurrentTypeValue = GetAttributeStringValueFromNum(newEl, Template_ATTR_currentType, NULL);        //attrCurrentTypeValue = GetAttributeStringValue (el, Template_ATTR_currentType, NULL);
       if(attrCurrentTypeValue)        //SetAttributeStringValue (el, Template_ATTR_currentType, attrCurrentTypeValue);
       {  
         SetAttributeStringValue(el, Template_ATTR_currentType, attrCurrentTypeValue);  
         TtaFreeMemory(attrCurrentTypeValue);  
       }  
       TtaDeleteTree(newEl, doc);        TtaDeleteTree(newEl, doc);
       newEl = el;        newEl = el;
       break;        break;

Removed from v.1.18  
changed lines
  Added in v.1.19


Webmaster