Post-review fixes #2 (#4)
[platform/core/csapi/tizenfx.git] / src / Tizen.System.Session / Session / SessionStructs.cs
1 /*
2  * Copyright (c) 2023 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16  
17 using System;
18 using System.ComponentModel;
19 using System.Runtime.InteropServices;
20 using System.Text;
21 using Tizen.Internals;
22
23 namespace Tizen.System
24 {
25     [NativeStruct("subsession_event_info", Include="sessiond.h", PkgConfig="libsessiond")]
26     [StructLayout(LayoutKind.Explicit)]
27     internal struct SubsessionEventInfoNative
28     {
29         [FieldOffset(0)]
30         public SessionEventType eventType;
31         [FieldOffset(4)]
32         public int sessionUID;
33
34         [FieldOffset(8)]
35         public Int64 switchID;
36
37         /// The following 4 fields are here just for the record and for the NativeStruct validation
38         /// which is performed as one of the steps during build with GBS.
39         /// However, we've verified that representing the whole structure as IntPtr and accessing
40         /// individual string fields with PtrToStructure with and PtrToStringAnsi + IntPtr.Add is
41         /// the only way to make it work. That's why we do not use these fields and they shouldn't
42         /// be accessed directly.
43         [FieldOffset(8)]
44         private IntPtr AddUserPtr;
45         [FieldOffset(8)]
46         private IntPtr RemoveUserPtr;
47         [FieldOffset(16)]
48         private IntPtr PrevUserPtr;
49         [FieldOffset(36)]
50         private IntPtr NextUserPtr;
51     }
52 }