From 4cf337e4061067d9230147d847e73367049d04b6 Mon Sep 17 00:00:00 2001 From: acevest Date: Tue, 23 Jun 2015 17:39:17 +0800 Subject: [PATCH] ... --- learn/swift/.DS_Store => .DS_Store | Bin 6148 -> 6148 bytes learn/.DS_Store | Bin 0 -> 6148 bytes learn/AppleSwift/.DS_Store | Bin 0 -> 6148 bytes .../AppleSwift.xcodeproj/project.pbxproj | 243 ++++++++++++++++++ .../contents.xcworkspacedata | 2 +- .../xcshareddata/AppleSwift.xccheckout} | 8 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 32382 bytes .../xcschemes/AppleSwift.xcscheme | 88 +++++++ .../xcschemes/xcschememanagement.plist | 22 ++ learn/AppleSwift/AppleSwift/main.swift | 240 +++++++++++++++++ .../contents.xcplayground | 7 - .../UserInterfaceState.xcuserstate | Bin 7303 -> 0 bytes .../MyPlayground.playground/section-1.swift | 68 ----- .../timeline.xctimeline | 6 - lib/RingBuffer.cpp | 184 +++++++++++++ tools/comm/countc.c | 1 + 16 files changed, 783 insertions(+), 86 deletions(-) rename learn/swift/.DS_Store => .DS_Store (82%) create mode 100644 learn/.DS_Store create mode 100644 learn/AppleSwift/.DS_Store create mode 100644 learn/AppleSwift/AppleSwift.xcodeproj/project.pbxproj rename learn/{swift/MyPlayground.playground/playground.xcworkspace => AppleSwift/AppleSwift.xcodeproj/project.xcworkspace}/contents.xcworkspacedata (70%) rename learn/{swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout => AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcshareddata/AppleSwift.xccheckout} (87%) create mode 100644 learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 learn/AppleSwift/AppleSwift.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/AppleSwift.xcscheme create mode 100644 learn/AppleSwift/AppleSwift.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 learn/AppleSwift/AppleSwift/main.swift delete mode 100644 learn/swift/MyPlayground.playground/contents.xcplayground delete mode 100644 learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 learn/swift/MyPlayground.playground/section-1.swift delete mode 100644 learn/swift/MyPlayground.playground/timeline.xctimeline create mode 100644 lib/RingBuffer.cpp diff --git a/learn/swift/.DS_Store b/.DS_Store similarity index 82% rename from learn/swift/.DS_Store rename to .DS_Store index 0af6509e8bbda9106a7fcb0fe74feb24d9cbab14..2c3105d4c15de905e8e096c03661b1f8bccfafbc 100644 GIT binary patch delta 381 zcmZoMXfc=|#>B)qu~2NHo}w@l0|Nsi1A_nqLtavOaY0f}e$wWPj4K%@8;G#fvoho` zq%tHj6d@!T7#Myg735?Vmlzn_WMpDyVP#|I;N;>4K>B`mu~2NHo}wr-0|Nsi1A_nqLn1>ZLpnndLq0?4#KPtEAPI2>UxrGC z0EQf7NrpUz6b3zp0!-1Ibi?4}{M-TtFwm4F-GtnH7nhXMl4J%3_lq+YUIm*&q9Y12 vkR4I5*^&7e%f^NR#?9;;{2WY-9Ge}PzcWwf7qR33na;?-z_d9)WD7F@zCk-# diff --git a/learn/.DS_Store b/learn/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8cc4f85903cfbd84fb87df2c454dd31e83e83bb6 GIT binary patch literal 6148 zcmeI0%}T>S5XWa~)wEtBDhOVB6?&*&)T6ESC=?;ehfkM z9efmTGP_$TtsVuH`Gqi>kN+lQ%Fg@?09ft1YXBwy7@%S%2VX+hX`djY&rn1;hX)p< zAm9v=iMyHK2<0vh6^I}Le>8ti8b^*FIsowQM81fVQt1sdQ`za6StFO9qs^SppIGfM zwGun&##Os>B#(saIeJ{TllE|Y5QhHe*mfGiOIzmRZWtuC2)xdS^tdSkH%zNxH*n)) zJzrC}NxNk()jM8Kcxl}ZyoQK{BYcru7&+Qn=5oKkS=ufZw$?WW#X`SaE)@%#8|A^k zd@_uc)ve0@VKlh9zPY`-e|UU;Q5iwhnOPXi(Cc>}r)PBnKMc;*51(Ne=C7fbJ!9^# zy*R@#KMt)A1>NH8=y<83Tsjbx1wer8@MV+_kbZ!qbWBo;Bn70AjLJQrmZG*8C@l%y zC*^=j4yfdxy&7usf%?g)9SV}8A-$3V%BM37GtQJcVN(6ygKzym!!Z9C%+{=0RTkZ^ kp;}Az^i*G_5;M1& literal 0 HcmV?d00001 diff --git a/learn/AppleSwift/.DS_Store b/learn/AppleSwift/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..4bc26328c535f6f33ec9b1b0560567f4d3733931 GIT binary patch literal 6148 zcmeI0Pixdb7{;G>yVi7jiCCfFWv{{_Tidc8+jTt(3y~JFvL>6@9m!_GCfit+g@QLf zhW}5}k06NNJ$llw;Z5F|*|Kc6pn}lK{6csqf1a6SCYd)+08n!nt^qCp2RfE3m%Xx#}-3qpmB1Js?{su*s2C)nP{0!1qWO=>*jYU`Iqn$6dK2liU|c zG?tqHVv!#@OT2X4)zN69e!EuP zytO{ARY#3Ry;j{=Z;Z$8N5{E-V{`l7gLM4j<*V0k-oAVP>9ZaUA~PyiXGZ7CS)Fs> z4U$+U`+DNT%DfK5O*}&v5+Nd_7(n7_yuapkWk1#J9Dm0jX#29&3Ws?Y`1;}bv8v&> z+wIHnueE7!`kH^tbdlxaVjg>E`QqM!#bWtK@cd9UDQ?TeBOTS$LC_X}fb!%Lv=2~z zfTg_6QjRPIaY;q(9>_?^SPW8@gwIoQkd}kA{3KVCF&|`FCgV_u9S!TX9Hd&eSS+(F z=p8QS|GPNT|644U{}?K_yjD{s-T82?<$U_s9Oe{0??Zqo>7RwGlbT3NIob~ai{+f~ E3%G2XU;qFB literal 0 HcmV?d00001 diff --git a/learn/AppleSwift/AppleSwift.xcodeproj/project.pbxproj b/learn/AppleSwift/AppleSwift.xcodeproj/project.pbxproj new file mode 100644 index 0000000..79dc39c --- /dev/null +++ b/learn/AppleSwift/AppleSwift.xcodeproj/project.pbxproj @@ -0,0 +1,243 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 5063B2A61B390AAF009C5821 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5063B2A51B390AAF009C5821 /* main.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 5063B2A01B390AAF009C5821 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 5063B2A21B390AAF009C5821 /* AppleSwift */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = AppleSwift; sourceTree = BUILT_PRODUCTS_DIR; }; + 5063B2A51B390AAF009C5821 /* main.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = main.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 5063B29F1B390AAF009C5821 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 5063B2991B390AAF009C5821 = { + isa = PBXGroup; + children = ( + 5063B2A41B390AAF009C5821 /* AppleSwift */, + 5063B2A31B390AAF009C5821 /* Products */, + ); + sourceTree = ""; + }; + 5063B2A31B390AAF009C5821 /* Products */ = { + isa = PBXGroup; + children = ( + 5063B2A21B390AAF009C5821 /* AppleSwift */, + ); + name = Products; + sourceTree = ""; + }; + 5063B2A41B390AAF009C5821 /* AppleSwift */ = { + isa = PBXGroup; + children = ( + 5063B2A51B390AAF009C5821 /* main.swift */, + ); + path = AppleSwift; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 5063B2A11B390AAF009C5821 /* AppleSwift */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5063B2A91B390AAF009C5821 /* Build configuration list for PBXNativeTarget "AppleSwift" */; + buildPhases = ( + 5063B29E1B390AAF009C5821 /* Sources */, + 5063B29F1B390AAF009C5821 /* Frameworks */, + 5063B2A01B390AAF009C5821 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = AppleSwift; + productName = AppleSwift; + productReference = 5063B2A21B390AAF009C5821 /* AppleSwift */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 5063B29A1B390AAF009C5821 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0630; + ORGANIZATIONNAME = Ace; + TargetAttributes = { + 5063B2A11B390AAF009C5821 = { + CreatedOnToolsVersion = 6.3.2; + }; + }; + }; + buildConfigurationList = 5063B29D1B390AAF009C5821 /* Build configuration list for PBXProject "AppleSwift" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 5063B2991B390AAF009C5821; + productRefGroup = 5063B2A31B390AAF009C5821 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5063B2A11B390AAF009C5821 /* AppleSwift */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 5063B29E1B390AAF009C5821 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5063B2A61B390AAF009C5821 /* main.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 5063B2A71B390AAF009C5821 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 5063B2A81B390AAF009C5821 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 5063B2AA1B390AAF009C5821 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 5063B2AB1B390AAF009C5821 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 5063B29D1B390AAF009C5821 /* Build configuration list for PBXProject "AppleSwift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5063B2A71B390AAF009C5821 /* Debug */, + 5063B2A81B390AAF009C5821 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 5063B2A91B390AAF009C5821 /* Build configuration list for PBXNativeTarget "AppleSwift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5063B2AA1B390AAF009C5821 /* Debug */, + 5063B2AB1B390AAF009C5821 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 5063B29A1B390AAF009C5821 /* Project object */; +} diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata b/learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 70% rename from learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata rename to learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 919434a..5e84e35 100644 --- a/learn/swift/MyPlayground.playground/playground.xcworkspace/contents.xcworkspacedata +++ b/learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:AppleSwift.xcodeproj"> diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout b/learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcshareddata/AppleSwift.xccheckout similarity index 87% rename from learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout rename to learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcshareddata/AppleSwift.xccheckout index 51108a5..e196f85 100644 --- a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcshareddata/MyPlayground.xccheckout +++ b/learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcshareddata/AppleSwift.xccheckout @@ -5,20 +5,20 @@ IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - 1330DDA2-1B99-4E60-9F3A-B7DE1D7ECB22 + C6698B6B-E176-4266-9A99-7EA7B71954A4 IDESourceControlProjectName - MyPlayground + project IDESourceControlProjectOriginsDictionary BA634633803B1A00DDD2BCDEF5C645E5844F56E6 https://github.com/acevest/acecode.git IDESourceControlProjectPath - learn/swift/MyPlayground.playground + learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace IDESourceControlProjectRelativeInstallPathDictionary BA634633803B1A00DDD2BCDEF5C645E5844F56E6 - ../../.. + ../../../.. IDESourceControlProjectURL https://github.com/acevest/acecode.git diff --git a/learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/AppleSwift/AppleSwift.xcodeproj/project.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..596ab3f15cad417e021ed5875f0af1ba60dc5c5f GIT binary patch literal 32382 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/learn/AppleSwift/AppleSwift.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist b/learn/AppleSwift/AppleSwift.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..15e61c0 --- /dev/null +++ b/learn/AppleSwift/AppleSwift.xcodeproj/xcuserdata/Ace.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + AppleSwift.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 5063B2A11B390AAF009C5821 + + primary + + + + + diff --git a/learn/AppleSwift/AppleSwift/main.swift b/learn/AppleSwift/AppleSwift/main.swift new file mode 100644 index 0000000..da38bb1 --- /dev/null +++ b/learn/AppleSwift/AppleSwift/main.swift @@ -0,0 +1,240 @@ +// +// main.swift +// AppleSwift +// +// Created by Ace on 15/6/23. +// Copyright (c) 2015年 Ace. All rights reserved. +// + +import Foundation + + +let Constant = 0x1234 // let 声明常量 +var Variable = 0xAFEC // var 声明变量 +var VarInt = 8421 +var VarFloat = 3.1415926 +var VarDouble:Double = 2.71828182846 //如果初始类型信息不足,可以在变量后加":类型" +var VarF:Float = 0.1314 +var str:String = "Hello, World!" + + +let ss = str + " " + String(Variable) // 类型必需显示转换 + + +// 可以通过在客串中加\()的方式把值转换成字符串 +let Int2Str = "translate int in string with \(VarInt) \(ss)" +println(Int2Str) + + +// 数组 +var arrayList = ["apple", "microsoft", "xx", "google", "tencent", "twitter"] +arrayList[2] = "amazon" +println(arrayList) + +// 字典 +var dict = [ + "apple" : "USA", + "tencnet" : "CN" +] +println(dict) +println(dict["apple"]) +println(dict["apple"]!) + +// 创建空数组和空字典 +var EmptyArray = [String]() +var EmptyDict = [String:String]() +// or +var EmptArrayWithNoType = [] +var EmptDictWithNoType = [:] + +for cp in arrayList { + println(cp) +} + + + +var OptionalVar:String? = "hehe" +//OptionalVar = nil +if let name = OptionalVar { + println("Hello \(OptionalVar)") +} +else +{ + println("sssssss") +} + + +let word = "ff" + +switch word { +case "dd" : + println("unknown") +case "ff" : + println("fallthrough") + fallthrough // 会走到下一个case +case "red apple", "blue apple" : + println("red") +default: // 必须在最后。。。 + println("default"); +} + + +// 闭区间 +for i in 0...3 { + print(i) +} +println("") +// 开区间 +for i in 0..<3 { + print(i) +} + + +for i in 0..=[] +for i in 1...5 { + IntArray.append(i) +} +IntArray += [0, -1, -2, -3, -4] +IntArray[0] = 1024 +IntArray[1..<4]=[999, 888, 777] +IntArray.insert(1, atIndex: 0) +IntArray.removeAtIndex(5) +IntArray.removeLast() +println(IntArray) +for (index, value) in enumerate(IntArray) { + println("Item \(index+1): \(value)") +} + + +var StringArray = [String]() +StringArray.append("dd") +StringArray = [] + +var DoubleArray = [Double](count:3, repeatedValue:9.9) +for i in 1...5 { + DoubleArray.append(Double(i)*1.1) +} +println(DoubleArray) + + +// Set +var SetA=Set() +var SetB:Set=[] +var SetC: Set = ["a", "b", "b"] + +SetA.insert(1) +SetA.insert(2) +SetA.insert(1) +if SetA.contains(1) { + println(SetA) +} + +for genre in sorted(SetA) { + println("\(genre)") +} + +let oddSet:Set = [1, 3, 5, 7, 9] +let evenSet:Set = [0, 2, 4, 6, 8] +println(sorted(oddSet.intersect(evenSet))) // 交 +println(sorted(oddSet.union(evenSet))) // 并 +println(oddSet.hashValue) + + +// Dict +var airports: [String:String] = ["TYO" : "Tokyo", "DUB":"Dublin"] +airports["LHR"] = "London" +airports["APL"] = "Apple Internation" +if let oldValue = airports.updateValue("Dublin Internation", forKey: "DUB") { + println("The old value for DIB was \(oldValue)") +} + +for (k, v) in airports { + println("\(k): \(v)") +} + +for k in airports.keys { + println("Airport Code: \(k)") +} + +for v in airports.values { + println("Airport Name: \(v)") +} + +println(airports) +airports["APL"] = nil // Delete +println(airports) + +if let removedValue = airports.removeValueForKey("DUB") { + println("The removed airport's name is \(removedValue)") +} else { + println("The airports dictionary does not contain a value for DUB") +} + +// create an empty dict +var emptyDict = Dictionary() +emptyDict[16] = "sixteen" +emptyDict = [:] + + + + + + + diff --git a/learn/swift/MyPlayground.playground/contents.xcplayground b/learn/swift/MyPlayground.playground/contents.xcplayground deleted file mode 100644 index 8e39341..0000000 --- a/learn/swift/MyPlayground.playground/contents.xcplayground +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate b/learn/swift/MyPlayground.playground/playground.xcworkspace/xcuserdata/Ace.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 0624362111c67e7a0e26f04385fd652ca5b82dd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7303 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 z z)GGM|P?GyA!YLAot@U)gFhtt|sQKI$^_F zjQ7FfPVxYG5EtW(D$0($FCY(-gTQr?1LP50f=fHeqvQ}?k2he(ba!1%cg3nJr>;h| zaGcl}kd;=S6bo=_(HiX%6qWfjIT9!HD0vod!eyAz9p}`d)!G#z%5#hyR~>l?mv=y4 zOo=$sb%`D&`xPkyFrtTFC9gsH=FRH$Nb}-N@|Mc|Ph8nS-o{mb6^3`!F#MamhpX|n z?l62vPRE)23HcP);H{W3IR=eVi{vXJenypkMZS&W`Hp;#YjK@A73~omq`r`lBFH7R zXxig(yg!nkV|n`pH((zvN58}3P70LZ?RaO*II5?na}`lDwctj)12ZP17R`J2T)C8? zjz1jbaU*WRjMSpQ=D3qdv=^jz(jK%Yc3@{G?M;($3*Hq8U9?PNIM>6b#J#PE5wfb4 zP^(vI4XGgLe>&0?INFzHK>FP@mG-0kX&N0s({U@_joWZL?!bHQrWezJbP%M`EJ(w9 zaTnf?$+)NM)sUKwIW1zqC;1|^t)e~^KX+YPswA(Xg+JgH$-|4~}h)dD&kxDHx~_jS-qaA&kO zwCPYBu|9hAGFqe+wTET9M_`WnP9Zw|sGE+8i5rc(F(b-+IUO6<5wwy{h@G5>d%I88 z(AxNuljxLaDblIs>SuZm+1(J&ssM=&G)4wqWg7GJJ&=-fEId2~KLiie^~V|S@Ir5?8EfBVww zuU4GBvU;r4F8MUjAcbD0i|LZu2$VnqX6OlhVIT~F;cyvwk{l(kl2ha~`HFl`&XBX@ zSMob0R7ZQ!Vp>T(RHR-i(MBrMS+to3Dbj^>5nV#Br#I4NbU9r?SJ55x8Tzgcbet|z zH(EDC=h69fLETk4MK@bFN7td-rQ4(1r+Y~Euo?(Pxq+zsS zqG5`m#n5J0WLRQYZMe;_&TzZo4#OtHeTH3z-G;q}UyTVyyU}6fjXjLLjLF6ejs1)R zjrqnA#!<$x#u{V2ak6o$(Ps=BuQo0;-eg>ETwz>g++^%9ZZU2(er^2KWHT`)*2I~d zCc)Ih)XS7%8feNiWt(zMgH1zB!%T&yF($uhr|E6eZ{}X+A?8YRy?Kgxnt6t~(d;+3 zo0plFn^%}unb(+aGp{pmFmE*9Y2IVrXMWJU-+aJ)(0s^z*!+a~Df2(fC(Iw2f45{? zN-S4d7FkwXHd*eo9JV}RdCKw+%Mr`7mgg-mT3)ieZ27?Qk>#}IQ_JU;FD+kNzO{UB zIb%7Spi4+jxHzFWp(3FnVR6Fxg!>W>CA^aGxz%K~SgqDXtKFJz&9xR--PT5H*xG7s zv$k93TIX9=S+`mrupY6#Z~f5vvGo({XVx#QXRJS1f3#7X-PYUI-!{OOVH;@6w_R=< zZs+WIJv9)b^e2jP0!Lr$k+1W@29Av_vWKroLWEL_Tm@UlR%y#A; zW>>Uoc-W-!R|V!EUn;uwP=Yx3}6C*l)LQ zx9_t*Xy0!?U_WR-WIt+u&i;b^nEkl@75hp1Df?;rH};=dmgQI{E3iG-UTi8mf~{wf zy@6fEE@xM;+t~-%$Joc&C)uajXV{n6m)R5StL*FSo9uh+PY#2_?nrj@cMNc3I0ia0 z9YY-jj^U0=9U~n@jv0=*jyoOu9Zx%sIG%O9;5g9ZoliSYI6rh*Tm`Orm(SJcl3jjRz}4bf=(@$V!nM-1+I6>UpX(vl z!>)s_L$1TF7hEs8j=7GzPPyK7z32MS^|9*{*BRFjuCuP61e1^;*aW-a5O^V3NEP}E z1B47=pim%;5H1sng;By7;c}ru@CZ#pt8le2Pq;?7PFO4~6>bpL3Y&$U!d~G4;UVFm la7Z{TJRzJEP9>!z4Ns~_nwV4{*#SUl*Y{HGJNikQ{9h9^_G175 diff --git a/learn/swift/MyPlayground.playground/section-1.swift b/learn/swift/MyPlayground.playground/section-1.swift deleted file mode 100644 index bb6b9ec..0000000 --- a/learn/swift/MyPlayground.playground/section-1.swift +++ /dev/null @@ -1,68 +0,0 @@ -// Playground - noun: a place where people can play - -import UIKit - -var str = "Hello, playground" -println(str) - -let Constant = 0x1234 // let 声明常量 -var Variable = 0xAFEC // var 声明变量 -var VarInt = 8421 -var VarFloat = 3.1415926 -var VarDouble:Double = 2.71828182846 //如果初始类型信息不足,可以在变量后加":类型" -var VarF:Float = 0.1314 - - -let s = str + String(Variable) // 类型必需显示转换 - - -// 可以通过在客串中加\()的方式把值转换成字符串 -let Int2Str = "translate int in string with \(VarInt) \(str)" -println(Int2Str) - - -// 数组 -var arrayList = ["apple", "microsoft", "xx", "google", "tencent", "twitter"] -arrayList[2] = "amazon" -println(arrayList) - -// 字典 -var dict = [ - "apple" : "USA", - "tencnet" : "CN" -] -println(dict) - -// 创建空数组和空字典 -var EmptyArray = [String]() -var EmptyDict = [String:String]() -// or -var EmptArrayWithNoType = [] -var EmptDictWithNoType = [:] - -for cp in arrayList { - println(cp) -} - - - -var OptionalVar: String? = "hehe" -OptionalVar == nil -if let name = OptionalVar { - println("Hello \(OptionalVar)") -} -else -{ - println("sssssss") -} - - -let word = "red apple" - -//switch word { -//case "dd" : -//} - - - - diff --git a/learn/swift/MyPlayground.playground/timeline.xctimeline b/learn/swift/MyPlayground.playground/timeline.xctimeline deleted file mode 100644 index bf468af..0000000 --- a/learn/swift/MyPlayground.playground/timeline.xctimeline +++ /dev/null @@ -1,6 +0,0 @@ - - - - - diff --git a/lib/RingBuffer.cpp b/lib/RingBuffer.cpp new file mode 100644 index 0000000..ac000d0 --- /dev/null +++ b/lib/RingBuffer.cpp @@ -0,0 +1,184 @@ +/* + * ------------------------------------------------------------------------ + * File Name: RingBuffer.cpp + * Thu Jun 18 16:13:49 2015 + * Description: none + * ------------------------------------------------------------------------ + */ + +#include +#include + +class RingBuffer +{ +public: + RingBuffer(): buffer_(NULL), in_(0), out_(0), size_(0) {} + ~RingBuffer() {} + +public: + // Init - 初始化缓冲区 + // @buffer: 已经申请的用作缓冲区的内存指针 + // @size: 缓冲区的大小, 必须是2的整数次幂 + // + // 通过@buffer传入的内存, 可以是通过Alloc申请的, 也可以是外部自行分配的 + // 后者需要自行释放内存, 不适合通过Free释放 + int Init(unsigned char *buffer, unsigned int size) + { + if (!is_power_of_two(size)) + return -1; + + buffer_ = buffer; + size_ = size; + in_ = out_ = 0; + + return 0; + } + + // Alloc - 在堆上申请指定大小的缓冲区内存并初始化 + // @size: 缓冲区大小, 会向上调整到2的整数次幂 + // + // 通过Alloc申请的内存需要通过Free进行释放, 即Alloc和Free要配对使用 + int Alloc(unsigned int size) + { + unsigned char *buffer; + int ret; + + if (!is_power_of_two(size)) + size = roundup_power_of_two(size); + + buffer = new unsigned char[size]; + if (!buffer) + return -1; + + ret = Init(buffer, size); + if (ret != 0) + delete[] buffer; + + return 0; + } + + // Put - 向缓冲区拷贝指定长度的数据 + // @buffer: 拷贝到缓冲区的数据 + // @len: 数据长度 + // + // 从@buffer向缓冲区拷贝至多@len字节的数据, 具体拷贝长度依赖缓冲区的 + // 剩余空间大小, 实际拷贝长度通过返回值返回 + unsigned int Put(const unsigned char *buffer, unsigned int len) + { + unsigned int l; + + len = min(len, size_ - Len()); + + // 从buffer_的in_位置开始写入数据, 直到buffer_的结尾位置 + l = min(len, size_ - (in_ & (size_ - 1))); + memcpy(buffer_ + (in_ & (size_ - 1)), buffer, l); + + // 把剩余数据从buffer_的起始位置开始写入, 直到完成len字节写入 + memcpy(buffer_, buffer + l, len - l); + + in_ += len; + + return len; + } + + // Get - 从缓冲区中取出指定长度的数据 + // @buffer: 取出数据的拷贝内存 + // @len: 拷贝内存的长度 + // + // 向@buffer拷贝至多@len字节的数据, 实际拷贝长度通过返回值返回 + unsigned int Get(unsigned char *buffer, unsigned int len) + { + unsigned int l; + + len = min(len, Len()); + + // 从buffer_的out_位置开始读出数据, 直到buffer_的结束位置 + l = min(len, size_ - (out_ & (size_ - 1))); + memcpy(buffer, buffer_ + (out_ & (size_ - 1)), l); + + // 然后从buffer_的起始位置开始读出, 直到完成len字节读出 + memcpy(buffer + l, buffer_, len - l); + + out_ += len; + + return len; + } + + // Len - 返回缓冲区的数据长度 + unsigned int Len() + { + return in_ - out_; + } + + // Reset - 重置缓冲区, 即清空缓冲区数据 + void Reset() + { + in_ = out_ = 0; + } + + // Free - 释放缓冲区内存 + // 释放通过Alloc申请的缓冲区内存, 和Alloc配对使用 + void Free() + { + if (buffer_) + { + delete[] buffer_; + buffer_ = NULL; + } + } + +private: + template + T min(T a, T b) + { + return a > b ? b : a; + } + + bool is_power_of_two(unsigned int n) + { + return (n != 0 && ((n & (n - 1)) == 0)); + } + + unsigned int roundup_power_of_two(unsigned int n) + { + unsigned int fls = __builtin_clz(n); + return 1 << (sizeof(n) * 8 - fls); + } + +private: + unsigned char *buffer_; // 缓冲区指针 + unsigned int in_; // 写指针 + unsigned int out_; // 读指针 + unsigned int size_; // 缓冲区大小 +}; + +int main() +{ + RingBuffer rb; + rb.Alloc(7); + + unsigned char str[128] = {0}; + int n; + + str[0] = 'a'; + n = rb.Put(str, 1); + + str[1] = 'b'; + n = rb.Put(str, 2); + + str[2] = 'c'; + n = rb.Put(str, 3); + + str[3] = 'd'; + n = rb.Put(str, 4); + + str[4] = 'e'; + n = rb.Put(str, 5); + + n = rb.Get(str, 2); + n = rb.Get(str, 1); + + rb.Free(); + + return 0; +} diff --git a/tools/comm/countc.c b/tools/comm/countc.c index e71f771..1b978fc 100644 --- a/tools/comm/countc.c +++ b/tools/comm/countc.c @@ -91,6 +91,7 @@ void count_file(char *path) && !valid_type(path,"py") && !valid_type(path,"go") && !valid_type(path,"php") + && !valid_type(path,"swift") ) { #if 0 -- 2.47.0