@@ -52,6 +52,7 @@ public static class BsonTypeMapper
52
52
{ typeof ( BsonString ) , Conversion . None } ,
53
53
{ typeof ( BsonSymbol ) , Conversion . None } ,
54
54
{ typeof ( BsonTimestamp ) , Conversion . None } ,
55
+ { typeof ( BsonUndefined ) , Conversion . None } ,
55
56
{ typeof ( BsonValue ) , Conversion . None } ,
56
57
{ typeof ( byte ) , Conversion . ByteToBsonInt32 } ,
57
58
{ typeof ( byte [ ] ) , Conversion . ByteArrayToBsonBinary } ,
@@ -86,7 +87,9 @@ public static class BsonTypeMapper
86
87
{ Mapping . FromTo ( typeof ( BsonJavaScript ) , BsonType . JavaScript ) , Conversion . None } ,
87
88
{ Mapping . FromTo ( typeof ( BsonJavaScript ) , BsonType . JavaScriptWithScope ) , Conversion . BsonJavaScriptToBsonJavaScriptWithScope } ,
88
89
{ Mapping . FromTo ( typeof ( BsonJavaScriptWithScope ) , BsonType . JavaScriptWithScope ) , Conversion . None } ,
90
+ { Mapping . FromTo ( typeof ( BsonMaxKey ) , BsonType . Boolean ) , Conversion . BsonMaxKeyToBsonBoolean } ,
89
91
{ Mapping . FromTo ( typeof ( BsonMaxKey ) , BsonType . MaxKey ) , Conversion . None } ,
92
+ { Mapping . FromTo ( typeof ( BsonMinKey ) , BsonType . Boolean ) , Conversion . BsonMinKeyToBsonBoolean } ,
90
93
{ Mapping . FromTo ( typeof ( BsonMinKey ) , BsonType . MinKey ) , Conversion . None } ,
91
94
{ Mapping . FromTo ( typeof ( BsonNull ) , BsonType . Boolean ) , Conversion . BsonNullToBsonBoolean } ,
92
95
{ Mapping . FromTo ( typeof ( BsonNull ) , BsonType . Null ) , Conversion . None } ,
@@ -95,6 +98,8 @@ public static class BsonTypeMapper
95
98
{ Mapping . FromTo ( typeof ( BsonString ) , BsonType . String ) , Conversion . None } ,
96
99
{ Mapping . FromTo ( typeof ( BsonSymbol ) , BsonType . Symbol ) , Conversion . None } ,
97
100
{ Mapping . FromTo ( typeof ( BsonTimestamp ) , BsonType . Timestamp ) , Conversion . None } ,
101
+ { Mapping . FromTo ( typeof ( BsonUndefined ) , BsonType . Boolean ) , Conversion . BsonUndefinedToBsonBoolean } ,
102
+ { Mapping . FromTo ( typeof ( BsonUndefined ) , BsonType . Undefined ) , Conversion . None } ,
98
103
{ Mapping . FromTo ( typeof ( byte ) , BsonType . Boolean ) , Conversion . ByteToBsonBoolean } ,
99
104
{ Mapping . FromTo ( typeof ( byte ) , BsonType . Double ) , Conversion . ByteToBsonDouble } ,
100
105
{ Mapping . FromTo ( typeof ( byte ) , BsonType . Int32 ) , Conversion . ByteToBsonInt32 } ,
@@ -320,6 +325,11 @@ private static BsonValue Convert(object value, Conversion conversion)
320
325
{
321
326
// note: I expect this switch statement to be compiled using a jump table and therefore to be very efficient
322
327
case Conversion . None : return ( BsonValue ) value ;
328
+ case Conversion . BsonJavaScriptToBsonJavaScriptWithScope : return BsonJavaScriptWithScope . Create ( ( ( BsonJavaScript ) value ) . Code , new BsonDocument ( ) ) ;
329
+ case Conversion . BsonMaxKeyToBsonBoolean : return BsonBoolean . True ;
330
+ case Conversion . BsonMinKeyToBsonBoolean : return BsonBoolean . True ;
331
+ case Conversion . BsonNullToBsonBoolean : return BsonBoolean . False ;
332
+ case Conversion . BsonUndefinedToBsonBoolean : return BsonBoolean . False ;
323
333
case Conversion . ByteArrayToBsonBinary : return new BsonBinaryData ( ( byte [ ] ) value ) ;
324
334
case Conversion . ByteArrayToBsonObjectId : return BsonObjectId . Create ( ( byte [ ] ) value ) ;
325
335
case Conversion . ByteToBsonBoolean : return BsonBoolean . Create ( ( byte ) value != 0 ) ;
@@ -344,15 +354,12 @@ private static BsonValue Convert(object value, Conversion conversion)
344
354
case Conversion . Int64ToBsonBoolean : return BsonBoolean . Create ( ( long ) value != 0 ) ;
345
355
case Conversion . Int64ToBsonDouble : return new BsonDouble ( ( double ) ( long ) value ) ;
346
356
case Conversion . Int64ToBsonTimestamp : return new BsonTimestamp ( ( long ) value ) ;
347
- case Conversion . BsonMaxKeyToBsonBoolean : return BsonBoolean . True ;
348
- case Conversion . BsonMinKeyToBsonBoolean : return BsonBoolean . True ;
349
357
case Conversion . NewBsonBoolean : return BsonBoolean . Create ( ( bool ) value ) ;
350
358
case Conversion . NewBsonDouble : return new BsonDouble ( ( double ) value ) ;
351
359
case Conversion . NewBsonInt32 : return BsonInt32 . Create ( ( int ) value ) ;
352
360
case Conversion . NewBsonInt64 : return new BsonInt64 ( ( long ) value ) ;
353
361
case Conversion . NewBsonObjectId : return new BsonObjectId ( ( ObjectId ) value ) ;
354
362
case Conversion . NewBsonString : return new BsonString ( ( string ) value ) ;
355
- case Conversion . BsonNullToBsonBoolean : return BsonBoolean . False ;
356
363
case Conversion . RegexToBsonRegularExpression : return new BsonRegularExpression ( ( Regex ) value ) ;
357
364
case Conversion . SByteToBsonBoolean : return BsonBoolean . Create ( ( sbyte ) value != 0 ) ;
358
365
case Conversion . SByteToBsonDouble : return new BsonDouble ( ( double ) ( sbyte ) value ) ;
@@ -395,6 +402,11 @@ private static BsonValue Convert(object value, Conversion conversion)
395
402
private enum Conversion
396
403
{
397
404
None ,
405
+ BsonJavaScriptToBsonJavaScriptWithScope ,
406
+ BsonMaxKeyToBsonBoolean ,
407
+ BsonMinKeyToBsonBoolean ,
408
+ BsonNullToBsonBoolean ,
409
+ BsonUndefinedToBsonBoolean ,
398
410
ByteArrayToBsonBinary ,
399
411
ByteArrayToBsonObjectId ,
400
412
ByteToBsonBoolean ,
@@ -419,16 +431,12 @@ private enum Conversion
419
431
Int64ToBsonBoolean ,
420
432
Int64ToBsonDouble ,
421
433
Int64ToBsonTimestamp ,
422
- BsonJavaScriptToBsonJavaScriptWithScope ,
423
- BsonMaxKeyToBsonBoolean ,
424
- BsonMinKeyToBsonBoolean ,
425
434
NewBsonBoolean ,
426
435
NewBsonDouble ,
427
436
NewBsonInt32 ,
428
437
NewBsonInt64 ,
429
438
NewBsonObjectId ,
430
439
NewBsonString ,
431
- BsonNullToBsonBoolean ,
432
440
RegexToBsonRegularExpression ,
433
441
SByteToBsonBoolean ,
434
442
SByteToBsonDouble ,
0 commit comments