Paradox Game Engine  v1.0.0 beta06
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros Pages
IDataVisitor.cs
Go to the documentation of this file.
1 // Copyright (c) 2014 Silicon Studio Corp. (http://siliconstudio.co.jp)
2 // This file is distributed under GPL v3. See LICENSE.md for details.
3 using System;
4 using System.Collections;
5 
6 namespace SiliconStudio.Core.Reflection
7 {
8  /// <summary>
9  /// Interface for visiting serializable data (binary, yaml and editor).
10  /// </summary>
11  public interface IDataVisitor
12  {
13  /// <summary>
14  /// Visits a null.
15  /// </summary>
16  void VisitNull();
17 
18  /// <summary>
19  /// Visits a primitive (int, float, string...etc.)
20  /// </summary>
21  /// <param name="primitive">The primitive.</param>
22  /// <param name="descriptor">The descriptor.</param>
23  void VisitPrimitive(object primitive, PrimitiveDescriptor descriptor);
24 
25  /// <summary>
26  /// Visits an object (either a class or a struct)
27  /// </summary>
28  /// <param name="obj">The object.</param>
29  /// <param name="descriptor">The descriptor.</param>
30  /// <param name="visitMembers"></param>
31  void VisitObject(object obj, ObjectDescriptor descriptor, bool visitMembers);
32 
33  /// <summary>
34  /// Visits an object member.
35  /// </summary>
36  /// <param name="container">The container.</param>
37  /// <param name="containerDescriptor">The container descriptor.</param>
38  /// <param name="member">The member.</param>
39  /// <param name="value">The value.</param>
40  void VisitObjectMember(object container, ObjectDescriptor containerDescriptor, IMemberDescriptor member, object value);
41 
42  /// <summary>
43  /// Visits an array.
44  /// </summary>
45  /// <param name="array">The array.</param>
46  /// <param name="descriptor">The descriptor.</param>
47  void VisitArray(Array array, ArrayDescriptor descriptor);
48 
49  /// <summary>
50  /// Visits an array item.
51  /// </summary>
52  /// <param name="array">The array.</param>
53  /// <param name="descriptor">The descriptor.</param>
54  /// <param name="index">The index.</param>
55  /// <param name="item">The item.</param>
56  /// <param name="itemDescriptor">The item descriptor.</param>
57  void VisitArrayItem(Array array, ArrayDescriptor descriptor, int index, object item, ITypeDescriptor itemDescriptor);
58 
59  /// <summary>
60  /// Visits a collection.
61  /// </summary>
62  /// <param name="collection">The collection.</param>
63  /// <param name="descriptor">The descriptor.</param>
64  void VisitCollection(IEnumerable collection, CollectionDescriptor descriptor);
65 
66  /// <summary>
67  /// Visits a collection item.
68  /// </summary>
69  /// <param name="collection">The collection.</param>
70  /// <param name="descriptor">The descriptor.</param>
71  /// <param name="index">The index.</param>
72  /// <param name="item">The item.</param>
73  /// <param name="itemDescriptor">The item descriptor.</param>
74  void VisitCollectionItem(IEnumerable collection, CollectionDescriptor descriptor, int index, object item, ITypeDescriptor itemDescriptor);
75 
76  /// <summary>
77  /// Visits a dictionary.
78  /// </summary>
79  /// <param name="dictionary">The dictionary.</param>
80  /// <param name="descriptor">The descriptor.</param>
81  void VisitDictionary(object dictionary, DictionaryDescriptor descriptor);
82 
83  /// <summary>
84  /// Visits a dictionary key-value.
85  /// </summary>
86  /// <param name="dictionary">The dictionary.</param>
87  /// <param name="descriptor">The descriptor.</param>
88  /// <param name="key">The key.</param>
89  /// <param name="keyDescriptor">The key descriptor.</param>
90  /// <param name="value">The value.</param>
91  /// <param name="valueDescriptor">The value descriptor.</param>
92  void VisitDictionaryKeyValue(object dictionary, DictionaryDescriptor descriptor, object key, ITypeDescriptor keyDescriptor, object value, ITypeDescriptor valueDescriptor);
93  }
94 }
Provides a descriptor for a System.Collections.ICollection.
Default implementation of a ITypeDescriptor.
Interface for visiting serializable data (binary, yaml and editor).
Definition: IDataVisitor.cs:11
Provides a descriptor for a System.Collections.IDictionary.
Describes a descriptor for a primitive (bool, char, sbyte, byte, int, uint, long, ulong...
Provides access members of a type.