@////////////////////////////////////////////////////////////////////////////// @// su4sml --- a SML repository for managing (Secure)UML/OCL models @// http://projects.brucker.ch/su4sml/ @// @// C#_SecureUML.tpl --- template for C# @// This file is part of su4sml. @// @// Copyright (c) 2005-2007, ETH Zurich, Switzerland @// @// All rights reserved. @// @// Redistribution and use in source and binary forms, with or without @// modification, are permitted provided that the following conditions are @// met: @// @// * Redistributions of source code must retain the above copyright @// notice, this list of conditions and the following disclaimer. @// @// * Redistributions in binary form must reproduce the above @// copyright notice, this list of conditions and the following @// disclaimer in the documentation and/or other materials provided @// with the distribution. @// @// * Neither the name of the copyright holders nor the names of its @// contributors may be used to endorse or promote products derived @// from this software without specific prior written permission. @// @// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS @// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT @// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT @// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, @// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT @// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, @// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY @// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT @// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE @// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. @/////////////////////////////////////////////////////////////////////////////// @// $Id$ @// write permissions into XML-file @openfile generated/csharp_secure/$classifier_package$.xml @nl @nl @nl@nl @foreach permission_list @nl @tab @foreach role_list @nl @tab@tab @end @foreach constraint_list @nl @tab@tab $constraint$ @end @nl @tab@tab @nl @tab @end @nl @// write C#-code @openfile generated/csharp_secure/$classifier_package$.cs // generated by su4sml GCG - Generic Code Generator @nl @nl using System; @nl using Mds; @nl @nl namespace $classifier_package$ @nl { @foreach classifier_list @nl@nl@nl @if isPrimitive @nl @tab // no support for primitive $classifier_name$ !! @nl @elsif isEnumeration @nl @tab // no support for enumeration $classifier_name$ !! @nl @else @if isClass @nl @tab class $classifier_name$ @elsif isInterface @nl @tab interface $classifier_name$ @end @if hasParent : $classifier_parent$ @end @nl @tab { @foreach attribute_list @nl @if attribute_isPublic @// PROPERTY! @nl @tab@tab private $attribute_scope$ $attribute_type$ $attribute_name_small_letter$ ; @nl @tab@tab public $attribute_scope$ $attribute_type$ $attribute_name_capital$ @nl @tab@tab { @nl @tab@tab@tab get @nl @tab@tab@tab { @foreach readPermission_list @if first_permission @nl @tab@tab@tab@tab MdsEngine.Assert(this, new string[] { @end @if last_permission "$permission_name$" }); @else "$permission_name$", @end @end @nl @tab@tab@tab@tab return $attribute_name_small_letter$; @nl @tab@tab@tab } @nl @tab@tab@tab set @nl @tab@tab@tab { @foreach updatePermission_list @if first_permission @nl @tab@tab@tab@tab MdsEngine.Assert(this, new string[] { @end @if last_permission "$permission_name$" }); @else "$permission_name$", @end @end @nl @tab@tab@tab@tab $attribute_name_small_letter$ = value ; @nl @tab@tab@tab } @nl @tab@tab } @else @nl @tab@tab $attribute_visibility$ $attribute_scope$ $attribute_type$ $attribute_name$ ; @end @end @nl @foreach operation_list @nl @tab@tab public $operation_scope$ $operation_result_type$ $operation_name$( @foreach argument_list @if last_argument $argument_type$ $argument_name$ @else $argument_type$ $argument_name$ , @end @end ) @nl @tab@tab { @foreach executePermission_list @if first_permission @nl@tab@tab@tab MdsEngine.Assert(this, new string[] { @end @if last_permission "$permission_name$" }); @else "$permission_name$", @end @end @nl @tab@tab@tab // ...toDo... @nl @tab@tab } @end @nl @// Constructor: @nl @tab@tab // Constructor @nl @tab@tab $classifier_name$() @nl @tab@tab { @foreach createPermission_list @if first_permission @nl @tab @tab @tab MdsEngine.Assert(this, new string[] { @end @if last_permission "$permission_name$" }); @else "$permission_name$", @end @end @nl @tab@tab } @nl @// Destructor: @nl @tab@tab // Destructor @nl @tab@tab ~$classifier_name$() @nl @tab@tab { @foreach deletePermission_list @if first_permission @nl @tab @tab @tab MdsEngine.Assert(this, new string[] { @end @if last_permission "$permission_name$" }); @else "$permission_name$", @end @end @nl @tab@tab } @nl @tab } @end @end @nl} @// End