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); |
} |
} |