line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
/* |
2
|
|
|
|
|
|
|
* Copyright 2013 MongoDB, Inc. |
3
|
|
|
|
|
|
|
* |
4
|
|
|
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
5
|
|
|
|
|
|
|
* you may not use this file except in compliance with the License. |
6
|
|
|
|
|
|
|
* You may obtain a copy of the License at |
7
|
|
|
|
|
|
|
* |
8
|
|
|
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0 |
9
|
|
|
|
|
|
|
* |
10
|
|
|
|
|
|
|
* Unless required by applicable law or agreed to in writing, software |
11
|
|
|
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS, |
12
|
|
|
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
13
|
|
|
|
|
|
|
* See the License for the specific language governing permissions and |
14
|
|
|
|
|
|
|
* limitations under the License. |
15
|
|
|
|
|
|
|
*/ |
16
|
|
|
|
|
|
|
|
17
|
|
|
|
|
|
|
|
18
|
|
|
|
|
|
|
#include |
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
#include "bson-keys.h" |
21
|
|
|
|
|
|
|
#include "bson-string.h" |
22
|
|
|
|
|
|
|
|
23
|
|
|
|
|
|
|
|
24
|
|
|
|
|
|
|
static const char * gUint32Strs[] = { |
25
|
|
|
|
|
|
|
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", |
26
|
|
|
|
|
|
|
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", |
27
|
|
|
|
|
|
|
"24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", |
28
|
|
|
|
|
|
|
"35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", |
29
|
|
|
|
|
|
|
"46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", |
30
|
|
|
|
|
|
|
"57", "58", "59", "60", "61", "62", "63", "64", "65", "66", "67", |
31
|
|
|
|
|
|
|
"68", "69", "70", "71", "72", "73", "74", "75", "76", "77", "78", |
32
|
|
|
|
|
|
|
"79", "80", "81", "82", "83", "84", "85", "86", "87", "88", "89", |
33
|
|
|
|
|
|
|
"90", "91", "92", "93", "94", "95", "96", "97", "98", "99", "100", |
34
|
|
|
|
|
|
|
"101", "102", "103", "104", "105", "106", "107", "108", "109", "110", |
35
|
|
|
|
|
|
|
"111", "112", "113", "114", "115", "116", "117", "118", "119", "120", |
36
|
|
|
|
|
|
|
"121", "122", "123", "124", "125", "126", "127", "128", "129", "130", |
37
|
|
|
|
|
|
|
"131", "132", "133", "134", "135", "136", "137", "138", "139", "140", |
38
|
|
|
|
|
|
|
"141", "142", "143", "144", "145", "146", "147", "148", "149", "150", |
39
|
|
|
|
|
|
|
"151", "152", "153", "154", "155", "156", "157", "158", "159", "160", |
40
|
|
|
|
|
|
|
"161", "162", "163", "164", "165", "166", "167", "168", "169", "170", |
41
|
|
|
|
|
|
|
"171", "172", "173", "174", "175", "176", "177", "178", "179", "180", |
42
|
|
|
|
|
|
|
"181", "182", "183", "184", "185", "186", "187", "188", "189", "190", |
43
|
|
|
|
|
|
|
"191", "192", "193", "194", "195", "196", "197", "198", "199", "200", |
44
|
|
|
|
|
|
|
"201", "202", "203", "204", "205", "206", "207", "208", "209", "210", |
45
|
|
|
|
|
|
|
"211", "212", "213", "214", "215", "216", "217", "218", "219", "220", |
46
|
|
|
|
|
|
|
"221", "222", "223", "224", "225", "226", "227", "228", "229", "230", |
47
|
|
|
|
|
|
|
"231", "232", "233", "234", "235", "236", "237", "238", "239", "240", |
48
|
|
|
|
|
|
|
"241", "242", "243", "244", "245", "246", "247", "248", "249", "250", |
49
|
|
|
|
|
|
|
"251", "252", "253", "254", "255", "256", "257", "258", "259", "260", |
50
|
|
|
|
|
|
|
"261", "262", "263", "264", "265", "266", "267", "268", "269", "270", |
51
|
|
|
|
|
|
|
"271", "272", "273", "274", "275", "276", "277", "278", "279", "280", |
52
|
|
|
|
|
|
|
"281", "282", "283", "284", "285", "286", "287", "288", "289", "290", |
53
|
|
|
|
|
|
|
"291", "292", "293", "294", "295", "296", "297", "298", "299", "300", |
54
|
|
|
|
|
|
|
"301", "302", "303", "304", "305", "306", "307", "308", "309", "310", |
55
|
|
|
|
|
|
|
"311", "312", "313", "314", "315", "316", "317", "318", "319", "320", |
56
|
|
|
|
|
|
|
"321", "322", "323", "324", "325", "326", "327", "328", "329", "330", |
57
|
|
|
|
|
|
|
"331", "332", "333", "334", "335", "336", "337", "338", "339", "340", |
58
|
|
|
|
|
|
|
"341", "342", "343", "344", "345", "346", "347", "348", "349", "350", |
59
|
|
|
|
|
|
|
"351", "352", "353", "354", "355", "356", "357", "358", "359", "360", |
60
|
|
|
|
|
|
|
"361", "362", "363", "364", "365", "366", "367", "368", "369", "370", |
61
|
|
|
|
|
|
|
"371", "372", "373", "374", "375", "376", "377", "378", "379", "380", |
62
|
|
|
|
|
|
|
"381", "382", "383", "384", "385", "386", "387", "388", "389", "390", |
63
|
|
|
|
|
|
|
"391", "392", "393", "394", "395", "396", "397", "398", "399", "400", |
64
|
|
|
|
|
|
|
"401", "402", "403", "404", "405", "406", "407", "408", "409", "410", |
65
|
|
|
|
|
|
|
"411", "412", "413", "414", "415", "416", "417", "418", "419", "420", |
66
|
|
|
|
|
|
|
"421", "422", "423", "424", "425", "426", "427", "428", "429", "430", |
67
|
|
|
|
|
|
|
"431", "432", "433", "434", "435", "436", "437", "438", "439", "440", |
68
|
|
|
|
|
|
|
"441", "442", "443", "444", "445", "446", "447", "448", "449", "450", |
69
|
|
|
|
|
|
|
"451", "452", "453", "454", "455", "456", "457", "458", "459", "460", |
70
|
|
|
|
|
|
|
"461", "462", "463", "464", "465", "466", "467", "468", "469", "470", |
71
|
|
|
|
|
|
|
"471", "472", "473", "474", "475", "476", "477", "478", "479", "480", |
72
|
|
|
|
|
|
|
"481", "482", "483", "484", "485", "486", "487", "488", "489", "490", |
73
|
|
|
|
|
|
|
"491", "492", "493", "494", "495", "496", "497", "498", "499", "500", |
74
|
|
|
|
|
|
|
"501", "502", "503", "504", "505", "506", "507", "508", "509", "510", |
75
|
|
|
|
|
|
|
"511", "512", "513", "514", "515", "516", "517", "518", "519", "520", |
76
|
|
|
|
|
|
|
"521", "522", "523", "524", "525", "526", "527", "528", "529", "530", |
77
|
|
|
|
|
|
|
"531", "532", "533", "534", "535", "536", "537", "538", "539", "540", |
78
|
|
|
|
|
|
|
"541", "542", "543", "544", "545", "546", "547", "548", "549", "550", |
79
|
|
|
|
|
|
|
"551", "552", "553", "554", "555", "556", "557", "558", "559", "560", |
80
|
|
|
|
|
|
|
"561", "562", "563", "564", "565", "566", "567", "568", "569", "570", |
81
|
|
|
|
|
|
|
"571", "572", "573", "574", "575", "576", "577", "578", "579", "580", |
82
|
|
|
|
|
|
|
"581", "582", "583", "584", "585", "586", "587", "588", "589", "590", |
83
|
|
|
|
|
|
|
"591", "592", "593", "594", "595", "596", "597", "598", "599", "600", |
84
|
|
|
|
|
|
|
"601", "602", "603", "604", "605", "606", "607", "608", "609", "610", |
85
|
|
|
|
|
|
|
"611", "612", "613", "614", "615", "616", "617", "618", "619", "620", |
86
|
|
|
|
|
|
|
"621", "622", "623", "624", "625", "626", "627", "628", "629", "630", |
87
|
|
|
|
|
|
|
"631", "632", "633", "634", "635", "636", "637", "638", "639", "640", |
88
|
|
|
|
|
|
|
"641", "642", "643", "644", "645", "646", "647", "648", "649", "650", |
89
|
|
|
|
|
|
|
"651", "652", "653", "654", "655", "656", "657", "658", "659", "660", |
90
|
|
|
|
|
|
|
"661", "662", "663", "664", "665", "666", "667", "668", "669", "670", |
91
|
|
|
|
|
|
|
"671", "672", "673", "674", "675", "676", "677", "678", "679", "680", |
92
|
|
|
|
|
|
|
"681", "682", "683", "684", "685", "686", "687", "688", "689", "690", |
93
|
|
|
|
|
|
|
"691", "692", "693", "694", "695", "696", "697", "698", "699", "700", |
94
|
|
|
|
|
|
|
"701", "702", "703", "704", "705", "706", "707", "708", "709", "710", |
95
|
|
|
|
|
|
|
"711", "712", "713", "714", "715", "716", "717", "718", "719", "720", |
96
|
|
|
|
|
|
|
"721", "722", "723", "724", "725", "726", "727", "728", "729", "730", |
97
|
|
|
|
|
|
|
"731", "732", "733", "734", "735", "736", "737", "738", "739", "740", |
98
|
|
|
|
|
|
|
"741", "742", "743", "744", "745", "746", "747", "748", "749", "750", |
99
|
|
|
|
|
|
|
"751", "752", "753", "754", "755", "756", "757", "758", "759", "760", |
100
|
|
|
|
|
|
|
"761", "762", "763", "764", "765", "766", "767", "768", "769", "770", |
101
|
|
|
|
|
|
|
"771", "772", "773", "774", "775", "776", "777", "778", "779", "780", |
102
|
|
|
|
|
|
|
"781", "782", "783", "784", "785", "786", "787", "788", "789", "790", |
103
|
|
|
|
|
|
|
"791", "792", "793", "794", "795", "796", "797", "798", "799", "800", |
104
|
|
|
|
|
|
|
"801", "802", "803", "804", "805", "806", "807", "808", "809", "810", |
105
|
|
|
|
|
|
|
"811", "812", "813", "814", "815", "816", "817", "818", "819", "820", |
106
|
|
|
|
|
|
|
"821", "822", "823", "824", "825", "826", "827", "828", "829", "830", |
107
|
|
|
|
|
|
|
"831", "832", "833", "834", "835", "836", "837", "838", "839", "840", |
108
|
|
|
|
|
|
|
"841", "842", "843", "844", "845", "846", "847", "848", "849", "850", |
109
|
|
|
|
|
|
|
"851", "852", "853", "854", "855", "856", "857", "858", "859", "860", |
110
|
|
|
|
|
|
|
"861", "862", "863", "864", "865", "866", "867", "868", "869", "870", |
111
|
|
|
|
|
|
|
"871", "872", "873", "874", "875", "876", "877", "878", "879", "880", |
112
|
|
|
|
|
|
|
"881", "882", "883", "884", "885", "886", "887", "888", "889", "890", |
113
|
|
|
|
|
|
|
"891", "892", "893", "894", "895", "896", "897", "898", "899", "900", |
114
|
|
|
|
|
|
|
"901", "902", "903", "904", "905", "906", "907", "908", "909", "910", |
115
|
|
|
|
|
|
|
"911", "912", "913", "914", "915", "916", "917", "918", "919", "920", |
116
|
|
|
|
|
|
|
"921", "922", "923", "924", "925", "926", "927", "928", "929", "930", |
117
|
|
|
|
|
|
|
"931", "932", "933", "934", "935", "936", "937", "938", "939", "940", |
118
|
|
|
|
|
|
|
"941", "942", "943", "944", "945", "946", "947", "948", "949", "950", |
119
|
|
|
|
|
|
|
"951", "952", "953", "954", "955", "956", "957", "958", "959", "960", |
120
|
|
|
|
|
|
|
"961", "962", "963", "964", "965", "966", "967", "968", "969", "970", |
121
|
|
|
|
|
|
|
"971", "972", "973", "974", "975", "976", "977", "978", "979", "980", |
122
|
|
|
|
|
|
|
"981", "982", "983", "984", "985", "986", "987", "988", "989", "990", |
123
|
|
|
|
|
|
|
"991", "992", "993", "994", "995", "996", "997", "998", "999" |
124
|
|
|
|
|
|
|
}; |
125
|
|
|
|
|
|
|
|
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
/* |
128
|
|
|
|
|
|
|
*-------------------------------------------------------------------------- |
129
|
|
|
|
|
|
|
* |
130
|
|
|
|
|
|
|
* bson_uint32_to_string -- |
131
|
|
|
|
|
|
|
* |
132
|
|
|
|
|
|
|
* Converts @value to a string. |
133
|
|
|
|
|
|
|
* |
134
|
|
|
|
|
|
|
* If @value is from 0 to 1000, it will use a constant string in the |
135
|
|
|
|
|
|
|
* data section of the library. |
136
|
|
|
|
|
|
|
* |
137
|
|
|
|
|
|
|
* If not, a string will be formatted using @str and snprintf(). This |
138
|
|
|
|
|
|
|
* is much slower, of course and therefore we try to optimize it out. |
139
|
|
|
|
|
|
|
* |
140
|
|
|
|
|
|
|
* @strptr will always be set. It will either point to @str or a |
141
|
|
|
|
|
|
|
* constant string. You will want to use this as your key. |
142
|
|
|
|
|
|
|
* |
143
|
|
|
|
|
|
|
* Parameters: |
144
|
|
|
|
|
|
|
* @value: A #uint32_t to convert to string. |
145
|
|
|
|
|
|
|
* @strptr: (out): A pointer to the resulting string. |
146
|
|
|
|
|
|
|
* @str: (out): Storage for a string made with snprintf. |
147
|
|
|
|
|
|
|
* @size: Size of @str. |
148
|
|
|
|
|
|
|
* |
149
|
|
|
|
|
|
|
* Returns: |
150
|
|
|
|
|
|
|
* The number of bytes in the resulting string. |
151
|
|
|
|
|
|
|
* |
152
|
|
|
|
|
|
|
* Side effects: |
153
|
|
|
|
|
|
|
* None. |
154
|
|
|
|
|
|
|
* |
155
|
|
|
|
|
|
|
*-------------------------------------------------------------------------- |
156
|
|
|
|
|
|
|
*/ |
157
|
|
|
|
|
|
|
|
158
|
|
|
|
|
|
|
size_t |
159
|
0
|
|
|
|
|
|
bson_uint32_to_string (uint32_t value, /* IN */ |
160
|
|
|
|
|
|
|
const char **strptr, /* OUT */ |
161
|
|
|
|
|
|
|
char *str, /* OUT */ |
162
|
|
|
|
|
|
|
size_t size) /* IN */ |
163
|
|
|
|
|
|
|
{ |
164
|
0
|
0
|
|
|
|
|
if (value < 1000) { |
165
|
0
|
|
|
|
|
|
*strptr = gUint32Strs[value]; |
166
|
|
|
|
|
|
|
|
167
|
0
|
0
|
|
|
|
|
if (value < 10) { |
168
|
0
|
|
|
|
|
|
return 1; |
169
|
0
|
0
|
|
|
|
|
} else if (value < 100) { |
170
|
0
|
|
|
|
|
|
return 2; |
171
|
|
|
|
|
|
|
} else { |
172
|
0
|
|
|
|
|
|
return 3; |
173
|
|
|
|
|
|
|
} |
174
|
|
|
|
|
|
|
} |
175
|
|
|
|
|
|
|
|
176
|
0
|
|
|
|
|
|
*strptr = str; |
177
|
|
|
|
|
|
|
|
178
|
0
|
|
|
|
|
|
return bson_snprintf (str, size, "%u", value); |
179
|
|
|
|
|
|
|
} |