Opened 17 years ago
Last modified 6 years ago
#66 new enhancement
v.out.svg: Standardise the `type' option interpretation
Reported by: | 1gray | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | 7.6.2 |
Component: | Vector | Version: | unspecified |
Keywords: | v.out.svg | Cc: | |
CPU: | Unspecified | Platform: | Unspecified |
Description
Currently v.out.svg
interprets its type
option in a
non-standard way, namely:
- it's not allowed to specify multiple types per
v.out.svg
invocation;
- the name for the area feature type is
poly
, while it should bearea
.
- there's no way to choose only points or centroids for output, only both; similarly for lines and boundaries.
Hence, I suggest the following patch.
Since the patch breaks the compatibility with the former versions of the module, I believe it should only be considered for GRASS 7.
Attachments (2)
Change History (15)
by , 17 years ago
Attachment: | v.out.svg-standard-type.diff.gz added |
---|
by , 16 years ago
Attachment: | v.out.svg-standard-type.diff added |
---|
follow-up: 2 comment:1 by , 16 years ago
CPU: | → Unspecified |
---|---|
Platform: | → Unspecified |
Patch redone for current 6.5/7 (and uploaded uncompressed for easier review). Compiling, I get this warning:
main.c:122: warning: assignment from incompatible pointer type
follow-up: 3 comment:2 by , 16 years ago
Replying to neteler:
Patch redone for current 6.5/7 (and uploaded uncompressed for easier review). Compiling, I get this warning:
main.c:122: warning: assignment from incompatible pointer type
The ->answers field is char **
which isn't compatible with const char **
.
You can implicitly cast char *
to const char *
, but not with additional levels of indirection. In theory, a const char *
could be wider than a char *
, so you can cast these types, but not pointers to them.
char * const *
should work.
follow-up: 4 comment:3 by , 16 years ago
Replying to glynn:
Replying to neteler:
Patch redone for current 6.5/7 (and uploaded uncompressed for easier review). Compiling, I get this warning:
main.c:122: warning: assignment from incompatible pointer type
The ->answers field is
char **
which isn't compatible withconst char **
.
You can implicitly cast
char *
toconst char *
, but not with additional levels of indirection. In theory, aconst char *
could be wider than achar *
, so you can cast these types, but not pointers to them.
Is this actually permitted by some standard (either C89 or C99)?
char * const *
should work.
Do I understand it correctly that it means variable pointer to constant pointer to variable character data?
I think that the part of code in question, once extracted into a separate function, could occasionally be useful when processing constant data. And I'm quite surprised that two functions would be necessary to achieve that instead of just one.
comment:4 by , 16 years ago
Replying to 1gray:
You can implicitly cast
char *
toconst char *
, but not with additional levels of indirection. In theory, aconst char *
could be wider than achar *
, so you can cast these types, but not pointers to them.Is this actually permitted by some standard (either C89 or C99)?
Is what permitted? Implicit casts or pointer size varying depending upon whether the target is "const"? The answers are "sometimes" and "yes" respectively, for both C89 and C99.
char * const *
should work.Do I understand it correctly that it means variable pointer to constant pointer to variable character data?
Yes.
comment:5 by , 15 years ago
Component: | default → Vector |
---|---|
Keywords: | v.out.svg added |
comment:6 by , 9 years ago
Milestone: | 7.0.0 → 7.0.5 |
---|
comment:7 by , 8 years ago
Milestone: | 7.0.5 → 7.3.0 |
---|
comment:10 by , 6 years ago
Milestone: | 7.4.1 → 7.4.2 |
---|
comment:11 by , 6 years ago
Milestone: | 7.4.2 → 7.6.0 |
---|
All enhancement tickets should be assigned to 7.6 milestone.
Patch redone for current 6.5/7