Skip to content

Commit a91d7db

Browse files
committed
small adjustment
1 parent 68047ae commit a91d7db

File tree

7 files changed

+42
-108
lines changed

7 files changed

+42
-108
lines changed

KakaJSON/Metadata/Descriptor/Descriptor.swift

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,15 @@ extension ModelDescriptor {
5353
}
5454

5555
// MARK: - Descriptor Inner Data Types
56-
struct ContextDescriptorFlags: CustomStringConvertible {
56+
struct ContextDescriptorFlags {
5757
let value: UInt32
58-
var description: String { return "\(value)" }
5958
}
6059

61-
struct RelativeContextPointer: CustomStringConvertible {
60+
struct RelativeContextPointer {
6261
let offset: Int32
63-
var description: String { return "\(offset)" }
6462
}
6563

66-
struct RelativeDirectPointer <Pointee>: CustomStringConvertible {
64+
struct RelativeDirectPointer <Pointee> {
6765
var relativeOffset: Int32
6866

6967
mutating func advanced() -> UnsafeMutablePointer<Pointee> {
@@ -72,13 +70,10 @@ struct RelativeDirectPointer <Pointee>: CustomStringConvertible {
7270
($0.kk_raw + Int(offset)) ~> Pointee.self
7371
}
7472
}
75-
76-
var description: String { return "\(relativeOffset)" }
7773
}
7874

79-
struct FieldOffsetPointer <Pointee: BinaryInteger>: CustomStringConvertible {
75+
struct FieldOffsetPointer <Pointee: BinaryInteger> {
8076
let offset: UInt32
81-
var description: String { return "\(offset)" }
8277
}
8378

8479
struct MetadataResponse {}

KakaJSON/Metadata/Descriptor/FieldDescriptor.swift

Lines changed: 28 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,29 @@
66
// Copyright © 2019 MJ Lee. All rights reserved.
77
//
88

9+
import Foundation
10+
11+
struct FieldRecord {
12+
let flags: Int32
13+
var _mangledTypeName: RelativeDirectPointer<UInt8>
14+
var _fieldName: RelativeDirectPointer<UInt8>
15+
var isVar: Bool { return (flags & 0x2) == 0x2 }
16+
mutating func fieldName() -> String { return String(cString: _fieldName.advanced()) }
17+
mutating func mangledTypeName() -> String { return String(cString: _mangledTypeName.advanced()) }
18+
19+
mutating func type(_ genericContext: UnsafeRawPointer?,
20+
_ genericArguments: UnsafeRawPointer?) -> Any.Type {
21+
let name = _mangledTypeName.advanced()
22+
let nameLength = UInt(strlen(name ~>> UnsafePointer<Int8>.self))
23+
return _getTypeByMangledNameInContext(
24+
name,
25+
nameLength,
26+
genericContext,
27+
genericArguments
28+
)!
29+
}
30+
}
31+
932
struct FieldDescriptor {
1033
let mangledTypeName: RelativeDirectPointer<CChar>
1134
let superclass: RelativeDirectPointer<CChar>
@@ -29,43 +52,8 @@ enum FieldDescriptorKind: UInt16 {
2952

3053
@_silgen_name("swift_getTypeByMangledNameInContext")
3154
private func _getTypeByMangledNameInContext(
32-
_ name: UnsafePointer<UInt8>,
33-
_ nameLength: UInt,
34-
_ genericContext: UnsafeRawPointer?,
35-
_ genericArguments: UnsafeRawPointer?)
36-
-> Any.Type?
37-
38-
struct FieldRecord {
39-
let flags: Int32
40-
var _mangledTypeName: RelativeDirectPointer<UInt8>
41-
var _fieldName: RelativeDirectPointer<UInt8>
42-
var isVar: Bool { return (flags & 0x2) == 0x2 }
43-
mutating func fieldName() -> String { return String(cString: _fieldName.advanced()) }
44-
mutating func mangledTypeName() -> String { return String(cString: _mangledTypeName.advanced()) }
45-
46-
mutating func type(_ genericContext: UnsafeRawPointer?,
47-
_ genericArguments: UnsafeRawPointer?) -> Any.Type {
48-
let typeName = _mangledTypeName.advanced()
49-
return _getTypeByMangledNameInContext(
50-
typeName,
51-
nameLength(typeName),
52-
genericContext,
53-
genericArguments
54-
)!
55-
}
56-
57-
func nameLength(_ begin: UnsafeRawPointer) -> UInt {
58-
var end = begin
59-
while true {
60-
let cur = end.load(as: UInt8.self)
61-
if cur == 0 { break }
62-
if cur >= 0x1 && cur <= 0x17 {
63-
end += 4
64-
} else if cur >= 0x18 && cur <= 0x1F {
65-
end += MemoryLayout<Int>.size
66-
}
67-
end += 1
68-
}
69-
return UInt(end - begin)
70-
}
71-
}
55+
_ name: UnsafePointer<UInt8>,
56+
_ nameLength: UInt,
57+
_ genericContext: UnsafeRawPointer?,
58+
_ genericArguments: UnsafeRawPointer?)
59+
-> Any.Type?

KakaJSON/Metadata/Layout/ClassLayout.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ struct ClassLayout: ModelLayout {
4949
let descriptor = description.pointee
5050
// don't have resilient superclass
5151
if (0x4000 & flags) == 0 {
52-
return (0x800 & flags) == 0
52+
return (flags & 0x800) == 0
5353
? Int(descriptor.metadataPositiveSizeInWords - descriptor.numImmediateMembers)
5454
: -Int(descriptor.metadataNegativeSizeInWords)
5555
}

KakaJSON/Metadata/Type/ClassType.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@
99
public class ClassType: ModelType, PropertyType, LayoutType {
1010
private(set) var layout: UnsafeMutablePointer<ClassLayout>!
1111
public private(set) var `super`: ClassType?
12-
private(set) var propertyOffset: Int = 0
13-
private(set) var instanceSize: UInt32 = 0
14-
private(set) var instanceAlignMask: UInt16 = 0
1512
public private(set) var isPureSwiftClass: Bool = false
1613

1714
override func build() {
@@ -26,10 +23,7 @@ public class ClassType: ModelType, PropertyType, LayoutType {
2623
properties = properties ?? []
2724
properties!.insert(contentsOf: superProperties, at: 0)
2825
}
29-
30-
propertyOffset = properties?[0].offset ?? 0
31-
instanceSize = layout.pointee.instanceSize
32-
instanceAlignMask = layout.pointee.instanceAlignMask
26+
3327
/// Not sure
3428
isPureSwiftClass = (layout.pointee.rodata ~>> UnsafePointer<UInt8>.self).pointee > 0
3529
}

KakaJSON/Metadata/Type/Type.swift

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,6 @@ extension LayoutType {
2525
func builtLayout() -> UnsafeMutablePointer<InnerLayout> {
2626
return type ~>> UnsafeMutablePointer<InnerLayout>.self
2727
}
28-
29-
var size: Int {
30-
return valueWitnessTable.pointee.size
31-
}
32-
33-
var alignment: Int {
34-
return (valueWitnessTable.pointee.flags & ValueWitnessFlags.alignmentMask) + 1
35-
}
36-
37-
var stride: Int {
38-
return valueWitnessTable.pointee.stride
39-
}
40-
41-
private var valueWitnessTable: UnsafeMutablePointer<ValueWitnessTable> {
42-
return ((layout.kk_raw - MemoryLayout<UnsafeRawPointer>.size) ~> UnsafeMutablePointer<ValueWitnessTable>.self).pointee
43-
}
4428
}
4529

4630
// MARK: - NominalType
@@ -98,28 +82,3 @@ extension PropertyType where Self: LayoutType, InnerLayout: ModelLayout {
9882
}
9983
}
10084
}
101-
102-
// MARK: - ValueWitnessTable
103-
struct ValueWitnessTable {
104-
var initializeBufferWithCopyOfBuffer: UnsafeRawPointer
105-
var destroy: UnsafeRawPointer
106-
var initializeWithCopy: UnsafeRawPointer
107-
var assignWithCopy: UnsafeRawPointer
108-
var initializeWithTake: UnsafeRawPointer
109-
var assignWithTake: UnsafeRawPointer
110-
var getEnumTagSinglePayload: UnsafeRawPointer
111-
var storeEnumTagSinglePayload: UnsafeRawPointer
112-
var size: Int
113-
var stride: Int
114-
var flags: Int
115-
}
116-
117-
struct ValueWitnessFlags {
118-
static let alignmentMask = 0x0000FFFF
119-
static let isNonPOD = 0x00010000
120-
static let isNonInline = 0x00020000
121-
static let hasExtraInhabitants = 0x00040000
122-
static let hasSpareBits = 0x00080000
123-
static let isNonBitwiseTakable = 0x00100000
124-
static let hasEnumWitnesses = 0x00200000
125-
}

KakaJSONTests/JSON_To_Model/JTM_01_Basic.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,11 @@ class JTM_01_Basic: XCTestCase {
177177
var age: Int = 0
178178

179179
mutating func kk_willConvertToModel(from json: [String: Any]) {
180-
print("Car - kk_willConvertToModel")
180+
// print("Car - kk_willConvertToModel")
181181
}
182182

183183
mutating func kk_didConvertToModel(from json: [String: Any]) {
184-
print("Car - kk_didConvertToModel")
184+
// print("Car - kk_didConvertToModel")
185185
}
186186
}
187187

@@ -201,11 +201,11 @@ class JTM_01_Basic: XCTestCase {
201201
required init() {}
202202

203203
func kk_willConvertToModel(from json: [String: Any]) {
204-
print("Person - kk_willConvertToModel")
204+
// print("Person - kk_willConvertToModel")
205205
}
206206

207207
func kk_didConvertToModel(from json: [String: Any]) {
208-
print("Person - kk_didConvertToModel")
208+
// print("Person - kk_didConvertToModel")
209209
}
210210
}
211211

@@ -216,14 +216,14 @@ class JTM_01_Basic: XCTestCase {
216216
// call super's implementation if necessary
217217
super.kk_willConvertToModel(from: json)
218218

219-
print("Student - kk_willConvertToModel")
219+
// print("Student - kk_willConvertToModel")
220220
}
221221

222222
override func kk_didConvertToModel(from json: [String: Any]) {
223223
// call super's implementation if necessary
224224
super.kk_didConvertToModel(from: json)
225225

226-
print("Student - kk_didConvertToModel")
226+
// print("Student - kk_didConvertToModel")
227227
}
228228
}
229229

KakaJSONTests/Model_To_JSON/MTJ_01_Basic.swift

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ class MTJ_01_Basic: XCTestCase {
2525
var url: URL? = URL(string: "http://520suanfa.com")
2626

2727
func kk_willConvertToJSON() {
28-
print("Car - kk_willConvertToJSON")
28+
// print("Car - kk_willConvertToJSON")
2929
}
3030

3131
func kk_didConvertToJSON(json: [String: Any]?) {
32-
print("Car - kk_didConvertToJSON", json as Any)
32+
// print("Car - kk_didConvertToJSON", json as Any)
3333
}
3434
}
3535

@@ -51,7 +51,6 @@ class MTJ_01_Basic: XCTestCase {
5151
XCTAssert(json?["url"].kk.string == "http://520suanfa.com")
5252

5353
var jsonString = car.kk.JSONString()
54-
print(jsonString!)
5554
// var jsonString = JSONString(from: car)
5655
/* {"birthday":1565922866,"new":true,"height":0.123456789012345678901234567890123456789,"weight":0.1234567890123456,"minSpeed":66.66,"price":0.123456789012345678901234567890123456789,"age":10,"name":"Bently","area":0.12345678,"maxSpeed":77.77,"capacity":88.88,"url":"http:\/\/520suanfa.com"} */
5756

@@ -68,7 +67,6 @@ class MTJ_01_Basic: XCTestCase {
6867
XCTAssert(jsonString?.contains("520suanfa.com") == true)
6968

7069
jsonString = car.kk.JSONString(prettyPrinted: false)
71-
print(jsonString!)
7270
/*
7371
{
7472
"height" : 0.123456789012345678901234567890123456789,

0 commit comments

Comments
 (0)