mirror of
https://github.com/gnustep/libs-gsweb.git
synced 2025-02-23 11:41:20 +00:00
* GSWeb.framework/GSWWOCompatibility.h/.m: added * GSWeb.framework/GNUmakefile: added GSWWOCompatibility.h/.m * GSWeb.framework/GSWApplication.h/m: added WOApplicationMain, handle WO/GSWeb names * GSWeb.framework/GSWContext.m: handle WO/GSWeb names, added traces * GSWeb.framework/GSWConstants.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWDynamicURLString.m: handle WO/GSWeb names * GSWeb.framework/GSWProjectBundle.m/.h: handle WO/GSWeb names, suppress warnings * GSWeb.framework/GSWSession.m: handle WO/GSWeb names * GSWeb.framework/GSWRequest.m: handle WO/GSWeb names * GSWeb.framework/GSWTemplateParser.m: handle WO/GSWeb names, added tag counts to help errors hunt * GSWeb.framework/GSWBundle.m: handle WO/GSWeb names, added traces * GSWeb.framework/GSWResourceManager.m: handle WO/GSWeb names * GSWeb.framework/GSWURLValuedElementData.m: handle WO/GSWeb names * GSWeb.framework/GSWComponentRequestHandler.m: handle WO/GSWeb names * GSWeb.framework/GSWDirectAction.m: handle WO/GSWeb names * GSWeb.framework/GSWForm.m/.h: handle WO/GSWeb names * GSWeb.framework/GSWHyperlink.m/.h: handle WO/GSWeb names * GSWeb.framework/GSWResourceRequestHandler.m: handle WO/GSWeb names * GSWeb.framework/GSWDirectActionRequestHandler.m: handle WO/GSWeb names * GSWeb.framework/GSWActiveImage.m/.h: handle WO/GSWeb names * GSWeb.framework/GSWBindingNameAssociation.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWBrowser.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWComponent.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWHTMLURLValuedElement.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWImageButton.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWInput.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWPopUpButton.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWString.h/.m: handle WO/GSWeb names * GSWeb.framework/GSWAssociation.m: handle WO/GSWeb names * GSWeb.framework/GSWCheckBox.m: handle WO/GSWeb names * GSWeb.framework/GSWCheckBoxList.m: handle WO/GSWeb names * GSWeb.framework/GSWComponentDefinition.m: handle WO/GSWeb names * GSWeb.framework/GSWRadioButton.m: handle WO/GSWeb names * GSWeb.framework/GSWRadioButtonList.m: handle WO/GSWeb names * GSWeb.framework/GSWText.m: handle WO/GSWeb names * GSWeb.framework/GSWTextField.m: handle WO/GSWeb names * GSWeb.framework/GSWDeployedBundle.m: warnings * GSWeb.framework/GSWeb.h: added include GSWeb/GSWSessionTimeOut.h, GSWWOCompatibility.h * GSWeb.framework/GSWAdaptor.m: traces * GSWeb.framework/GSWDefaultAdaptor.m: handle WO/GSWeb names, added traces * GSWeb.framework/GSWDefaultAdaptorThread.m/.h: handle WO/GSWeb names * GSWeb.framework/NSNonBlockingFileHandle.m: added traces * GSWeb.framework/GSWTemplateParserANTLR.m: handle WO/GSWeb names * GSWeb.framework/GSWTemplateParserXML.m: handle WO/GSWeb names added tag count to help errors hunt remove "Tag gsweb invalid" message handle unicode strings in node content traces remove html and body tags if they are not present in the template * GSWeb.framework/GSWTemplateParseXML.h: added ivar _isHTMLTag, _isBodyTag * GSWeb.framework/GSWSessionTimeOutManager.m: dealloc sessionOrderedTimeOuts instead of deallocating 2 times sessionTimeOuts * GSWExtensions.framework/French.lproj/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html: tag mismatch, Encode french characters * GSWExtensions.framework/GSWSessionRestorationErrorPage.gswc/GSWSessionRestorationErrorPage.html: tag mismatch * GSWHTMLBareString.m: handle unicode strings in description * GSWExtensions.framework/French.lproj/GSWExceptionPage.gswc/GSWExceptionPage.html: Encode french characters, Tag Mismatch * GSWExtensions.framework/French.lproj/GSWPageRestorationErrorPage.gswc/GSWPageRestorationErrorPage.html: Encode french characters * GSWExtensions.framework/French.lproj/GSWSessionCreationErrorPage.gswc/GSWSessionCreationErrorPage.html: Encode french characters * GSWExtensions.framework/GSWExceptionPage.gswc/GSWExceptionPage.html: Tag Mismatch * GSWExtensions.framework/GSWExceptionPage.gswc/GSWExceptionPage.gswd: added convertHTMLEntities for strings * GSWeb.framework/GSWRepetition.m: added traces, fix "count" property bug, standardize ivars * GSWeb.framework/NSObject+IVarAccess+PerformSel.m: added traces, handle underscored ivars search git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gsweb/trunk@9332 72102866-910b-0410-8b05-ffd578937521
497 lines
17 KiB
Objective-C
497 lines
17 KiB
Objective-C
/* GSWRepetition.m - GSWeb: Class GSWRepetition
|
|
Copyright (C) 1999 Free Software Foundation, Inc.
|
|
|
|
Written by: Manuel Guesdon <mguesdon@sbuilders.com>
|
|
Date: Jan 1999
|
|
|
|
This file is part of the GNUstep Web Library.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public
|
|
License along with this library; if not, write to the Free
|
|
Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
static char rcsId[] = "$Id$";
|
|
|
|
#include <GSWeb/GSWeb.h>
|
|
|
|
//====================================================================
|
|
@implementation GSWRepetition
|
|
|
|
//--------------------------------------------------------------------
|
|
-(id)initWithName:(NSString*)name
|
|
associations:(NSDictionary*)associations
|
|
contentElements:(NSArray*)elements
|
|
{
|
|
//OK
|
|
LOGObjectFnStart();
|
|
if ((self=[super initWithName:name
|
|
associations:nil
|
|
template:nil]))
|
|
{
|
|
_list=[[associations objectForKey:list__Key
|
|
withDefaultObject:[_list autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"list=%@",_list);
|
|
_item=[[associations objectForKey:item__Key
|
|
withDefaultObject:[_item autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"item=%@",_item);
|
|
if (_item && ![_item isValueSettable])
|
|
{
|
|
ExceptionRaise0(@"GSWCheckBox",@"'item' parameter must be settable");
|
|
};
|
|
_identifier=[[associations objectForKey:identifier__Key
|
|
withDefaultObject:[_identifier autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"identifier=%@",_identifier);
|
|
_count=[[associations objectForKey:count__Key
|
|
withDefaultObject:[_count autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"count=%@",_count);
|
|
_index=[[associations objectForKey:index__Key
|
|
withDefaultObject:[_index autorelease]] retain];
|
|
NSDebugMLLog(@"gswdync",@"index=%@",_index);
|
|
if (_index && ![_index isValueSettable])
|
|
{
|
|
ExceptionRaise0(@"GSWCheckBox",@"'index' parameter must be settable");
|
|
};
|
|
if (elements)
|
|
{
|
|
_childrenGroup=[[GSWHTMLStaticGroup alloc]initWithContentElements:elements];
|
|
};
|
|
};
|
|
LOGObjectFnStop();
|
|
return self;
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(id)initWithName:(NSString*)name
|
|
associations:(NSDictionary*)associations
|
|
template:(GSWElement*)templateElement
|
|
{
|
|
LOGObjectFnStart();
|
|
self=[self initWithName:name
|
|
associations:associations
|
|
contentElements:templateElement ? [NSArray arrayWithObject:templateElement] : nil];
|
|
LOGObjectFnStop();
|
|
return self;
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)dealloc
|
|
{
|
|
DESTROY(_list);
|
|
DESTROY(_item);
|
|
DESTROY(_identifier);
|
|
DESTROY(_count);
|
|
DESTROY(_index);
|
|
DESTROY(_childrenGroup);
|
|
[super dealloc];
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
-(NSString*)description
|
|
{
|
|
return [NSString stringWithFormat:@"<%s %p>",
|
|
object_get_class_name(self),
|
|
(void*)self];
|
|
};
|
|
|
|
//====================================================================
|
|
@implementation GSWRepetition (GSWRepetitionA)
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)appendToResponse:(GSWResponse*)response
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
GSWComponent* component=nil;
|
|
NSArray* listValue=nil;
|
|
int i=0;
|
|
int countValue=0;
|
|
#ifndef NDEBBUG
|
|
int elementsNb=[(GSWElementIDString*)[context elementID]elementsNb];
|
|
#endif
|
|
LOGObjectFnStart();
|
|
NSDebugMLLog(@"gswdync",@"ET=%@ id=%@",[self class],[context elementID]);
|
|
component=[context component];
|
|
if (_list)
|
|
{
|
|
listValue=[_list valueInComponent:component];
|
|
NSAssert2(!listValue || [listValue respondsToSelector:@selector(count)],
|
|
@"The list (%@) (of class:%@) doesn't respond to 'count'",
|
|
_list,
|
|
[listValue class]);
|
|
countValue=[listValue count];
|
|
};
|
|
if (_count)
|
|
{
|
|
id tmpCountValue=[_count valueInComponent:component];
|
|
int tmpCount=0;
|
|
NSAssert3(!tmpCountValue || [tmpCountValue respondsToSelector:@selector(intValue)],
|
|
@"The 'count' (%@) value %@ (of class:%@) doesn't respond to 'intValue'",
|
|
_count,
|
|
tmpCountValue,
|
|
[tmpCountValue class]);
|
|
tmpCount=[tmpCountValue intValue];
|
|
NSDebugMLog(@"tmpCount=%d",tmpCount);
|
|
if (_list)
|
|
countValue=min(tmpCount,countValue);
|
|
else
|
|
countValue=tmpCount;
|
|
};
|
|
|
|
NSDebugMLLog(@"gswdync",@"countValue=%d",countValue);
|
|
for(i=0;i<countValue;i++)
|
|
{
|
|
#ifndef NDEBUG
|
|
GSWElementIDString* debugElementID=[context elementID];
|
|
#endif
|
|
[self startOneIterationWithIndex:i
|
|
list:listValue
|
|
inContext:context];
|
|
[context appendZeroElementIDComponent];
|
|
[_childrenGroup appendToResponse:response
|
|
inContext:context];
|
|
[context deleteLastElementIDComponent];
|
|
[self stopOneIterationWithIndex:i
|
|
count:countValue
|
|
isLastOne:NO
|
|
inContext:context];
|
|
#ifndef NDEBUG
|
|
if (![debugElementID isEqualToString:[context elementID]])
|
|
{
|
|
NSDebugMLLog(@"gswdync",@"class=%@ debugElementID=%@ [context elementID]=%@",[self class],debugElementID,[context elementID]);
|
|
|
|
};
|
|
#endif
|
|
};
|
|
NSDebugMLLog(@"gswdync",@"END ET=%@ id=%@",[self class],[context elementID]);
|
|
#ifndef NDEBBUG
|
|
NSAssert(elementsNb==[(GSWElementIDString*)[context elementID]elementsNb],@"GSWRepetion appendToResponse: bad elementID");
|
|
#endif
|
|
LOGObjectFnStop();
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(GSWElement*)invokeActionForRequest:(GSWRequest*)request
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
GSWElement* element=nil;
|
|
BOOL isInForm=NO;
|
|
#ifndef NDEBBUG
|
|
int elementsNb=[(GSWElementIDString*)[context elementID]elementsNb];
|
|
#endif
|
|
LOGObjectFnStart();
|
|
NSDebugMLLog(@"gswdync",@"ET=%@ id=%@",[self class],[context elementID]);
|
|
isInForm=[context isInForm];
|
|
NSDebugMLLog(@"gswdync",@"isInForm=%s",isInForm ? "YES" : "NO");
|
|
if (isInForm)
|
|
element=[self _slowInvokeActionForRequest:request
|
|
inContext:context];
|
|
else
|
|
element=[self _fastInvokeActionForRequest:request
|
|
inContext:context];
|
|
NSDebugMLLog(@"gswdync",@"element=%@",element);
|
|
NSDebugMLLog(@"gswdync",@"END ET=%@ id=%@",[self class],[context elementID]);
|
|
#ifndef NDEBBUG
|
|
NSAssert(elementsNb==[(GSWElementIDString*)[context elementID]elementsNb],@"GSWRepetion invokeActionForRequest: bad elementID");
|
|
#endif
|
|
LOGObjectFnStop();
|
|
return element;
|
|
};
|
|
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)takeValuesFromRequest:(GSWRequest*)request
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
GSWComponent* component=nil;
|
|
NSArray* listValue=nil;
|
|
int i=0;
|
|
int countValue=0;
|
|
#ifndef NDEBBUG
|
|
int elementsNb=[(GSWElementIDString*)[context elementID]elementsNb];
|
|
#endif
|
|
LOGObjectFnStart();
|
|
NSDebugMLLog(@"gswdync",@"ET=%@ id=%@",[self class],[context elementID]);
|
|
component=[context component];
|
|
if (_list)
|
|
{
|
|
listValue=[_list valueInComponent:component];
|
|
NSAssert2(!listValue || [listValue respondsToSelector:@selector(count)],
|
|
@"The list (%@) (of class:%@) doesn't respond to 'count'",
|
|
_list,
|
|
[listValue class]);
|
|
countValue=[listValue count];
|
|
};
|
|
if (_count)
|
|
{
|
|
id tmpCountValue=[_count valueInComponent:component];
|
|
int tmpCount=0;
|
|
NSAssert2(!tmpCountValue || [tmpCountValue respondsToSelector:@selector(intValue)],
|
|
@"The 'count' (%@) (of class:%@) doesn't respond to 'intValue'",
|
|
_count,
|
|
[tmpCountValue class]);
|
|
tmpCount=[tmpCountValue intValue];
|
|
if (_list)
|
|
countValue=min(tmpCount,countValue);
|
|
else
|
|
countValue=tmpCount;
|
|
};
|
|
for(i=0;i<countValue;i++)
|
|
{
|
|
#ifndef NDEBUG
|
|
GSWElementIDString* debugElementID=[context elementID];
|
|
#endif
|
|
[self startOneIterationWithIndex:i
|
|
list:listValue
|
|
inContext:context];
|
|
[context appendZeroElementIDComponent];
|
|
[_childrenGroup takeValuesFromRequest:request
|
|
inContext:context];
|
|
[context deleteLastElementIDComponent];
|
|
[self stopOneIterationWithIndex:i
|
|
count:countValue
|
|
isLastOne:NO
|
|
inContext:context];
|
|
#ifndef NDEBUG
|
|
if (![debugElementID isEqualToString:[context elementID]])
|
|
{
|
|
NSDebugMLLog(@"gswdync",@"class=%@ debugElementID=%@ [context elementID]=%@",[self class],debugElementID,[context elementID]);
|
|
|
|
};
|
|
#endif
|
|
};
|
|
NSDebugMLLog(@"gswdync",@"END ET=%@ id=%@",[self class],[context elementID]);
|
|
#ifndef NDEBBUG
|
|
NSAssert(elementsNb==[(GSWElementIDString*)[context elementID]elementsNb],@"GSWRepetion takeValuesFromRequest: bad elementID");
|
|
#endif
|
|
LOGObjectFnStop();
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(GSWElement*)_slowInvokeActionForRequest:(GSWRequest*)request
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
GSWElement* element=nil;
|
|
GSWComponent* component=nil;
|
|
NSArray* listValue=nil;
|
|
int i=0;
|
|
int countValue=0;
|
|
#ifndef NDEBBUG
|
|
int elementsNb=[(GSWElementIDString*)[context elementID]elementsNb];
|
|
#endif
|
|
LOGObjectFnStart();
|
|
NSDebugMLLog(@"gswdync",@"ET=%@ id=%@",[self class],[context elementID]);
|
|
component=[context component];
|
|
if (_list)
|
|
{
|
|
listValue=[_list valueInComponent:component];
|
|
NSAssert2(!listValue || [listValue respondsToSelector:@selector(count)],
|
|
@"The list (%@) (of class:%@) doesn't respond to 'count'",
|
|
_list,
|
|
[listValue class]);
|
|
countValue=[listValue count];
|
|
};
|
|
if (_count)
|
|
{
|
|
id tmpCountValue=[_count valueInComponent:component];
|
|
int tmpCount=0;
|
|
NSAssert2(!tmpCountValue || [tmpCountValue respondsToSelector:@selector(intValue)],
|
|
@"The 'count' (%@) (of class:%@) doesn't respond to 'intValue'",
|
|
_count,
|
|
[tmpCountValue class]);
|
|
tmpCount=[tmpCountValue intValue];
|
|
if (_list)
|
|
countValue=min(tmpCount,countValue);
|
|
else
|
|
countValue=tmpCount;
|
|
};
|
|
for(i=0;!element && i<countValue;i++)
|
|
{
|
|
#ifndef NDEBUG
|
|
GSWElementIDString* debugElementID=[context elementID];
|
|
#endif
|
|
[self startOneIterationWithIndex:i
|
|
list:listValue
|
|
inContext:context];
|
|
[context appendZeroElementIDComponent];
|
|
element=[_childrenGroup invokeActionForRequest:request
|
|
inContext:context];
|
|
[context deleteLastElementIDComponent];
|
|
[self stopOneIterationWithIndex:i
|
|
count:countValue
|
|
isLastOne:(element!=nil)
|
|
inContext:context];
|
|
#ifndef NDEBUG
|
|
if (![debugElementID isEqualToString:[context elementID]])
|
|
{
|
|
NSDebugMLLog(@"gswdync",@"class=%@ debugElementID=%@ [context elementID]=%@",[self class],debugElementID,[context elementID]);
|
|
};
|
|
#endif
|
|
};
|
|
NSDebugMLLog(@"gswdync",@"END ET=%@ id=%@",[self class],[context elementID]);
|
|
#ifndef NDEBBUG
|
|
NSAssert(elementsNb==[(GSWElementIDString*)[context elementID]elementsNb],@"GSWRepetion _slowInvokeActionForRequest: bad elementID");
|
|
#endif
|
|
LOGObjectFnStop();
|
|
return element;
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(GSWElement*)_fastInvokeActionForRequest:(GSWRequest*)request
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
GSWElement* element=nil;
|
|
NSString* senderID=nil;
|
|
NSString* elementID=nil;
|
|
#ifndef NDEBBUG
|
|
int elementsNb=[(GSWElementIDString*)[context elementID]elementsNb];
|
|
#endif
|
|
LOGObjectFnStart();
|
|
NSDebugMLLog(@"gswdync",@"ET=%@ id=%@",[self class],[context elementID]);
|
|
senderID=[context senderID];
|
|
NSDebugMLLog(@"gswdync",@"senderID=%@",senderID);
|
|
elementID=[context elementID];
|
|
NSDebugMLLog(@"gswdync",@"elementID=%@",elementID);
|
|
if ([senderID hasPrefix:elementID])
|
|
{
|
|
#ifndef NDEBUG
|
|
GSWElementIDString* debugElementID=[context elementID];
|
|
#endif
|
|
int countValue=0;
|
|
NSArray* listValue=nil;
|
|
int i=0;
|
|
GSWComponent* component=[context component];
|
|
if (_list)
|
|
{
|
|
listValue=[_list valueInComponent:component];
|
|
NSAssert2(!listValue || [listValue respondsToSelector:@selector(count)],
|
|
@"The list (%@) (of class:%@) doesn't respond to 'count'",
|
|
_list,
|
|
[listValue class]);
|
|
countValue=[listValue count];
|
|
};
|
|
if (_count)
|
|
{
|
|
id tmpCountValue=[_count valueInComponent:component];
|
|
int tmpCount=0;
|
|
NSAssert2(!tmpCountValue || [tmpCountValue respondsToSelector:@selector(intValue)],
|
|
@"The 'count' (%@) (of class:%@) doesn't respond to 'intValue'",
|
|
_count,
|
|
[tmpCountValue class]);
|
|
tmpCount=[tmpCountValue intValue];
|
|
if (_list)
|
|
countValue=min(tmpCount,countValue);
|
|
else
|
|
countValue=tmpCount;
|
|
};
|
|
for(i=0;!element && i<countValue;i++)
|
|
{
|
|
[self startOneIterationWithIndex:i
|
|
list:listValue
|
|
inContext:context];
|
|
[context appendZeroElementIDComponent];
|
|
element=[_childrenGroup invokeActionForRequest:request
|
|
inContext:context];
|
|
NSDebugMLLog(@"gswdync",@"element=%@",element);
|
|
[context deleteLastElementIDComponent];
|
|
[self stopOneIterationWithIndex:i
|
|
count:countValue
|
|
isLastOne:(element!=nil)
|
|
inContext:context];
|
|
#ifndef NDEBUG
|
|
if (![debugElementID isEqualToString:[context elementID]])
|
|
{
|
|
NSDebugMLLog(@"gswdync",@"class=%@ debugElementID=%@ [context elementID]=%@",[self class],debugElementID,[context elementID]);
|
|
};
|
|
#endif
|
|
};
|
|
};
|
|
NSDebugMLLog(@"gswdync",@"element=%@",element);
|
|
NSDebugMLLog(@"gswdync",@"END ET=%@ id=%@",[self class],[context elementID]);
|
|
#ifndef NDEBBUG
|
|
NSAssert(elementsNb==[(GSWElementIDString*)[context elementID]elementsNb],@"GSWRepetion _fastInvokeActionForRequest: bad elementID");
|
|
#endif
|
|
LOGObjectFnStop();
|
|
return element;
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)stopOneIterationWithIndex:(int)currentIndex
|
|
count:(int)count
|
|
isLastOne:(BOOL)isLastOne
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
LOGObjectFnStart();
|
|
if (currentIndex==(count-1) || isLastOne)
|
|
{
|
|
NS_DURING
|
|
{
|
|
GSWComponent* component=[context component];
|
|
if (_list && _item)
|
|
[_item setValue:nil //??
|
|
inComponent:component];
|
|
if (_index)
|
|
[_index setValue:[NSNumber numberWithShort:0]
|
|
inComponent:component];
|
|
[context deleteLastElementIDComponent];
|
|
}
|
|
NS_HANDLER
|
|
{
|
|
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,@"In stopOneIterationWithIndex");
|
|
[localException raise];
|
|
}
|
|
NS_ENDHANDLER;
|
|
};
|
|
LOGObjectFnStop();
|
|
};
|
|
|
|
//--------------------------------------------------------------------
|
|
-(void)startOneIterationWithIndex:(unsigned int)currentIndex
|
|
list:(NSArray*)list
|
|
inContext:(GSWContext*)context
|
|
{
|
|
//OK
|
|
GSWComponent* component=nil;
|
|
LOGObjectFnStart();
|
|
NS_DURING
|
|
{
|
|
component=[context component];
|
|
NSDebugMLLog(@"gswdync",@"_item=%@",_item);
|
|
if (_list && _item)
|
|
[_item setValue:[list objectAtIndex:currentIndex]
|
|
inComponent:component];
|
|
NSDebugMLLog(@"gswdync",@"currentIndex=%d",currentIndex);
|
|
NSDebugMLLog(@"gswdync",@"_index=%@",_index);
|
|
if (_index)
|
|
[_index setValue:[NSNumber numberWithShort:currentIndex]
|
|
inComponent:component];
|
|
if (currentIndex==0)
|
|
[context appendZeroElementIDComponent];
|
|
else
|
|
[context incrementLastElementIDComponent];
|
|
}
|
|
NS_HANDLER
|
|
{
|
|
localException=ExceptionByAddingUserInfoObjectFrameInfo0(localException,@"In startOneIterationWithIndex");
|
|
[localException raise];
|
|
}
|
|
NS_ENDHANDLER;
|
|
LOGObjectFnStop();
|
|
};
|
|
|
|
@end
|