#include <stdio.h>
#include "bson-keys.h"
#include "bson-string.h"
static
const
char
* gUint32Strs[] = {
"0"
,
"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"
,
"161"
,
"162"
,
"163"
,
"164"
,
"165"
,
"166"
,
"167"
,
"168"
,
"169"
,
"170"
,
"171"
,
"172"
,
"173"
,
"174"
,
"175"
,
"176"
,
"177"
,
"178"
,
"179"
,
"180"
,
"181"
,
"182"
,
"183"
,
"184"
,
"185"
,
"186"
,
"187"
,
"188"
,
"189"
,
"190"
,
"191"
,
"192"
,
"193"
,
"194"
,
"195"
,
"196"
,
"197"
,
"198"
,
"199"
,
"200"
,
"201"
,
"202"
,
"203"
,
"204"
,
"205"
,
"206"
,
"207"
,
"208"
,
"209"
,
"210"
,
"211"
,
"212"
,
"213"
,
"214"
,
"215"
,
"216"
,
"217"
,
"218"
,
"219"
,
"220"
,
"221"
,
"222"
,
"223"
,
"224"
,
"225"
,
"226"
,
"227"
,
"228"
,
"229"
,
"230"
,
"231"
,
"232"
,
"233"
,
"234"
,
"235"
,
"236"
,
"237"
,
"238"
,
"239"
,
"240"
,
"241"
,
"242"
,
"243"
,
"244"
,
"245"
,
"246"
,
"247"
,
"248"
,
"249"
,
"250"
,
"251"
,
"252"
,
"253"
,
"254"
,
"255"
,
"256"
,
"257"
,
"258"
,
"259"
,
"260"
,
"261"
,
"262"
,
"263"
,
"264"
,
"265"
,
"266"
,
"267"
,
"268"
,
"269"
,
"270"
,
"271"
,
"272"
,
"273"
,
"274"
,
"275"
,
"276"
,
"277"
,
"278"
,
"279"
,
"280"
,
"281"
,
"282"
,
"283"
,
"284"
,
"285"
,
"286"
,
"287"
,
"288"
,
"289"
,
"290"
,
"291"
,
"292"
,
"293"
,
"294"
,
"295"
,
"296"
,
"297"
,
"298"
,
"299"
,
"300"
,
"301"
,
"302"
,
"303"
,
"304"
,
"305"
,
"306"
,
"307"
,
"308"
,
"309"
,
"310"
,
"311"
,
"312"
,
"313"
,
"314"
,
"315"
,
"316"
,
"317"
,
"318"
,
"319"
,
"320"
,
"321"
,
"322"
,
"323"
,
"324"
,
"325"
,
"326"
,
"327"
,
"328"
,
"329"
,
"330"
,
"331"
,
"332"
,
"333"
,
"334"
,
"335"
,
"336"
,
"337"
,
"338"
,
"339"
,
"340"
,
"341"
,
"342"
,
"343"
,
"344"
,
"345"
,
"346"
,
"347"
,
"348"
,
"349"
,
"350"
,
"351"
,
"352"
,
"353"
,
"354"
,
"355"
,
"356"
,
"357"
,
"358"
,
"359"
,
"360"
,
"361"
,
"362"
,
"363"
,
"364"
,
"365"
,
"366"
,
"367"
,
"368"
,
"369"
,
"370"
,
"371"
,
"372"
,
"373"
,
"374"
,
"375"
,
"376"
,
"377"
,
"378"
,
"379"
,
"380"
,
"381"
,
"382"
,
"383"
,
"384"
,
"385"
,
"386"
,
"387"
,
"388"
,
"389"
,
"390"
,
"391"
,
"392"
,
"393"
,
"394"
,
"395"
,
"396"
,
"397"
,
"398"
,
"399"
,
"400"
,
"401"
,
"402"
,
"403"
,
"404"
,
"405"
,
"406"
,
"407"
,
"408"
,
"409"
,
"410"
,
"411"
,
"412"
,
"413"
,
"414"
,
"415"
,
"416"
,
"417"
,
"418"
,
"419"
,
"420"
,
"421"
,
"422"
,
"423"
,
"424"
,
"425"
,
"426"
,
"427"
,
"428"
,
"429"
,
"430"
,
"431"
,
"432"
,
"433"
,
"434"
,
"435"
,
"436"
,
"437"
,
"438"
,
"439"
,
"440"
,
"441"
,
"442"
,
"443"
,
"444"
,
"445"
,
"446"
,
"447"
,
"448"
,
"449"
,
"450"
,
"451"
,
"452"
,
"453"
,
"454"
,
"455"
,
"456"
,
"457"
,
"458"
,
"459"
,
"460"
,
"461"
,
"462"
,
"463"
,
"464"
,
"465"
,
"466"
,
"467"
,
"468"
,
"469"
,
"470"
,
"471"
,
"472"
,
"473"
,
"474"
,
"475"
,
"476"
,
"477"
,
"478"
,
"479"
,
"480"
,
"481"
,
"482"
,
"483"
,
"484"
,
"485"
,
"486"
,
"487"
,
"488"
,
"489"
,
"490"
,
"491"
,
"492"
,
"493"
,
"494"
,
"495"
,
"496"
,
"497"
,
"498"
,
"499"
,
"500"
,
"501"
,
"502"
,
"503"
,
"504"
,
"505"
,
"506"
,
"507"
,
"508"
,
"509"
,
"510"
,
"511"
,
"512"
,
"513"
,
"514"
,
"515"
,
"516"
,
"517"
,
"518"
,
"519"
,
"520"
,
"521"
,
"522"
,
"523"
,
"524"
,
"525"
,
"526"
,
"527"
,
"528"
,
"529"
,
"530"
,
"531"
,
"532"
,
"533"
,
"534"
,
"535"
,
"536"
,
"537"
,
"538"
,
"539"
,
"540"
,
"541"
,
"542"
,
"543"
,
"544"
,
"545"
,
"546"
,
"547"
,
"548"
,
"549"
,
"550"
,
"551"
,
"552"
,
"553"
,
"554"
,
"555"
,
"556"
,
"557"
,
"558"
,
"559"
,
"560"
,
"561"
,
"562"
,
"563"
,
"564"
,
"565"
,
"566"
,
"567"
,
"568"
,
"569"
,
"570"
,
"571"
,
"572"
,
"573"
,
"574"
,
"575"
,
"576"
,
"577"
,
"578"
,
"579"
,
"580"
,
"581"
,
"582"
,
"583"
,
"584"
,
"585"
,
"586"
,
"587"
,
"588"
,
"589"
,
"590"
,
"591"
,
"592"
,
"593"
,
"594"
,
"595"
,
"596"
,
"597"
,
"598"
,
"599"
,
"600"
,
"601"
,
"602"
,
"603"
,
"604"
,
"605"
,
"606"
,
"607"
,
"608"
,
"609"
,
"610"
,
"611"
,
"612"
,
"613"
,
"614"
,
"615"
,
"616"
,
"617"
,
"618"
,
"619"
,
"620"
,
"621"
,
"622"
,
"623"
,
"624"
,
"625"
,
"626"
,
"627"
,
"628"
,
"629"
,
"630"
,
"631"
,
"632"
,
"633"
,
"634"
,
"635"
,
"636"
,
"637"
,
"638"
,
"639"
,
"640"
,
"641"
,
"642"
,
"643"
,
"644"
,
"645"
,
"646"
,
"647"
,
"648"
,
"649"
,
"650"
,
"651"
,
"652"
,
"653"
,
"654"
,
"655"
,
"656"
,
"657"
,
"658"
,
"659"
,
"660"
,
"661"
,
"662"
,
"663"
,
"664"
,
"665"
,
"666"
,
"667"
,
"668"
,
"669"
,
"670"
,
"671"
,
"672"
,
"673"
,
"674"
,
"675"
,
"676"
,
"677"
,
"678"
,
"679"
,
"680"
,
"681"
,
"682"
,
"683"
,
"684"
,
"685"
,
"686"
,
"687"
,
"688"
,
"689"
,
"690"
,
"691"
,
"692"
,
"693"
,
"694"
,
"695"
,
"696"
,
"697"
,
"698"
,
"699"
,
"700"
,
"701"
,
"702"
,
"703"
,
"704"
,
"705"
,
"706"
,
"707"
,
"708"
,
"709"
,
"710"
,
"711"
,
"712"
,
"713"
,
"714"
,
"715"
,
"716"
,
"717"
,
"718"
,
"719"
,
"720"
,
"721"
,
"722"
,
"723"
,
"724"
,
"725"
,
"726"
,
"727"
,
"728"
,
"729"
,
"730"
,
"731"
,
"732"
,
"733"
,
"734"
,
"735"
,
"736"
,
"737"
,
"738"
,
"739"
,
"740"
,
"741"
,
"742"
,
"743"
,
"744"
,
"745"
,
"746"
,
"747"
,
"748"
,
"749"
,
"750"
,
"751"
,
"752"
,
"753"
,
"754"
,
"755"
,
"756"
,
"757"
,
"758"
,
"759"
,
"760"
,
"761"
,
"762"
,
"763"
,
"764"
,
"765"
,
"766"
,
"767"
,
"768"
,
"769"
,
"770"
,
"771"
,
"772"
,
"773"
,
"774"
,
"775"
,
"776"
,
"777"
,
"778"
,
"779"
,
"780"
,
"781"
,
"782"
,
"783"
,
"784"
,
"785"
,
"786"
,
"787"
,
"788"
,
"789"
,
"790"
,
"791"
,
"792"
,
"793"
,
"794"
,
"795"
,
"796"
,
"797"
,
"798"
,
"799"
,
"800"
,
"801"
,
"802"
,
"803"
,
"804"
,
"805"
,
"806"
,
"807"
,
"808"
,
"809"
,
"810"
,
"811"
,
"812"
,
"813"
,
"814"
,
"815"
,
"816"
,
"817"
,
"818"
,
"819"
,
"820"
,
"821"
,
"822"
,
"823"
,
"824"
,
"825"
,
"826"
,
"827"
,
"828"
,
"829"
,
"830"
,
"831"
,
"832"
,
"833"
,
"834"
,
"835"
,
"836"
,
"837"
,
"838"
,
"839"
,
"840"
,
"841"
,
"842"
,
"843"
,
"844"
,
"845"
,
"846"
,
"847"
,
"848"
,
"849"
,
"850"
,
"851"
,
"852"
,
"853"
,
"854"
,
"855"
,
"856"
,
"857"
,
"858"
,
"859"
,
"860"
,
"861"
,
"862"
,
"863"
,
"864"
,
"865"
,
"866"
,
"867"
,
"868"
,
"869"
,
"870"
,
"871"
,
"872"
,
"873"
,
"874"
,
"875"
,
"876"
,
"877"
,
"878"
,
"879"
,
"880"
,
"881"
,
"882"
,
"883"
,
"884"
,
"885"
,
"886"
,
"887"
,
"888"
,
"889"
,
"890"
,
"891"
,
"892"
,
"893"
,
"894"
,
"895"
,
"896"
,
"897"
,
"898"
,
"899"
,
"900"
,
"901"
,
"902"
,
"903"
,
"904"
,
"905"
,
"906"
,
"907"
,
"908"
,
"909"
,
"910"
,
"911"
,
"912"
,
"913"
,
"914"
,
"915"
,
"916"
,
"917"
,
"918"
,
"919"
,
"920"
,
"921"
,
"922"
,
"923"
,
"924"
,
"925"
,
"926"
,
"927"
,
"928"
,
"929"
,
"930"
,
"931"
,
"932"
,
"933"
,
"934"
,
"935"
,
"936"
,
"937"
,
"938"
,
"939"
,
"940"
,
"941"
,
"942"
,
"943"
,
"944"
,
"945"
,
"946"
,
"947"
,
"948"
,
"949"
,
"950"
,
"951"
,
"952"
,
"953"
,
"954"
,
"955"
,
"956"
,
"957"
,
"958"
,
"959"
,
"960"
,
"961"
,
"962"
,
"963"
,
"964"
,
"965"
,
"966"
,
"967"
,
"968"
,
"969"
,
"970"
,
"971"
,
"972"
,
"973"
,
"974"
,
"975"
,
"976"
,
"977"
,
"978"
,
"979"
,
"980"
,
"981"
,
"982"
,
"983"
,
"984"
,
"985"
,
"986"
,
"987"
,
"988"
,
"989"
,
"990"
,
"991"
,
"992"
,
"993"
,
"994"
,
"995"
,
"996"
,
"997"
,
"998"
,
"999"
};
size_t
bson_uint32_to_string (uint32_t value,
const
char
**strptr,
char
*str,
size_t
size)
{
if
(value < 1000) {
*strptr = gUint32Strs[value];
if
(value < 10) {
return
1;
}
else
if
(value < 100) {
return
2;
}
else
{
return
3;
}
}
*strptr = str;
return
bson_snprintf (str, size,
"%u"
, value);
}