Diff for /Amaya/amaya/insertelem.c between versions 1.15 and 1.16

version 1.15, 2007/05/02 14:04:28 version 1.16, 2007/05/10 09:20:25
Line 196  static void FillUnionResolvedPossibleEle Line 196  static void FillUnionResolvedPossibleEle
   FillInsertableElementFromElemAttribute    FillInsertableElementFromElemAttribute
   Fill an element list with all possible elements from an attribute list.    Fill an element list with all possible elements from an attribute list.
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 static void FillInsertableElementFromElemAttribute(XTigerTemplate t,  static void FillInsertableElementFromElemAttribute (XTigerTemplate t,
                                                    Element elem, Element refelem,                                                      Element elem, Element refelem,
                                                    int attrib, DLList list, int level)                                                      int attrib, DLList list, int level)
 {  {
   ElementType     type = TtaGetElementType(elem);    ElementType     type = TtaGetElementType(elem);
   AttributeType   attributeType = {type.ElSSchema, attrib};    AttributeType   attributeType = {type.ElSSchema, attrib};
Line 230  static void FillInsertableElementFromEle Line 230  static void FillInsertableElementFromEle
   Fill an element list with all insertable elements (base element or    Fill an element list with all insertable elements (base element or
   XTiger comonent).    XTiger comonent).
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 static void FillInsertableElemList(Document doc, Element elem, DLList list)  static void FillInsertableElemList (Document doc, Element elem, DLList list)
 {  {
   ElementType      type;    ElementType      type;
   Element          parent;    Element          parent;
Line 327  static void FillInsertableElemList(Docum Line 327  static void FillInsertableElemList(Docum
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 DLList InsertableElement_GetList(Document doc)  DLList InsertableElement_GetList(Document doc)
 {  {
   InsertableElementList list = (InsertableElementList) HashMap_Get(InsertableElementMap,    InsertableElementList list;
                                                                    (void*)doc);  
     list = (InsertableElementList) HashMap_Get(InsertableElementMap, (void*)doc);
   if (list)    if (list)
     return list->list;      return list->list;
   else    else
Line 346  DLList InsertableElement_GetList(Documen Line 347  DLList InsertableElement_GetList(Documen
 DLList InsertableElement_Update(Document doc, Element el)  DLList InsertableElement_Update(Document doc, Element el)
 {  {
   InsertableElementList list;    InsertableElementList list;
   if (doc==0)  
     doc= TtaGetDocument(el);    if (doc == 0)
   list = (InsertableElementList) HashMap_Get(InsertableElementMap, (void*)doc);      doc= TtaGetDocument (el);
   if (list==NULL)    list = (InsertableElementList) HashMap_Get (InsertableElementMap, (void*)doc);
     if (list == NULL)
   {    {
     list = InsertableElementList_Create(0, DLList_Create());      list = InsertableElementList_Create (0, DLList_Create());
     HashMap_Set(InsertableElementMap, (void*)doc, list);      HashMap_Set (InsertableElementMap, (void*)doc, list);
   }    }
       
   DLList_Empty(list->list);    DLList_Empty (list->list);
   FillInsertableElemList(doc, el, list->list);    FillInsertableElemList (doc, el, list->list);
   list->elem = el;    list->elem = el;
   
   return list->list;    return list->list;
Line 367  DLList InsertableElement_Update(Document Line 369  DLList InsertableElement_Update(Document
   Insert the specified element.    Insert the specified element.
   @param el Element to insert (ElemListElement)    @param el Element to insert (ElemListElement)
   ----------------------------------------------------------------------*/    ----------------------------------------------------------------------*/
 void InsertableElement_DoInsertElement(void* el)  void InsertableElement_DoInsertElement (void* el)
 {  {
   ElemListElement elem = (ElemListElement)el;    ElemListElement elem = (ElemListElement) el;
   Element ref = elem->refElem;    Element         ref = elem->refElem;
   ElementType refType = TtaGetElementType(ref);    ElementType     refType = TtaGetElementType (ref);
   Document doc = TtaGetDocument(ref);    Document        doc = TtaGetDocument (ref);
   Element   newEl = NULL;    Element         newEl = NULL;
   SSchema   templateSSchema;    SSchema         templateSSchema;
   
 #ifdef AMAYA_DEBUG  #ifdef AMAYA_DEBUG
   printf("insert %s into %s\n", ElemListElement_GetName(elem),    printf("insert %s into %s\n", ElemListElement_GetName(elem),
          TtaGetElementTypeName(refType));           TtaGetElementTypeName (refType));
 #endif /* AMAYA_DEBUG */  #endif /* AMAYA_DEBUG */
   
 #ifdef TEMPLATES  #ifdef TEMPLATES
   templateSSchema = TtaGetSSchema("Template", doc);    templateSSchema = TtaGetSSchema ("Template", doc);
   if(templateSSchema && refType.ElSSchema==templateSSchema)    if (templateSSchema && refType.ElSSchema == templateSSchema)
   {    {
     switch(refType.ElTypeNum)      switch(refType.ElTypeNum)
     {      {
       case Template_EL_repeat:        case Template_EL_repeat:
         if (elem->typeClass==DefinedComponent)          if (elem->typeClass==DefinedComponent)
           newEl = Template_InsertRepeatChild(doc, ref,            newEl = Template_InsertRepeatChild (doc, ref,
                                              (Declaration)elem->elem.component.declaration,                                                (Declaration)elem->elem.component.declaration,
                                              -1);                                                -1);
         break;          break;
       case Template_EL_bag:        case Template_EL_bag:
         newEl = Template_InsertBagChild(doc, ref,          newEl = Template_InsertBagChild (doc, ref,
                                         (Declaration)elem->elem.component.declaration);                                           (Declaration)elem->elem.component.declaration);
         break;          break;
       default:        default:
         break;          break;
Line 404  void InsertableElement_DoInsertElement(v Line 406  void InsertableElement_DoInsertElement(v
 #endif /* TEMPLATES */  #endif /* TEMPLATES */
   
   if (newEl)    if (newEl)
     TtaSelectElement(doc, newEl);      TtaSelectElement (doc, newEl);
 }  }

Removed from v.1.15  
changed lines
  Added in v.1.16


Webmaster