1 /** 2 * Copyright: © 2012-2014 Anton Gushcha 3 * License: Subject to the terms of the MIT license, as written in the included LICENSE file. 4 * Authors: NCrashed <ncrashed@gmail.com>, 5 * LeMarwin <lemarwin42@gmail.com>, 6 * Nazgull09 <nazgull90@gmail.com> 7 */ 8 module devol.std.typevoid; 9 10 import devol.type; 11 import devol.std.argscope; 12 import devol.std.line; 13 import std.stream; 14 15 import dyaml.all; 16 17 public 18 { 19 import devol.std.argvoid; 20 } 21 22 class TypeVoid : Type 23 { 24 this() 25 { 26 super("TypeVoid"); 27 } 28 29 override Argument getNewArg() 30 { 31 return new ArgVoid; 32 } 33 34 override Argument getNewArg(string min, string max, string[] exVal) 35 { 36 return new ArgVoid; 37 } 38 39 override Argument loadArgument(InputStream stream) 40 { 41 char[] cont; 42 stream.read(cont); 43 44 if(cont == "line") 45 { 46 return Line.loadBinary(stream); 47 } 48 else if(cont == "scope") 49 { 50 return ArgScope.loadBinary(stream); 51 } 52 else if(cont == "plain") 53 { 54 return new ArgVoid; 55 } 56 57 throw new Exception("Unknown void container!"); 58 } 59 60 override Argument loadArgument(Node node) 61 { 62 switch(node["class"].as!string) 63 { 64 case("line"): 65 { 66 return Line.loadYaml(node); 67 } 68 case("scope"): 69 { 70 return ArgScope.loadYaml(node); 71 } 72 case("plain"): 73 { 74 return new ArgVoid; 75 } 76 default: 77 { 78 throw new Exception("Unknown void container!"); 79 } 80 } 81 } 82 }