Determine Go package from Clownfish parcel.
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/9bbfad46 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/9bbfad46 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/9bbfad46 Branch: refs/heads/master Commit: 9bbfad46ef61715abfe0245c5ea1fe1bf5f06a67 Parents: f26da1e Author: Marvin Humphrey <[email protected]> Authored: Sun Mar 29 15:02:38 2015 -0700 Committer: Marvin Humphrey <[email protected]> Committed: Wed May 6 14:25:26 2015 -0700 ---------------------------------------------------------------------- compiler/src/CFCGoTypeMap.c | 20 ++++++++++++++++++++ compiler/src/CFCGoTypeMap.h | 5 +++++ 2 files changed, 25 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/9bbfad46/compiler/src/CFCGoTypeMap.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCGoTypeMap.c b/compiler/src/CFCGoTypeMap.c index f5b689f..516f42b 100644 --- a/compiler/src/CFCGoTypeMap.c +++ b/compiler/src/CFCGoTypeMap.c @@ -124,3 +124,23 @@ CFCGoTypeMap_go_type_name(CFCType *type, CFCParcel *current_parcel) { return NULL; } +char* +CFCGoTypeMap_go_short_package(CFCParcel *parcel) { + // The Go short package name is the last component of the dot-separated + // Clownfish parcel name. + const char *parcel_frag = strrchr(CFCParcel_get_name(parcel), '.'); + if (parcel_frag) { + parcel_frag += 1; + } + else { + parcel_frag = CFCParcel_get_name(parcel); + } + // TODO: Don't downcase package name once caps are forbidden in Clownfish + // parcel names. + char *go_short_package = CFCUtil_strdup(parcel_frag); + for (int i = 0; go_short_package[i] != '\0'; i++) { + go_short_package[i] = tolower(go_short_package[i]); + } + return go_short_package; +} + http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/9bbfad46/compiler/src/CFCGoTypeMap.h ---------------------------------------------------------------------- diff --git a/compiler/src/CFCGoTypeMap.h b/compiler/src/CFCGoTypeMap.h index 3af6137..f0b3929 100644 --- a/compiler/src/CFCGoTypeMap.h +++ b/compiler/src/CFCGoTypeMap.h @@ -28,6 +28,11 @@ char* CFCGoTypeMap_go_type_name(struct CFCType *type, struct CFCParcel *current_parcel); +/** Return the Go package name associated with a Clownfish parcel. + */ +char* +CFCGoTypeMap_go_short_package(struct CFCParcel *parcel); + #ifdef __cplusplus } #endif
