forked from zer0th82/XcodeEditor
-
Notifications
You must be signed in to change notification settings - Fork 1
/
PBXObject.cs
160 lines (130 loc) · 3.32 KB
/
PBXObject.cs
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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace UnityEditor.XCodeEditor
{
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 )
{
// Debug.Log( "constructor parent " + this.GetType().Name );
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
// class PBXObject(PBXDict):
// def __init__(self, d=None):
// PBXDict.__init__(self, d)
//
// if not self.has_key('isa'):
// self['isa'] = self.__class__.__name__
// self.id = None
//
// @staticmethod
// def Convert(o):
// if isinstance(o, list):
// return PBXList(o)
// elif isinstance(o, dict):
// isa = o.get('isa')
//
// if not isa:
// return PBXDict(o)
//
// cls = globals().get(isa)
//
// if cls and issubclass(cls, PBXObject):
// return cls(o)
//
// print 'warning: unknown PBX type: %s' % isa
// return PBXDict(o)
// else:
// return o
}
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 ) {
}
}
}