Opened 18 years ago

Last modified 14 years ago

#1794 closed defect

mapObj.nextLabel() can be used only once — at Version 5

Reported by: eugoss@… Owned by: dmorissette
Priority: high Milestone: 6.0 release
Component: Documentation - MapServer Version: 4.8
Severity: normal Keywords:
Cc: dmorissette, jmckenna

Description (last modified by dmorissette)

As mapObj.nextLabel() contains a static variable in its body (see below), it cannot be invoked several times to retrieve labelCacheMemberObj objects of a map. And due to the same reason, it cannot be used in multithreaded environment.

Is it possible to implement something like labelCacheObj.getLabel(index) to access labelCacheMemberObj objects through mapObj.labelcache or modify nextLabel() to allow at least to reset an index in it?

By the way, there is already labelCacheObj.labels holding all labelCacheMemberObj objects. It could be nice to have a couple of set/get for it.

// nextLabel() in question
static labelCacheMemberObj *nextLabel(mapObj *self) {
    static int i = 0;
    if (i < self->labelcache.numlabels)
        return &(self->labelcache.labels[i++]);
    else
        return NULL;
}

Change History (6)

by eugoss@…, 18 years ago

Attachment: map.i.diff added

mapscript/swiginc/map.i

comment:1 by sdlime, 18 years ago

Status: newassigned

comment:2 by sdlime, 18 years ago

Cc: assefa@… added
This is a reasonable solution. I'll patch Swig/MapScript and have CC'd Assefa 
for PHP...

Steve

comment:3 by eugoss@…, 18 years ago

Thank you very much.

comment:4 by sdlime, 18 years ago

Component: MapScript-SWIGMapScript-PHP
Owner: changed from sdlime to mapserverbugs
Status: assignednew
This has been committed to CVS head so SWIG/MapScript is ok now. Re-assigning to
PHP/MapScript component.

Steve

comment:5 by dmorissette, 17 years ago

Description: modified (diff)
Milestone: 5.0 release
Owner: changed from mapserverbugs to dmorissette

I'll take this bug. The issue of nextLabel() vs getlabel(i) has come up again while working on the label priority (RFC-27).

Note: See TracTickets for help on using tickets.