Skip to content

Specific variations of enhanced facilities not working -- output model needs revision/tweaking #146

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
dtwelch opened this issue Jan 31, 2015 · 0 comments

Comments

@dtwelch
Copy link
Contributor

dtwelch commented Jan 31, 2015

Enhancements to facilities apparently do not always need to be realized by a specific realization, but can instead be realized solely by the base concept. For instance facilities such as the following are permitted:

facility SF is StackTemplate(Integer, 4)
    enhanced by XCapability
    enhanced by YCapability
    realized by ArrayImpl

Notice that no particular implementation is given for XCapability and YCapability -- only ArrayImpl, which also realizes the base concept, StackTemplate. Right now, it seems that our code generation model for Java (and C for that matter) do not consider this possibility.

Aside from the questions of code generation, there is also the question of how implementers of ArrayImpl are to know that they also have to implement the operations specified in XCapability and YCapability... Would the header of StackTemplate communicate this via an enhanced by ... clause? If so, would this have additional ramifications for concept module code generation?

In summary, soon I'll be proposing some tweaks to our current model of output code for java first to help account for these changes. I hope our current (reflection-based) dynamic proxy approach to java facility translation will not need to change too much, though we'll see.

I guess the first step to figuring all of this out might be coming up with a working non-toy example that illustrates a facility and specification used in this way (since, afaik, we have nothing in the current workspace that looks like this).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

1 participant