source: mainline/uspace/dist/sysel/property.sy@ 6ba20a6b

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 6ba20a6b was 6ba20a6b, checked in by Jiri Svoboda <jiri@…>, 16 years ago

Add new property demo from sysel repo.

  • Property mode set to 100644
File size: 2.7 KB
Line 
1--
2-- Copyright (c) 2010 Jiri Svoboda
3-- All rights reserved.
4--
5-- Redistribution and use in source and binary forms, with or without
6-- modification, are permitted provided that the following conditions
7-- are met:
8--
9-- o Redistributions of source code must retain the above copyright
10-- notice, this list of conditions and the following disclaimer.
11-- o Redistributions in binary form must reproduce the above copyright
12-- notice, this list of conditions and the following disclaimer in the
13-- documentation and/or other materials provided with the distribution.
14-- o The name of the author may not be used to endorse or promote products
15-- derived from this software without specific prior written permission.
16--
17-- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18-- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19-- OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20-- IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21-- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22-- NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23-- DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24-- THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25-- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26-- THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27--
28
29class A is
30 var x : int;
31
32 -- Example of a named property
33 prop X : int is
34 get is
35 Builtin.WriteLine("Getting value of X which is");
36 Builtin.WriteLine(x);
37 return x;
38 end
39
40 set value is
41 Builtin.WriteLine("Setting value of X to");
42 Builtin.WriteLine(value);
43 x = value;
44 end
45 end
46
47 -- Backing store for indexed properties
48 var iprops : int[];
49
50 -- Example of an indexed property set (i.e. an indexer)
51 prop self[index : int] : int is
52 get is
53 Builtin.WriteLine("Getting property with index ");
54 Builtin.WriteLine(index);
55 Builtin.WriteLine("which is");
56 Builtin.WriteLine(iprops[index]);
57
58 return iprops[index];
59 end
60
61 set value is
62 Builtin.WriteLine("Setting property with index ");
63 Builtin.WriteLine(index);
64 Builtin.WriteLine("to");
65 Builtin.WriteLine(value);
66
67 iprops[index] = value;
68 end
69 end
70end
71
72class PropertyDemo is
73 fun Main() is
74 var a : A;
75 var i : int;
76
77 a = new A();
78
79 -- Get value of named property.
80 a.X = 1;
81
82 -- Set value of named property.
83 i = a.X;
84
85 Builtin.WriteLine("Main(): Got ");
86 Builtin.WriteLine(i);
87
88 a.iprops = new int[5];
89
90 -- Set value of indexed property.
91 a[1] = 2;
92
93 -- Get value of indexed property.
94 i = a[1];
95
96 Builtin.WriteLine("Main(): Got ");
97 Builtin.WriteLine(i);
98 end
99end
Note: See TracBrowser for help on using the repository browser.