forked from dcariola/XCodeEditor-for-Unity
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPBXObject.cs
More file actions
132 lines (102 loc) · 2.55 KB
/
PBXObject.cs
File metadata and controls
132 lines (102 loc) · 2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace UnityEditor.SKZXCodeEditor
{
public class PBXObject
{
protected const string ISA_KEY = "isa";
//
protected string _guid;
protected PBXDictionary _data;
#region Properties
public string guid {
get {
if( string.IsNullOrEmpty( _guid ) )
_guid = GenerateGuid();
return _guid;
}
}
public PBXDictionary data {
get {
if( _data == null )
_data = new PBXDictionary();
return _data;
}
}
#endregion
#region Constructors
public PBXObject()
{
_data = new PBXDictionary();
_data[ ISA_KEY ] = this.GetType().Name;
_guid = GenerateGuid();
}
public PBXObject( string guid ) : this()
{
if( IsGuid( guid ) )
_guid = guid;
}
public PBXObject( string guid, PBXDictionary dictionary ) : this( guid )
{
if( !dictionary.ContainsKey( ISA_KEY ) || ((string)dictionary[ ISA_KEY ]).CompareTo( this.GetType().Name ) != 0 )
Debug.LogError( "PBXDictionary is not a valid ISA object" );
foreach( KeyValuePair<string, object> item in dictionary ) {
_data[ item.Key ] = item.Value;
}
}
#endregion
#region Static methods
public static bool IsGuid( string aString )
{
return System.Text.RegularExpressions.Regex.IsMatch( aString, @"^[A-F0-9]{24}$" );
}
public static string GenerateGuid()
{
return System.Guid.NewGuid().ToString("N").Substring( 8 ).ToUpper();
}
#endregion
#region Data manipulation
public void Add( string key, object obj )
{
_data.Add( key, obj );
}
public bool Remove( string key )
{
return _data.Remove( key );
}
public bool ContainsKey( string key )
{
return _data.ContainsKey( key );
}
#endregion
}
public class PBXNativeTarget : PBXObject
{
public PBXNativeTarget() : base() {
}
public PBXNativeTarget( string guid, PBXDictionary dictionary ) : base( guid, dictionary ) {
}
}
public class PBXContainerItemProxy : PBXObject
{
public PBXContainerItemProxy() : base() {
}
public PBXContainerItemProxy( string guid, PBXDictionary dictionary ) : base( guid, dictionary ) {
}
}
public class PBXReferenceProxy : PBXObject
{
public PBXReferenceProxy() : base() {
}
public PBXReferenceProxy( string guid, PBXDictionary dictionary ) : base( guid, dictionary ) {
}
}
public class PBXVariantGroup : PBXObject
{
public PBXVariantGroup() : base() {
}
public PBXVariantGroup( string guid, PBXDictionary dictionary ) : base( guid, dictionary ) {
}
}
}