# This file is part of the Coral project.
# Please read the copyright notice in the LICENSE file.

class ScopeKind(MMEnumeration):
   sk_instance=0
   sk_classifier=1
   description=["instance","classifier"]
   
class VisibilityKind(MMEnumeration):
    vk_public=0
    vk_protected=1
    vk_private=2
    vk_package=3

    description=["public","protected","private","package"]

class CallConcurrencyKind(MMEnumeration):
    cck_sequential=0
    cck_guarded=1
    cck_concurrent=2

    description=["sequential","guarded","concurrent"]
    
class PseudostateKind(MMEnumeration):
    pk_choice=0
    pk_deepHistory=1
    pk_fork=2
    pk_initial=3
    pk_join=4
    pk_junction=5
    pk_shallowHistory=6

    description=["choice","deepHistory","fork","initial",
                 "join","junction","shallowHistory"]

class AggregationKind(MMEnumeration):
    ak_none=0
    ak_aggregate=1
    ak_composite=2

    description=['none','aggregate','composite']

class ChangeableKind(MMEnumeration):
    ck_changeable=0
    ck_frozen=1
    ck_addOnly=2

    description=['changeable','frozen','addOnly']
    
class OrderingKind(MMEnumeration):
    ok_unordered=0
    ok_ordered=1

    description=['unordered','ordered']

class ParameterDirectionKind(MMEnumeration):
    pdk_in=0
    pdk_inout=1
    pdk_out=2
    pdk_return=3

    description=['in','inout','out','return']

def newMultiplicity(lower=1,upper=1):
    m=Multiplicity()
    m.addRange(MultiplicityRange(lower=lower,upper=upper))
    return m
           
