1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
16 intrude import standard
::kernel
17 private import standard
::string
31 fun err: Int is extern `{ return 1; `}
33 fun errno
: Int is extern `{
37 fun errnoooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
: Int is extern `{ return errno; `}
42 fun baz( msg : String ) import String.length, String.to_cstring, my_attr, my_attr= `{
46 /* String_to_cstring isa a allback to msg
.to_cstring
*/
47 c_msg
= String_to_cstring( msg
);
49 /* String_length is a callback to msg
.length
*/
50 msg_len
= String_length( msg
);
52 printf
( "received msg: %s, of length = %d\n", c_msg
, msg_len
);
54 /* A_my_attr is a callback to the getter of
self.my_attr
*/
55 printf
( "old attr %d\n", A_my_attr(recv
) );
62 /* A_my_attr is a callback to the setter of
self.my_attr
= */
63 A_my_attr__assign( recv
, msg_len
);
67 extern class TimeT `{time_t`}
68 new `{ return time(NULL); `}
69 new from_i(i: Int) `{ return i; `}
71 fun update
`{ time(&recv); `}
73 fun ctime: String import NativeString.to_s_with_copy `{
74 return NativeString_to_s_with_copy( ctime
(&recv
) );
77 # Difference in secondes from start (self if the end time)
78 fun difftime(start: TimeT): Float `{ return difftime(recv, start); `}
80 private fun intern_poll
(in_fds
: Array[Int], out_fds
: Array[Int]) : nullable Int is extern import Array[Int].length
, Array[Int].[], Int.as(nullable Int) `{`}
83 fun address_is_null: Bool is extern "address_is_null"
85 fun free `{ free(recv); `}