forked from uzzu/XcodeEditor
-
Notifications
You must be signed in to change notification settings - Fork 1
/
PBXBuildFile.cs
126 lines (108 loc) · 3.18 KB
/
PBXBuildFile.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
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace UnityEditor.XCodeEditor
{
public class PBXBuildFile : PBXObject
{
private const string FILE_REF_KEY = "fileRef";
private const string SETTINGS_KEY = "settings";
private const string ATTRIBUTES_KEY = "ATTRIBUTES";
private const string WEAK_VALUE = "Weak";
private const string COMPILER_FLAGS_KEY = "COMPILER_FLAGS";
public PBXBuildFile( PBXFileReference fileRef, bool weak = false ) : base()
{
this.Add( FILE_REF_KEY, fileRef.guid );
SetWeakLink( weak );
// def Create(cls, file_ref, weak=False):
// if isinstance(file_ref, PBXFileReference):
// file_ref = file_ref.id
//
// bf = cls()
// bf.id = cls.GenerateId()
// bf['fileRef'] = file_ref
//
// if weak:
// bf.set_weak_link(True)
//
// return bf
}
public PBXBuildFile( string guid, PBXDictionary dictionary ) : base ( guid, dictionary )
{
// Debug.Log( "constructor child" );
}
public bool SetWeakLink( bool weak = false )
{
PBXDictionary settings = null;
PBXList attributes = null;
if( !_data.ContainsKey( SETTINGS_KEY ) ) {
if( weak ) {
attributes = new PBXList();
attributes.Add( WEAK_VALUE );
settings = new PBXDictionary();
settings.Add( ATTRIBUTES_KEY, attributes );
}
return true;
}
settings = _data[ SETTINGS_KEY ] as PBXDictionary;
if( !settings.ContainsKey( ATTRIBUTES_KEY ) ) {
if( weak ) {
attributes = new PBXList();
attributes.Add( WEAK_VALUE );
settings.Add( ATTRIBUTES_KEY, attributes );
return true;
}
else {
return false;
}
}
else {
attributes = settings[ ATTRIBUTES_KEY ] as PBXList;
}
if( weak ) {
attributes.Add( WEAK_VALUE );
}
else {
attributes.Remove( WEAK_VALUE );
}
settings.Add( ATTRIBUTES_KEY, attributes );
this.Add( SETTINGS_KEY, settings );
return true;
}
public bool AddCompilerFlag( string flag )
{
if( !_data.ContainsKey( SETTINGS_KEY ) )
_data[ SETTINGS_KEY ] = new PBXDictionary();
if( !((PBXDictionary)_data[ SETTINGS_KEY ]).ContainsKey( COMPILER_FLAGS_KEY ) ) {
((PBXDictionary)_data[ SETTINGS_KEY ]).Add( COMPILER_FLAGS_KEY, flag );
return true;
}
string[] flags = ((string)((PBXDictionary)_data[ SETTINGS_KEY ])[ COMPILER_FLAGS_KEY ]).Split( ' ' );
foreach( string item in flags ) {
if( item.CompareTo( flag ) == 0 )
return false;
}
((PBXDictionary)_data[ SETTINGS_KEY ])[ COMPILER_FLAGS_KEY ] = ( string.Join( " ", flags ) + " " + flag );
return true;
// def add_compiler_flag(self, flag):
// k_settings = 'settings'
// k_attributes = 'COMPILER_FLAGS'
//
// if not self.has_key(k_settings):
// self[k_settings] = PBXDict()
//
// if not self[k_settings].has_key(k_attributes):
// self[k_settings][k_attributes] = flag
// return True
//
// flags = self[k_settings][k_attributes].split(' ')
//
// if flag in flags:
// return False
//
// flags.append(flag)
//
// self[k_settings][k_attributes] = ' '.join(flags)
}
}
}