Changeset 81

Show
Ignore:
Timestamp:
10/15/10 09:50:50 (2 years ago)
Author:
aarti_pl
Message:

- another bunch of changes to make everything compile in D2.0

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Doost.cbp

    r80 r81  
    3434                <Option type="1" /> 
    3535                <Option compiler="dmd" /> 
     36                <Compiler> 
     37                    <Add option="-unittest" /> 
     38                    <Add option="-g" /> 
     39                    <Add option="-debug" /> 
     40                </Compiler> 
    3641            </Target> 
    3742        </Build> 
     
    4247            <Add option="-D" /> 
    4348            <Add option="-Dd$(#doost)/doc/ddoc/" /> 
    44             <Add option="-version=ddbi_v62" /> 
    4549            <Add directory="$(#doost)" /> 
    4650            <Add directory="$(#std2)" /> 
     
    126130            <Option target="AnyTest" /> 
    127131        </Unit> 
     132        <Unit filename="examples\util\config\FunctionTest.d"> 
     133            <Option target="ProgramOptionsTest" /> 
     134        </Unit> 
    128135        <Unit filename="examples\util\serializer\DataTypes.d"> 
    129136            <Option target="SerializerTest" /> 
  • trunk/doost/core/Any.d

    r74 r81  
    119119        Allows to retrieve originall value as given type. 
    120120     **************************************************************************/ 
    121     ValueType as(ValueType)() { 
     121    T as(T)() { 
    122122        assert(!empty, "Error: requested conversion from empty value"); 
    123         assert(type==typeid(ValueType), "Error: type of value (" ~ type.toString() ~ 
    124                 ") is different than requested (" ~ typeid(ValueType).toString() ~ ")."); 
    125  
    126         auto p = cast(Holder!(ValueType))(content); 
     123        assert(type==typeid(T), "Error: type of value (" ~ type.toString() ~ 
     124                ") is different than requested (" ~ typeid(T).toString() ~ ")."); 
     125 
     126        auto p = cast(Holder!(T))(content); 
    127127        return p.held; 
    128128    } 
  • trunk/doost/sys/Environment.d

    r76 r81  
    3131                private bool FreeEnvironmentStringsW(wchar**); 
    3232                private int SetEnvironmentVariableW(wchar*, wchar*); 
    33                 private uint GetEnvironmentVariableW(wchar*, wchar*, uint); 
     33                private uint GetEnvironmentVariableW(immutable wchar*, immutable wchar*, uint); 
    3434                alias uint DWORD; 
    3535                DWORD GetLastError(); 
     
    8383                **************************************************************/ 
    8484 
    85                 static char[] get (char[] variable, char[] def = null) 
     85                static string get (string variable, string def = null) 
    8686                { 
    8787                        wstring var = to!(wstring)(variable) ~ "\0"; 
    8888 
    89                         uint size = GetEnvironmentVariableW(var.ptr, cast(wchar*)null, 0); 
     89                        uint size = GetEnvironmentVariableW(var.ptr, cast(immutable wchar*)null, 0); 
    9090                        if (size is 0) 
    9191                           { 
     
    9797 
    9898                        auto buffer = new wchar[size]; 
    99                         size = GetEnvironmentVariableW(var.ptr, buffer.ptr, size); 
     99                        size = GetEnvironmentVariableW(var.ptr, cast(immutable wchar*)buffer.ptr, size); 
    100100                        if (size is 0) 
    101101                            throw new Exception ("Can not read environment variable"); 
     
    111111                **************************************************************/ 
    112112 
    113                 static bool exists(char[] variable) 
    114                 { 
    115                         wchar[] var = toUtf16(variable) ~ "\0"; 
     113                static bool exists(string variable) 
     114                { 
     115                        wstring var = toUtf16(variable) ~ "\0"; 
    116116 
    117117                        uint size = GetEnvironmentVariableW(var.ptr, cast(wchar*)null, 0); 
     
    132132                **************************************************************/ 
    133133 
    134                 static void set (char[] variable, char[] value = null) 
    135                 { 
    136                         wchar * var, val; 
     134                static void set (string variable, string value = null) 
     135                { 
     136                        wchar* var, val; 
    137137 
    138138                        var = (toUtf16 (variable) ~ "\0").ptr; 
     
    149149                **************************************************************/ 
    150150 
    151                 static char[][char[]] get () 
    152                 { 
    153                         char[][char[]] arr; 
    154  
    155                         wchar[] key = new wchar[20], 
     151                static string[string] get () 
     152                { 
     153                        string[string] arr; 
     154 
     155                        wstring key = new wchar[20], 
    156156                                value = new wchar[40]; 
    157157 
     
    176176                            while (*str) 
    177177                                  { 
    178                                   value [v++] = *str++; 
     178                                  value[v++] = *str++; 
    179179 
    180180                                  if (v is value.length) 
     
    198198                **************************************************************/ 
    199199 
    200                 static bool exists(char[] variable) 
     200                static bool exists(string variable) 
    201201                { 
    202202                    char* ptr = getenv (variable.ptr); 
     
    213213                **************************************************************/ 
    214214 
    215                 static char[] get (char[] variable, char[] def = null) 
     215                static string get (string variable, string def = null) 
    216216                { 
    217217                        char* ptr = getenv (variable.ptr); 
     
    228228                **************************************************************/ 
    229229 
    230                 static void set (char[] variable, char[] value = null) 
     230                static void set (string variable, string value = null) 
    231231                { 
    232232                        int result; 
     
    245245                **************************************************************/ 
    246246 
    247                 static char[][char[]] get () 
    248                 { 
    249                         char[][char[]] arr; 
     247                static string[string] get () 
     248                { 
     249                        string[string] arr; 
    250250 
    251251                        for (char** p = environ; *p; ++p) 
     
    256256                            while (*str++ != '=') 
    257257                                   ++k; 
    258                             char[] key = (*p)[0..k]; 
     258                            string key = (*p)[0..k]; 
    259259 
    260260                            k = 0; 
     
    275275 
    276276 
    277         void main(char[][] args) 
    278         { 
    279         const char[] VAR = "TESTENVVAR"; 
    280         const char[] VAL1 = "VAL1"; 
    281         const char[] VAL2 = "VAL2"; 
     277        void main(string[] args) 
     278        { 
     279        string VAR = "TESTENVVAR"; 
     280        string VAL1 = "VAL1"; 
     281        string VAL2 = "VAL2"; 
    282282 
    283283        assert(Environment.get(VAR) is null); 
  • trunk/doost/text/ElementSet.d

    r73 r81  
    44 
    55struct ElementRange(T) { 
    6     private T l; 
    7     private T r; 
     6    private Unqual!T l; 
     7    private Unqual!T r; 
    88 
    99    immutable bool contains(T c) { 
     
    128128    } 
    129129 
     130    void addElement(T element) { 
     131        ElementRange!(T) range = {element, element}; 
     132        ranges = ranges ~ range; 
     133    } 
     134 
    130135    immutable ElementSet!(T) dup() { 
    131136        ElementSet!(T) cc; 
     
    134139            cc.addRange(p.dup()); 
    135140        } 
    136  
    137141        return cc; 
    138142    } 
  • trunk/doost/util/config/Exception.d

    r80 r81  
    2020//------------------------------------------------------------------------------ 
    2121//String definitions for asserts (only debug version) 
    22 //NOTE: Asserts are used everywhere where problem is caused with incorrect code written 
     22//NOTE: Asserts are used everywhere if problem is caused with incorrect code written 
    2323//to work with ProgramOptions. It includes incorrect options definitions. 
    2424 
  • trunk/doost/util/config/Formatter.d

    r80 r81  
    2020import std.string; 
    2121import std.stdio; 
     22import std.algorithm : max; 
     23 
    2224import doost.util.config.Option; 
    23 import doost.util.config.Utils; 
    2425 
    2526//------------------------------------------------------------------------------ 
  • trunk/doost/util/config/Option.d

    r76 r81  
    253253     **************************************************************************/ 
    254254    void name(string s) 
    255     in { 
    256         assert(s != ""); 
    257     } 
     255//BUG-DMD: when below is turned on 
     256//    in { 
     257//        assert(s != ""); 
     258//    } 
    258259    body { 
    259         string name=s.dup
    260         int n = find(name, ','); 
     260        string name=s
     261        int n = indexOf(name, ','); 
    261262 
    262263        assert(n != name.length-1, format(COMMA_CAN_NOT_BE_ON_LAST_POSITION, name)); 
     
    299300     **************************************************************************/ 
    300301    void duplicate(typeof(this) result) { 
    301         result.m_oAlias = m_oAlias.dup; 
    302         result.m_oName = m_oName.dup; 
    303         result.m_description = m_description is null ? null : m_description.dup; 
     302        result.m_oAlias = m_oAlias.idup; 
     303        result.m_oName = m_oName.idup; 
     304        result.m_description = m_description is null ? null : m_description.idup; 
    304305        result.m_semantic = m_semantic is null ? null : m_semantic.dup; 
    305306        result.m_characteristics = m_characteristics; 
     
    761762     **************************************************************************/ 
    762763    typeof(this) duplicate(typeof(this) result) { 
    763         result.m_caption = m_caption.dup; 
     764        result.m_caption = m_caption.idup; 
    764765 
    765766        foreach(opt; m_options) 
     
    892893     **************************************************************************/ 
    893894    this(string caption) { 
    894         m_caption=caption.dup; 
     895        m_caption=caption.idup; 
    895896    } 
    896897 
  • trunk/doost/util/config/PoTextArchive.d

    r76 r81  
    3030 
    3131    bool start() { 
    32         arrayTerm.add(defArray.begin); 
    33         arrayTerm.add(defArray.end); 
    34         arrayTerm.add(defArray.separator); 
     32        arrayTerm.addElement(defArray.begin); 
     33        arrayTerm.addElement(defArray.end); 
     34        arrayTerm.addElement(defArray.separator); 
    3535 
    36         asocArrayTerm.add(defArray.begin); 
    37         asocArrayTerm.add(defArray.end); 
    38         asocArrayTerm.add(defArray.separator); 
    39         asocArrayTerm.add(defArray.kvseparator); 
     36        asocArrayTerm.addElement(defArray.begin); 
     37        asocArrayTerm.addElement(defArray.end); 
     38        asocArrayTerm.addElement(defArray.separator); 
     39        asocArrayTerm.addElement(defArray.kvseparator); 
    4040 
    41         udtTerm.add(defArray.begin); 
    42         udtTerm.add(defArray.end); 
    43         udtTerm.add(defUdt.separator); 
     41        udtTerm.addElement(defArray.begin); 
     42        udtTerm.addElement(defArray.end); 
     43        udtTerm.addElement(defUdt.separator); 
    4444 
    4545        return true; 
     
    5353        } 
    5454 
    55         arrayElementType!(VALUE) elem; 
     55        ElementType!(VALUE) elem; 
    5656 
    57         static if (isString!(typeof(elem))) { 
     57        static if (isSomeString!(typeof(elem))) { 
    5858            ElementSet!(ELEMENTTYPE) old = defString.p_allchars; 
    5959            defString.p_allchars.subtract(arrayTerm); 
  • trunk/doost/util/config/ProgramOptions.d

    r76 r81  
    336336                     be dispatched (true for notifications) 
    337337     **************************************************************************/ 
    338     void synchronize(bool nf=true); 
     338    void synchronize(bool nf = true); 
    339339 
    340340    /*************************************************************************** 
  • trunk/doost/util/config/Utils.d

    r76 r81  
    2727 
    2828/******************************************************************************* 
    29     Returns bigger of two given parameters. Type must have implemented 
    30     comparision operator. 
    31  
    32     Params: a = first value 
    33             b = second value 
    34  ******************************************************************************/ 
    35 T max(T)(T a, T b) { 
    36     if (a>=b) return a; 
    37     else return b; 
    38 } 
    39  
    40 //------------------------------------------------------------------------------ 
    41  
    42 /******************************************************************************* 
    4329 ******************************************************************************/ 
    4430string loadFileContents(string file) { 
  • trunk/doost/util/config/Value.d

    r80 r81  
    2727import doost.text.Scanner; 
    2828import doost.text.Escaper; 
     29import doost.text.ElementSet; 
    2930import doost.util.serializer.Serializer; 
    3031import doost.util.config.PoTextArchive; 
     
    3940static this() { 
    4041    serializer = new PoSerializer; 
    41     serializer.global.defString.p_midchars = CharClass!(char).emptyset; 
    42     serializer.global.defString.p_allchars = CharClass!(char).any_char; 
    43     serializer.global.defString.p_allchars.subtract(serializer.global().defSkip.p_skip); 
     42    serializer.global.defString.p_midchars = cast(ElementSet!(immutable char))ElementSet!(immutable char).emptyset; 
     43    serializer.global.defString.p_allchars = cast(ElementSet!(immutable char))ElementSet!(immutable char).any_char; 
     44    serializer.global.defString.p_allchars.subtract(serializer.global.defSkip.p_skip); 
    4445} 
    4546 
     
    4748 
    4849//------------------------------------------------------------------------------ 
    49  
    50 /******************************************************************************* 
    51     Evaluates to true if given type is array 
    52  ******************************************************************************/ 
    53 template isArray( T ) { 
    54     static if( is( T U : U[] ) ) 
    55         const isArray = true; 
    56     else 
    57         const isArray = false; 
    58 } 
    59  
    60 //------------------------------------------------------------------------------ 
    61  
    62 /******************************************************************************* 
    63     Evaluates to type 
    64  ******************************************************************************/ 
    65 template arrayElementType(T) { 
    66     static if( is( T U : U[] ) ) 
    67         alias U arrayElementType; 
    68     else 
    69         static assert(false); 
    70 } 
    7150 
    7251/******************************************************************************* 
     
    347326            if (token.length == 0 && m_zero_tokens) { 
    348327                //bool switch 
    349                 return !(m_default_value.as!(bool)); 
     328                value.assign(!(m_default_value.as!(bool))); 
     329                return; 
    350330            } 
    351331        } 
  • trunk/doost/util/config/storages/CommandLineStorage.d

    r80 r81  
    10111011        if  (args[0].length > 2 && ((args[0][0] == '-' && args[0][1] != '-') 
    10121012            || ((m_style & Style.AllowShortSlash) && args[0][0] == '/'))) { 
    1013                 if (args[0][0]=='/') args[0][0]='-'; 
    1014                 args[0]= '-' ~ args[0]; 
     1013                string line = args[0]; 
     1014 
     1015                if (line[0] == '/') line = '-' ~ line[1..$]; 
     1016                line = '-' ~ line; 
     1017 
     1018                args[0] = line; 
    10151019                result = parseLongOption(args); 
    10161020        } 
  • trunk/doost/util/config/storages/ConfigFileStorage.d

    r80 r81  
    3636class InvalidConfigFileSyntaxException : ProgramOptionsException { 
    3737public: 
    38     this(char[] token, char[] msg) { 
     38    this(string token, string msg) { 
    3939        super(msg ~ " in '" ~ token ~ "'"); 
    4040    } 
     
    7474        Params: file = file name 
    7575     **************************************************************************/ 
    76     this(char[] file, RegularOptions ro = null) 
     76    this(string file, RegularOptions ro = null) 
    7777    in { 
    7878        assert(file != ""); 
     
    9090        Params: file = file name 
    9191     **************************************************************************/ 
    92     ConfigFileStorage file(char[] file) 
     92    ConfigFileStorage file(string file) 
    9393    in { 
    9494        assert(isConnected == false, format(STACK_SHOULD_BE_DISCONNECTED, "to set config file")); 
     
    9696    } 
    9797    body { 
    98         m_file = file.dup; 
     98        m_file = file.idup; 
    9999        return this; 
    100100    } 
     
    104104        Returns: file name which is used for reading configuration 
    105105     **************************************************************************/ 
    106     char[] file() { 
     106    string file() { 
    107107        return m_file; 
    108108    } 
     
    115115                definedPrefixes = reference to array of already used prefixes 
    116116     **************************************************************************/ 
    117     void checkPrefixes(char[] prefix, ref bool[char[]] definedPrefixes) { 
     117    void checkPrefixes(string prefix, ref bool[string] definedPrefixes) { 
    118118        if (prefix !is null) { 
    119119            if (prefix in definedPrefixes) 
     
    127127     **************************************************************************/ 
    128128    override OptionsMap readPhysicallyAll() { 
    129         char[][] lines = splitlines(loadFile(m_file)); 
    130         bool[char[]] definedPrefixes; 
     129        string[] lines = splitlines(loadFile(m_file)); 
     130        bool[string] definedPrefixes; 
    131131        FileLine fl; 
    132         char[] lastPrefix, name, normName; 
     132        string lastPrefix, name, normName; 
    133133        OptionsMap result; 
    134134        ParsedOption[] opts; 
     
    155155        See: ConcreteStorage 
    156156     **************************************************************************/ 
    157     override Value readPhysicallyOne(char[] name) { 
    158         char[][] lines = splitlines(loadFile(m_file)); 
    159         bool[char[]] definedPrefixes; 
    160         char[] lastPrefix, nm; 
     157    override Value readPhysicallyOne(string name) { 
     158        string[] lines = splitlines(loadFile(m_file)); 
     159        bool[string] definedPrefixes; 
     160        string lastPrefix, nm; 
    161161        FileLine fl; 
    162162        ParsedOption[] opts; 
     
    188188        Adds new line to given string. 
    189189     **************************************************************************/ 
    190     char[] addNewLine(char[] str) { 
     190    string addNewLine(string str) { 
    191191        if (str != "") return str~'\n'; 
    192192        return str; 
     
    196196        Returns: true if last line is empty 
    197197     **************************************************************************/ 
    198     bool isLastLineEmpty(char[] contents) { 
     198    bool isLastLineEmpty(string contents) { 
    199199        if (contents.length>=2 && contents[$-2..$] == "\n\n") return true; 
    200200        return false; 
     
    204204        Creates line from text & comment. 
    205205     **************************************************************************/ 
    206     char[] makeLine(char[] text, char[] comment) { 
    207         char[] result=text; 
     206    string makeLine(string text, string comment) { 
     207        string result=text; 
    208208        if (comment !is null) { 
    209209            uint len = text.length; 
     
    217217        Creates line from name, value and comment. 
    218218     **************************************************************************/ 
    219     char[] makeLine(char[] name, char[] value, char[] comment) { 
     219    string makeLine(string name, string value, string comment) { 
    220220        return makeLine(name ~ " = " ~ value, comment); 
    221221    } 
     
    224224        Prepares to add inserts to file contents. 
    225225     **************************************************************************/ 
    226     void prepareInserts(char[] key, Value val, ref char[][char[]][char[]] insOptions) { 
    227             char[] prefix, name, line; 
     226    void prepareInserts(string key, Value val, ref string[string][string] insOptions) { 
     227            string prefix, name, line; 
    228228 
    229229            if (val.status == OStatus.INSERTED) { 
    230230                prefix=""; 
    231231                name=key; 
    232                 int n=rfind(key, '.'); 
     232                int n = lastIndexOf(key, '.'); 
    233233                if (n!=-1) { 
    234234                    prefix=key[0..n]; 
     
    243243        Returns: line with given value. 
    244244     **************************************************************************/ 
    245     char[] addVariableLine(FileLine fl, Value val) { 
     245    string addVariableLine(FileLine fl, Value val) { 
    246246        assert(val.semantic !is null); 
    247         char[] result; 
     247        string result; 
    248248        if (val !is null && val.value !is null) { 
    249249            if (val.semantic.type is null) { 
     
    262262        Adds end of options section. 
    263263     **************************************************************************/ 
    264     char[] addEndOfSection(ref char[][char[]][char[]] insOptions, char[] lastPrefix) { 
    265         char[] result; 
     264    string addEndOfSection(ref string[string][string] insOptions, string lastPrefix) { 
     265        string result; 
    266266 
    267267        if ((lastPrefix in insOptions) is null) return result; 
    268268 
    269         char[] name; 
     269        string name; 
    270270        foreach(name, line; insOptions[lastPrefix]) { 
    271271            result~=line; 
     
    283283        Adds all not used before prefixes at the end of file. 
    284284     **************************************************************************/ 
    285     char[] addNotUsedPrefixes(char[][char[]][char[]] insOptions) { 
    286         char[] result; 
     285    string addNotUsedPrefixes(string[string][string] insOptions) { 
     286        string result; 
    287287        //Add prefixes and options which were in backend 
    288288        foreach(prefix, variables; insOptions) { 
     
    303303     **************************************************************************/ 
    304304    override void savePhysicallyAll(OptionsMap map) { 
    305         char[] str = loadFile(m_file); 
    306         char[][] lines = splitlines(str); 
    307         bool[char[]] definedPrefixes; 
    308         char[] contents, nm, pm, lastPrefix; 
    309         char[][char[]][char[]] insOptions; 
     305        string str = loadFile(m_file); 
     306        string[] lines = splitlines(str); 
     307        bool[string] definedPrefixes; 
     308        string contents, nm, pm, lastPrefix; 
     309        string[string][string] insOptions; 
    310310        FileLine fl; 
    311311 
     
    373373        See: ConcreteStorage 
    374374     **************************************************************************/ 
    375     override void savePhysicallyOne(char[] name, in Value value) 
     375    override void savePhysicallyOne(string name, Value value) 
    376376    in { 
    377377        assert(name != "", format(OPTION_NAME_CAN_NOT_BE_EMPTY)); 
     
    379379    } 
    380380    body { 
    381         char[] str = loadFile(m_file); 
    382         char[][] lines = splitlines(str); 
    383         bool[char[]] definedPrefixes; 
    384         char[] contents, nm, pm, lastPrefix; 
    385         char[][char[]][char[]] insOptions; 
     381        string str = loadFile(m_file); 
     382        string[] lines = splitlines(str); 
     383        bool[string] definedPrefixes; 
     384        string contents, nm, pm, lastPrefix; 
     385        string[string][string] insOptions; 
    386386        FileLine fl; 
    387387 
     
    447447        Parses one line from file. 
    448448     **************************************************************************/ 
    449     FileLine parseLine(char[] s) { 
     449    FileLine parseLine(string s) { 
    450450        FileLine result; 
    451         char[] prefix; 
     451        string prefix; 
    452452        uint n; 
    453453 
    454         if ((n = find(s, '#')) != -1) { 
     454        if ((n = indexOf(s, '#')) != -1) { 
    455455            if (n==0 || (n>0 && (s[n-1]==' ' || s[n-1]=='\t'))) { 
    456456                if (n>0) n--; 
     
    469469            } else { 
    470470                //Handle typed values 
    471                 if ((n = find(s, '=')) != -1) { 
    472                     if ((find(s[0..n], '.')) != -1) 
     471                if ((n = indexOf(s, '=')) != -1) { 
     472                    if ((indexOf(s[0..n], '.')) != -1) 
    473473                        throw new InvalidConfigFileSyntaxException(s, "names can not have dots in it."); 
    474474                    result.name = strip(s[0..n]); 
     
    482482                    if (s.length ==0) 
    483483                        throw new InvalidConfigFileSyntaxException(s, "no option name given"); 
    484                     if ((find(s, '.')) != -1) 
     484                    if ((indexOf(s, '.')) != -1) 
    485485                        throw new InvalidConfigFileSyntaxException(s, "names can not have dots in it."); 
    486486                    result.name = s; 
     
    494494    //---------------------------- Definitions --------------------------------- 
    495495    struct FileLine { 
    496         char[] prefix;  // "" - no prefix 
    497         char[] name;    // "" - comment line or empty line 
    498         char[] value;   // "" - for prefixes or comment lines 
    499         char[] comment; // "" - option line or empty line 
     496        string prefix;  // "" - no prefix 
     497        string name;    // "" - comment line or empty line 
     498        string value;   // "" - for prefixes or comment lines 
     499        string comment; // "" - option line or empty line 
    500500    } 
    501501 
    502502    //---------------------------- Fields -------------------------------------- 
    503     char[] m_file; 
     503    string m_file; 
    504504} 
  • trunk/doost/util/config/storages/DbStorage.d

    r80 r81  
    2525import doost.util.config.Value; 
    2626import doost.util.config.Formatter; 
    27  
     27/+ 
    2828import dbi.Database; 
    2929import dbi.DBIException; 
     
    165165    char[] m_table; 
    166166} 
     167+/ 
  • trunk/doost/util/config/storages/EnvironmentStorage.d

    r80 r81  
    2121import std.stdio; 
    2222 
    23 import doost.sys.Environment
     23import std.process
    2424 
    2525import doost.util.config.Option; 
     
    5555     **************************************************************************/ 
    5656    override OptionsMap readPhysicallyAll() { 
    57         char[][char[]] env=Environment.get(); 
     57        string[string] env = environment.toAA(); 
    5858        OptionsMap result; 
    5959        ParsedOption[] opts; 
     
    6161 
    6262        foreach(name, value; env) { 
    63             if (name=="") continue; 
     63            if (name == "") continue; 
    6464            d = findOption(name); 
    6565 
    66             if (d !is null && Environment.exists(name)) opts~=ParsedOption(name, value, d); 
     66            if (d !is null && name in env) opts~=ParsedOption(name, value, d); 
    6767        } 
    6868 
     
    7474        See: ConcreteStorage 
    7575     **************************************************************************/ 
    76     override Value readPhysicallyOne(char[] name) 
     76    override Value readPhysicallyOne(string name) 
    7777    in { 
    7878        assert(name != "", format(OPTION_NAME_CAN_NOT_BE_EMPTY)); 
    7979    } 
    8080    body { 
     81        string[string] env = environment.toAA(); 
    8182        ParsedOption[] opts; 
    8283        Value result; 
     
    8586        //TODO: co w przypadku innych opcji? wĆ…Ā‚aĆ…Ā›ciwie Ć…Å’eby obsĆ…Ā‚uĆ…Å’yć 
    8687        //wyraĆ…Å’enia regularne, to trzeba by przejrzeć wszystkie opcje 
    87         if (Environment.exists(name)) { 
    88             opts ~= ParsedOption(name, Environment.get(name), d); 
     88        if (name in env) { 
     89            opts ~= ParsedOption(name, env[name], d); 
    8990        } else { 
    90             char[] nm = d.optionAlias; 
    91             if (nm != "" && Environment.exists(nm)) { 
    92                 opts ~= ParsedOption(nm, Environment.get(nm), d); 
     91            string nm = d.optionAlias; 
     92            if (nm != "" && name in env) { 
     93                opts ~= ParsedOption(nm, env[name], d); 
    9394            } 
    9495        } 
     
    109110        See: ConcreteStorage 
    110111     **************************************************************************/ 
    111     override void savePhysicallyOne(char[] name, Value value) 
     112    override void savePhysicallyOne(string name, Value value) 
    112113    in { 
    113114        assert(name != "", format(OPTION_NAME_CAN_NOT_BE_EMPTY)); 
     
    115116    } 
    116117    body { 
    117         char[] nm = name; 
     118        string[string] env = environment.toAA(); 
     119        string nm = name; 
    118120 
    119         if (!Environment.exists(name)) { 
    120             OptionSemantic d=findOption(name); 
    121             if (d.optionAlias != "" && Environment.exists(d.optionAlias)
     121        if (name !in env) { 
     122            OptionSemantic d = findOption(name); 
     123            if (d.optionAlias != "" && d.optionAlias in env
    122124                nm = d.optionAlias; 
    123125        } 
    124126 
    125127        switch(value.status) { 
    126             case OStatus.REMOVED:       Environment.set(nm); break; 
     128            case OStatus.REMOVED:       env[nm] = ""; break; 
    127129            case OStatus.INSERTED: 
    128             case OStatus.MODIFIED:      Environment.set(nm, value.toString); break; 
     130            case OStatus.MODIFIED:      env[nm] = value.toString; break; 
    129131            default:; //EMPTY, SYNCHRONIZED 
    130132        } 
  • trunk/doost/util/serializer/archive/TextArchive.d

    r76 r81  
    326326            throw new ParsingException("Wrong character literal in source"); 
    327327 
    328         pragma(msg, VALUE.stringof ~ "; " ~ typeof(val[0]).stringof); 
    329         //FIXME: hack! 
    330         //value = to!(VALUE)(val[0]); 
    331         value = cast(VALUE)val[0]; 
     328        //FIXME: 127 for char, but 16384> for wchar.... 
     329        if (val[0] > 127) { 
     330            throw new SerializerException("Can not convert wide character into narrow character type."); 
     331        } 
     332 
     333        pragma(msg, "loadChar: " ~ VALUE.stringof ~ "; " ~ typeof(val[0]).stringof); 
     334        value = cast(VALUE) val[0]; 
     335 
    332336        return true; 
    333337    } 
     
    649653private: 
    650654    import std.date; 
    651     import std.string; 
    652655    import std.stdio; 
    653656    import std.traits; 
     
    710713            //FIXME: no magic strings here 
    711714            storage.put(defSkip.s_space); 
    712             if (value.tzcorrection>0) storage.put("+"); 
     715            if (value.tzcorrection > 0) storage.put("+"); 
    713716            storage.put(format(value.tzcorrection)); 
    714717        } 
  • trunk/examples/util/config/FunctionTest.d

    r39 r81  
    2121import std.stdio; 
    2222import std.string; 
    23 import std2.conv; 
     23import std.conv; 
    2424 
    2525import doost.core.Any; 
    2626import doost.util.DUnit; 
    2727import doost.util.config.ProgramOptions;        //Always 
    28 import doost.util.config.CommandLineStorage;    //Only if backend is necessary 
    29 import doost.util.config.ConfigFileStorage;     //Only if backend is necessary 
    30 import doost.util.config.EnvironmentStorage;    //Only if backend is necessary 
    31 import doost.util.config.DbStorage;             //Only if backend is necessary 
     28import doost.util.config.storages.CommandLineStorage;    //Only if backend is necessary 
     29import doost.util.config.storages.ConfigFileStorage;     //Only if backend is necessary 
     30import doost.util.config.storages.EnvironmentStorage;    //Only if backend is necessary 
     31//import doost.util.config.storages.DbStorage;             //Only if backend is necessary 
    3232import doost.util.config.Formatter;             //Only for non-standard output 
    3333                                                //description and for user defined 
    3434                                                //formatters 
    35  
    36 //import doost.util.config.Value; 
    37  
    3835version(ddbi_v62) { 
    3936    import dbi.Database; 
     
    8683        ("turnItOn,r", boolSwitch, "makecoffee") 
    8784        ("compression,c", define!(int), "set compression level") 
    88         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
    89         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     85        ("title,t", define!(string).defaultValue("title"), "set title of window") 
     86        ("include,i", define!(string[]).composing.defaultValue(["default1", "default2"]), "include paths") 
    9087        ("myVal", define!(MyVal).parser(&parseMyValue), "include paths") 
    91         ("firstname", define!(char[][]).composing, "firstname") 
    92         ("secondname", define!(char[][]).composing, "secondname") 
    93         ("nickname,n", define!(char[][]).composing, "nickname") 
    94         ("date", define!(char[])(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
    95         ("regexp[ression]*,g", define!(char[]), "regular expression", new RegExpOption) 
     88        ("firstname", define!(string[]).composing, "firstname") 
     89        ("secondname", define!(string[]).composing, "secondname") 
     90        ("nickname,n", define!(string[]).composing, "nickname") 
     91        ("date", define!(string)(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
     92        ("regexp[ression]*,g", define!(string), "regular expression", new RegExpOption) 
    9693        ("number\\d\\d", define!(byte), "following numbers", new RegExpOption) 
    97         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    98         ("string,s", define!(char[]), "text parameter") 
     94        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     95        ("string,s", define!(string), "text parameter") 
    9996        ("other,o", define!(double), "other parameter") 
    10097        //Only alias option 
    101         (",J", define!(char[][]), "import paths") 
     98        (",J", define!(string[]), "import paths") 
    10299    ; 
    103100});} 
     
    114111        ("help,h", "produce help message") 
    115112        ("compression,c", define!(uint), "compression level") 
    116         ("date", define!(char[]), "start date") 
     113        ("date", define!(string), "start date") 
    117114    ; 
    118115 
    119116    ro1 = new RegularOptions("Second group"); 
    120117    ro1.options() 
    121         ("title,t", define!(char[]), "window title") 
     118        ("title,t", define!(string), "window title") 
    122119        ("process,p", define!(uint), "process number") 
    123120    ; 
     
    155152    ro2 = new RegularOptions("All options"); 
    156153    ro2.options() 
    157         ("firstname", define!(char[][]).composing, "firstname") 
    158         ("secondname", define!(char[][]).composing, "secondname") 
     154        ("firstname", define!(string[]).composing, "firstname") 
     155        ("secondname", define!(string[]).composing, "secondname") 
    159156        (ro) 
    160157        (ro1); 
     
    177174    "; 
    178175 
    179     //writefln("\n", real_desc); 
     176    //writeln("\n", real_desc); 
    180177    assert(removechars(real_desc, " \t\n\r") == removechars(expc_desc, " \t\n\r")); 
    181178});} 
     
    203200        ro = new RegularOptions; 
    204201        ro.options() 
    205             ("title,t", define!(char[]), "window title") 
     202            ("title,t", define!(string), "window title") 
    206203            ("process,t", define!(uint), "process number") 
    207204        ; 
     
    211208        ro = new RegularOptions; 
    212209        ro.options() 
    213             ("title", define!(char[]), "window title") 
     210            ("title", define!(string), "window title") 
    214211            ("title,t", define!(uint), "process number") 
    215212        ; 
     
    219216        ro = new RegularOptions; 
    220217        ro.options() 
    221             ("title", define!(char[]), "window title") 
     218            ("title", define!(string), "window title") 
    222219            ("title,t", define!(uint), "process number") 
    223220        ; 
     
    227224        ro = new RegularOptions; 
    228225        ro.options() 
    229             (".*", define!(char[]), "all other options") 
    230             (".*", define!(char[]), "other other options") 
     226            (".*", define!(string), "all other options") 
     227            (".*", define!(string), "other other options") 
    231228        ; 
    232229    })); 
     
    245242 
    246243unittest { testCase.execute("CL Storage - lists", { 
    247     char[][] args; 
     244    string[] args; 
    248245    RegularOptions ro; 
    249246    ProgramOptions po; 
     
    254251    ro.options() 
    255252        ("help,h", "produce help message") 
    256         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    257         ("firstname", define!(char[][]).composing, "firstname") 
    258         ("secondname", define!(char[][]).composing, "secondname") 
    259         ("nickname,n", define!(char[][]).composing, "nickname") 
     253        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     254        ("firstname", define!(string[]).composing, "firstname") 
     255        ("secondname", define!(string[]).composing, "secondname") 
     256        ("nickname,n", define!(string[]).composing, "nickname") 
    260257    ; 
    261258 
     
    268265    assert(checkException!(UnknownOptionException)({"blah" in po; })); 
    269266 
    270     assert(po["include"].as!(char[][]) == ["a", "b", "c"]); 
     267    assert(po["include"].as!(string[]) == ["a", "b", "c"]); 
    271268    po.disconnect; 
    272269 
     
    277274    po.connect; 
    278275 
    279     trace(po["include"].as!(char[][])); 
    280     assert(po["include"].as!(char[][]) == ["a", "b", "c"]); 
    281     assert(po["firstname"].as!(char[][]) == ["Anita", "Ewa Krystyna", "Paulina"]); 
    282     trace(po["secondname"].as!(char[][])); 
    283     assert(po["secondname"].as!(char[][]) == ["Korwin\tMikke"]); 
    284     trace(po["nickname"].as!(char[][])); 
    285     assert(po["nickname"].as!(char[][]) == ["Aarti", "Bono", "Bruce"]); 
     276    trace(po["include"].as!(string[])); 
     277    assert(po["include"].as!(string[]) == ["a", "b", "c"]); 
     278    assert(po["firstname"].as!(string[]) == ["Anita", "Ewa Krystyna", "Paulina"]); 
     279    trace(po["secondname"].as!(string[])); 
     280    assert(po["secondname"].as!(string[]) == ["Korwin\tMikke"]); 
     281    trace(po["nickname"].as!(string[])); 
     282    assert(po["nickname"].as!(string[]) == ["Aarti", "Bono", "Bruce"]); 
    286283 
    287284    po.disconnect; 
     
    291288 
    292289unittest { testCase.execute("CL Storage - long/short options", { 
    293     char[][] args; 
     290    string[] args; 
    294291    RegularOptions ro; 
    295292    ProgramOptions po; 
     
    320317unittest { testCase.execute("CL Storage - response files", { 
    321318    void[] buffer; 
    322     char[][] args; 
     319    string[] args; 
    323320    RegularOptions ro; 
    324321    ProgramOptions po; 
     
    335332    ro.options() 
    336333        ("turnItOn,r", boolSwitch, "makecoffee") 
    337         ("date", define!(char[])(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
    338         ("firstname", define!(char[][]).composing, "firstname") 
    339         ("secondname", define!(char[][]).composing, "secondname") 
     334        ("date", define!(string)(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
     335        ("firstname", define!(string[]).composing, "firstname") 
     336        ("secondname", define!(string[]).composing, "secondname") 
    340337    ; 
    341338 
     
    347344 
    348345    assert(("turnItOn" in po) !is null); 
    349     assert(po["date"].as!(char[]) == "1975-07-04"); 
    350     assert(po["firstname"].as!(char[][]) == ["Ala", "Ola", "Sylwia"]); 
    351     assert(po["secondname"].as!(char[][]) == ["Atkinson", "Bullock"]); 
     346    assert(po["date"].as!(string) == "1975-07-04"); 
     347    assert(po["firstname"].as!(string[]) == ["Ala", "Ola", "Sylwia"]); 
     348    assert(po["secondname"].as!(string[]) == ["Atkinson", "Bullock"]); 
    352349 
    353350    po.disconnect; 
     
    357354 
    358355unittest { testCase.execute("CL Storage - custom values", { 
    359     char[][] args; 
     356    string[] args; 
    360357    RegularOptions ro; 
    361358    ProgramOptions po; 
     
    365362        ("help,h", "produce help message") 
    366363        ("compression,c", define!(int), "set compression level") 
    367         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
     364        ("title,t", define!(string).defaultValue("title"), "set title of window") 
    368365        ("doTheTest,d", "maketest") 
    369366        ("myVal", define!(MyVal).parser(&parseMyValue), "include paths") 
     
    381378    assert(po["compression"].as!(int) == 8); 
    382379    assert(("title" in po) !is null); 
    383     assert(po["title"].as!(char[]) == "title"); 
     380    assert(po["title"].as!(string) == "title"); 
    384381    assert(po["myVal"].as!(MyVal) == new MyVal(7)); 
    385382    po.disconnect; 
     
    389386 
    390387unittest { testCase.execute("CL Storage - self path", { 
    391     char[][] args; 
     388    string[] args; 
    392389    string str1, str2, str3; 
    393390    RegularOptions ro; 
     
    428425    po.connect; 
    429426    assert(("selfpath" in po) !is null); 
    430     trace(po["selfpath"].as!(char[])); 
    431     assert(po["selfpath"].as!(char[]) == str1); 
     427    trace(po["selfpath"].as!(string)); 
     428    assert(po["selfpath"].as!(string) == str1); 
    432429    assert(("selfdir" in po) !is null); 
    433     assert(po["selfdir"].as!(char[]) == str2); 
     430    assert(po["selfdir"].as!(string) == str2); 
    434431    assert(("selfname" in po) !is null); 
    435     assert(po["selfname"].as!(char[]) == str3); 
     432    assert(po["selfname"].as!(string) == str3); 
    436433    po.disconnect; 
    437434});} 
     
    440437 
    441438unittest { testCase.execute("CL Storage - synchronization", { 
    442     char[][] args; 
     439    string[] args; 
    443440    RegularOptions ro; 
    444441    ProgramOptions po; 
     
    448445        ("help,h", "produce help message") 
    449446        ("compression,c", define!(int), "set compression level") 
    450         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
     447        ("title,t", define!(string).defaultValue("title"), "set title of window") 
    451448        ("doTheTest,d", "maketest") 
    452449    ; 
     
    465462 
    466463unittest { testCase.execute("CL Storage - constraints", { 
    467     char[][] args; 
     464    string[] args; 
    468465    RegularOptions ro; 
    469466    ProgramOptions po; 
     
    474471    ro.options() 
    475472        ("compression,c", define!(int), "set compression level") 
    476         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
     473        ("title,t", define!(string).defaultValue("title"), "set title of window") 
    477474        ("doTheTest,d", "maketest") 
    478         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     475        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    479476        ("myVal", define!(MyVal).parser(&parseMyValue), "include paths") 
    480         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    481         ("string,s", define!(char[]), "text parameter") 
    482         ("firstname", define!(char[][]).composing, "firstname") 
    483         ("secondname", define!(char[][]).composing, "secondname") 
    484         ("nickname,n", define!(char[][]).composing, "nickname") 
     477        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     478        ("string,s", define!(string), "text parameter") 
     479        ("firstname", define!(string[]).composing, "firstname") 
     480        ("secondname", define!(string[]).composing, "secondname") 
     481        ("nickname,n", define!(string[]).composing, "nickname") 
    485482    ; 
    486483 
     
    505502 
    506503unittest { testCase.execute("CL Storage - input options composing", { 
    507     char[][] args; 
     504    string[] args; 
    508505    RegularOptions ro; 
    509506    ProgramOptions po; 
     
    512509    ro.options() 
    513510        ("compression,c", define!(int), "set compression level") 
    514         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
     511        ("title,t", define!(string).defaultValue("title"), "set title of window") 
    515512        ("doTheTest,d", "maketest") 
    516         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    517         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    518         ("string,s", define!(char[]), "text parameter") 
    519         ("firstname", define!(char[][]).composing, "firstname") 
    520         ("secondname", define!(char[][]).composing, "secondname") 
    521         ("nickname,n", define!(char[][]).composing, "nickname") 
     513        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     514        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     515        ("string,s", define!(string), "text parameter") 
     516        ("firstname", define!(string[]).composing, "firstname") 
     517        ("secondname", define!(string[]).composing, "secondname") 
     518        ("nickname,n", define!(string[]).composing, "nickname") 
    522519    ; 
    523520 
     
    535532    assert(("compression" in po.storage!(CommandLineStorage)) is null); 
    536533    assert(checkException!(OptionHasNoValueException)({po.storage!(CommandLineStorage)["compression"];})); 
    537     trace(po["include"].as!(char[][])); 
    538     assert(po["include"].as!(char[][]) == ["/usr/local", "/usr/", "/bin/"]); 
     534    trace(po["include"].as!(string[])); 
     535    assert(po["include"].as!(string[]) == ["/usr/local", "/usr/", "/bin/"]); 
    539536    po.disconnect; 
    540537});} 
     
    543540 
    544541unittest { testCase.execute("CL Storage - positional options", { 
    545     char[][] args; 
     542    string[] args; 
    546543    RegularOptions ro; 
    547544    CommandLineOptions clo; 
     
    551548    ro.options() 
    552549        ("compression,c", define!(int), "set compression level") 
    553         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
     550        ("title,t", define!(string).defaultValue("title"), "set title of window") 
    554551        ("doTheTest,d", "maketest") 
    555         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    556         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    557         ("string,s", define!(char[]), "text parameter") 
    558         ("firstname", define!(char[][]).composing, "firstname") 
    559         ("secondname", define!(char[][]).composing, "secondname") 
    560         ("nickname,n", define!(char[][]).composing, "nickname") 
     552        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     553        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     554        ("string,s", define!(string), "text parameter") 
     555        ("firstname", define!(string[]).composing, "firstname") 
     556        ("secondname", define!(string[]).composing, "secondname") 
     557        ("nickname,n", define!(string[]).composing, "nickname") 
    561558    ; 
    562559 
     
    573570 
    574571    po.connect; 
    575     assert(po["firstname"].as!(char[][]) == ["Ala", "Ola"]); 
    576     assert(po["secondname"].as!(char[][]) == ["Kowalska", "Nowak"]); 
    577     assert(po["nickname"].as!(char[][]) == ["Aarti_pl"]); 
     572    assert(po["firstname"].as!(string[]) == ["Ala", "Ola"]); 
     573    assert(po["secondname"].as!(string[]) == ["Kowalska", "Nowak"]); 
     574    assert(po["nickname"].as!(string[]) == ["Aarti_pl"]); 
    578575    po.disconnect; 
    579576});} 
     
    582579 
    583580unittest { testCase.execute("CL Storage - regular expression options", { 
    584     char[][] args; 
     581    string[] args; 
    585582    RegularOptions ro; 
    586583    CommandLineOptions clo; 
     
    598595        ("turnItOn,r", boolSwitch, "makecoffee") 
    599596        ("compression,c", define!(int), "set compression level") 
    600         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
    601         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    602         ("firstname", define!(char[][]).composing, "firstname") 
    603         ("secondname", define!(char[][]).composing, "secondname") 
    604         ("nickname,n", define!(char[][]).composing, "nickname") 
    605         ("date", define!(char[])(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
    606         ("regexp[ression]*,g", define!(char[]), "regular expression", new RegExpOption) 
     597        ("title,t", define!(string).defaultValue("title"), "set title of window") 
     598        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     599        ("firstname", define!(string[]).composing, "firstname") 
     600        ("secondname", define!(string[]).composing, "secondname") 
     601        ("nickname,n", define!(string[]).composing, "nickname") 
     602        ("date", define!(string)(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
     603        ("regexp[ression]*,g", define!(string), "regular expression", new RegExpOption) 
    607604        ("number\\d\\d", define!(byte), "following numbers", new RegExpOption) 
    608         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    609         ("string,s", define!(char[]), "text parameter") 
     605        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     606        ("string,s", define!(string), "text parameter") 
    610607        ("other,o", define!(double), "other parameter") 
    611608        //Only alias name 
    612         (",J", define!(char[][]), "import paths") 
     609        (",J", define!(string[]), "import paths") 
    613610    ; 
    614611 
     
    626623 
    627624    assert(("regexpression" in po) !is null); 
    628     assert(po["regexpression"].as!(char[]) == "regexpstring"); 
     625    assert(po["regexpression"].as!(string) == "regexpstring"); 
    629626    assert(po["compression"].as!(int) == 8); 
    630     assert(po["date"].as!(char[]) == "1975-7-4"); 
    631     trace(po["string"].as!(char[])); 
    632     assert(po["string"].as!(char[]) == "D language"); 
     627    assert(po["date"].as!(string) == "1975-7-4"); 
     628    trace(po["string"].as!(string)); 
     629    assert(po["string"].as!(string) == "D language"); 
    633630 
    634631    po.disconnect; 
     
    642639 
    643640    assert(("date" in po) !is null); 
    644     assert(po["date"].as!(char[]) == "1975-07-04"); 
     641    assert(po["date"].as!(string) == "1975-07-04"); 
    645642    assert(("regexp" in po) !is null); 
    646     assert(po["regexp"].as!(char[]) == "regexpstring"); 
     643    assert(po["regexp"].as!(string) == "regexpstring"); 
    647644    assert(("number00" in po) !is null); 
    648645    assert(po["number00"].as!(byte) == 34); 
     
    652649    assert(po["compression"].as!(int) == 5); 
    653650    assert(("title" in po) !is null); 
    654     assert(po["title"].as!(char[]) == "title"); 
     651    assert(po["title"].as!(string) == "title"); 
    655652    assert(("doTheTest" in po) !is null); 
    656653    assert(("doTheCoffee" in po) !is null); 
     
    665662 
    666663unittest { testCase.execute("CL Storage - option styles", { 
    667     char[][] args; 
     664    string[] args; 
    668665    RegularOptions ro; 
    669666    ProgramOptions po; 
     
    682679        ("turnItOn,r", boolSwitch, "makecoffee") 
    683680        ("compression,c", define!(int), "set compression level") 
    684         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
    685         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    686         ("firstname", define!(char[][]).composing, "firstname") 
    687         ("secondname", define!(char[][]).composing, "secondname") 
    688         ("nickname,n", define!(char[][]).composing, "nickname") 
    689         ("date", define!(char[])(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
    690         ("regexp[ression]*,g", define!(char[]), "regular expression", new RegExpOption) 
     681        ("title,t", define!(string).defaultValue("title"), "set title of window") 
     682        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     683        ("firstname", define!(string[]).composing, "firstname") 
     684        ("secondname", define!(string[]).composing, "secondname") 
     685        ("nickname,n", define!(string[]).composing, "nickname") 
     686        ("date", define!(string)(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
     687        ("regexp[ression]*,g", define!(string), "regular expression", new RegExpOption) 
    691688        ("number\\d\\d", define!(byte), "following numbers", new RegExpOption) 
    692         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    693         ("string,s", define!(char[]), "text parameter") 
     689        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     690        ("string,s", define!(string), "text parameter") 
    694691        ("other,o", define!(double), "other parameter") 
    695692        //Only alias name 
    696         (",J", define!(char[][]), "import paths") 
     693        (",J", define!(string[]), "import paths") 
    697694    ; 
    698695 
     
    723720        ("turnItOn,r", boolSwitch, "makecoffee") 
    724721        ("compression,c", define!(int), "set compression level") 
    725         ("title,t", define!(char[]).defaultValue("title"), "set title of window") 
    726         ("include,i", define!(char[][]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
    727         ("firstname", define!(char[][]).composing, "firstname") 
    728         ("secondname", define!(char[][]).composing, "secondname") 
    729         ("nickname,n", define!(char[][]).composing, "nickname") 
    730         ("date", define!(char[])(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
    731         ("regexp[ression]*,g", define!(char[]), "regular expression", new RegExpOption) 
     722        ("title,t", define!(string).defaultValue("title"), "set title of window") 
     723        ("include,i", define!(string[]).composing.defaultValue(["default1"[], "default2"]), "include paths") 
     724        ("firstname", define!(string[]).composing, "firstname") 
     725        ("secondname", define!(string[]).composing, "secondname") 
     726        ("nickname,n", define!(string[]).composing, "nickname") 
     727        ("date", define!(string)(r"\d\d\d\d-\d?\d-\d?\d"), "date of birth") 
     728        ("regexp[ression]*,g", define!(string), "regular expression", new RegExpOption) 
    732729        ("number\\d\\d", define!(byte), "following numbers", new RegExpOption) 
    733         ("int,p", define!(char[])(r"\d\d\d"), new RegExpOption) 
    734         ("string,s", define!(char[]), "text parameter") 
     730        ("int,p", define!(string)(r"\d\d\d"), new RegExpOption) 
     731        ("string,s", define!(string), "text parameter") 
    735732        ("other,o", define!(double), "other parameter") 
    736733        //Only alias name 
    737         (",J", define!(char[][]), "import paths") 
     734        (",J", define!(string[]), "import paths") 
    738735    ; 
    739736 
     
    749746 
    750747    assert(po["compression"].as!(int) == 8); 
    751     assert(po["title"].as!(char[]) == "1984"); 
     748    assert(po["title"].as!(string) == "1984"); 
    752749 
    753750    po.disconnect; 
     
    765762    ro.options() 
    766763        ("compression", define!(int), "set compression level") 
    767         ("author", define!(char[]).defaultValue("drX"), "name of author") 
    768         ("include,i", define!(char[][]).composing, "include paths") 
    769         ("myname", define!(char[]), "name") 
    770         ("database.user", define!(char[]), "Database User") 
    771         ("database.password", define!(char[]), "Database Password") 
    772         ("database.ip", define!(char[])(r"[0|1|2]?\d?\d\.[0|1|2]?\d?\d\.[0|1|2]?\d?\d\.[0|1|2]?\d?\d"), "Database IP") 
     764        ("author", define!(string).defaultValue("drX"), "name of author") 
     765        ("include,i", define!(string[]).composing, "include paths") 
     766        ("myname", define!(string), "name") 
     767        ("database.user", define!(string), "Database User") 
     768        ("database.password", define!(string), "Database Password") 
     769        ("database.ip", define!(string)(r"[0|1|2]?\d?\d\.[0|1|2]?\d?\d\.[0|1|2]?\d?\d\.[0|1|2]?\d?\d"), "Database IP") 
    773770        ("interaction.help", "activate help") 
    774771        ("interaction.tips", "activate tips") 
     
    799796    assert(po["compression"].as!(int) == 6); 
    800797    po["compression"] = any!(int)(18); 
    801     po["database.ip"]= any!(char[])("127.0.0.1"); 
    802     po["database.user"]= any!(char[])("marcin"); 
    803     po["database.password"]= any!(char[])("******"); 
     798    po["database.ip"]= any!(string)("127.0.0.1"); 
     799    po["database.user"]= any!(string)("marcin"); 
     800    po["database.password"]= any!(string)("******"); 
    804801    assert(po["compression"].as!(int) == 18); 
    805     assert(po["database.ip"].as!(char[]) == "127.0.0.1"[]); 
     802    assert(po["database.ip"].as!(string) == "127.0.0.1"[]); 
    806803 
    807804    po.synchronize; 
     
    809806 
    810807    assert(po["compression"].as!(int) == 18); 
    811     assert(po["database.ip"].as!(char[]) == "127.0.0.1"[]); 
    812     assert(po["database.user"].as!(char[]) == "marcin"[]); 
    813     assert(po["database.password"].as!(char[]) == "******"[]); 
     808    assert(po["database.ip"].as!(string) == "127.0.0.1"[]); 
     809    assert(po["database.user"].as!(string) == "marcin"[]); 
     810    assert(po["database.password"].as!(string) == "******"[]); 
    814811    assert("interaction.balloons" in po); 
    815     assert(po["author"].as!(char[]) == "Szklarski"); 
    816     po["author"] = any!(char[])("Niziurski"); 
    817     assert(po["author"].as!(char[]) == "Niziurski"); 
     812    assert(po["author"].as!(string) == "Szklarski"); 
     813    po["author"] = any!(string)("Niziurski"); 
     814    assert(po["author"].as!(string) == "Niziurski"); 
    818815 
    819816    po.syncPolicy(SyncPolicy.Cached); 
    820817 
    821     assert(po["include"].as!(char[][]) == ["/usr/local/import/"]); 
    822     po.storage!(ConfigFileStorage)()["include"] = any!(char[][])(["/usr/local/bin/", "/bin/", "/usr/bin/"]); 
     818    assert(po["include"].as!(string[]) == ["/usr/local/import/"]); 
     819    po.storage!(ConfigFileStorage)()["include"] = any!(string[])(["/usr/local/bin/", "/bin/", "/usr/bin/"]); 
    823820 
    824821    po.synchronize; 
    825822 
    826     assert(po["include"].as!(char[][]) == ["/usr/local/bin/", "/bin/", "/usr/bin/"]); 
    827     po["myname"] = any!(char[])("Aarti_pl"); 
     823    assert(po["include"].as!(string[]) == ["/usr/local/bin/", "/bin/", "/usr/bin/"]); 
     824    po["myname"] = any!(string)("Aarti_pl"); 
    828825 
    829826    po.synchronize; 
    830     assert(po["myname"].as!(char[]) == "Aarti_pl"); 
    831  
    832     real_desc = cast(char[])std.file.read("test01.cfg"); 
     827    assert(po["myname"].as!(string) == "Aarti_pl"); 
     828 
     829    real_desc = cast(string)std.file.read("test01.cfg"); 
    833830    expc_desc = 
    834831"compression = 18 # Kompresja pliku 
     
    852849    po.synchronize; 
    853850 
    854     real_desc = cast(char[])std.file.read("test01.cfg"); 
     851    real_desc = cast(string)std.file.read("test01.cfg"); 
    855852    expc_desc = 
    856853"compression = 18 # Kompresja pliku 
     
    873870    po.synchronize; 
    874871 
    875     real_desc = cast(char[])std.file.read("test01.cfg"); 
     872    real_desc = cast(string)std.file.read("test01.cfg"); 
    876873    expc_desc =" 
    877874        compression = 18 # Kompresja pliku 
     
    891888 
    892889    assert(po["compression"].as!(int) == 18); 
    893     assert(po["myname"].as!(char[]) == "Aarti_pl"); 
     890    assert(po["myname"].as!(string) == "Aarti_pl"); 
    894891    po.disconnect; 
    895892 
     
    933930 
    934931    po.storage!(ConfigFileStorage).remove("compression"); 
    935     po.storage!(ConfigFileStorage)()["author"] = any!(char[])("Nienacki"); 
    936     po["database.ip"] = any!(char[])("223.14.80.34"); 
    937     po["database.password"] = any!(char[])("***"); 
    938     po["database.user"] = any!(char[])("Magda"); 
     932    po.storage!(ConfigFileStorage)()["author"] = any!(string)("Nienacki"); 
     933    po["database.ip"] = any!(string)("223.14.80.34"); 
     934    po["database.password"] = any!(string)("***"); 
     935    po["database.user"] = any!(string)("Magda"); 
    939936    po["interaction.help"] = any!()(); 
    940937    po["interaction.tips"] = any!()(); 
    941938 
    942     real_desc = cast(char[])std.file.read("test03.cfg"); 
     939    real_desc = cast(string)std.file.read("test03.cfg"); 
    943940    expc_desc =" 
    944941        author = \"Nienacki\" # Autor ksiƄ 
     
    960957    po.disconnect; 
    961958 
    962     real_desc = cast(char[])std.file.read("test03.cfg"); 
     959    real_desc = cast(string)std.file.read("test03.cfg"); 
    963960    assert(removechars(real_desc, " \t\n\r") == removechars(expc_desc, " \t\n\r")); 
    964961});} 
     
    972969    ro = new RegularOptions("Environment options"); 
    973970    ro.options() 
    974         ("po_include", define!(char[][]).composing, "include paths") 
    975         ("po_compiler", define!(char[]).defaultValue("dmd"), "default compiler") 
    976         ("po_linker", define!(char[]).defaultValue("link"), "default linker") 
     971        ("po_include", define!(string[]).composing, "include paths") 
     972        ("po_compiler", define!(string).defaultValue("dmd"), "default compiler") 
     973        ("po_linker", define!(string).defaultValue("link"), "default linker") 
    977974        ("po_threads", define!(uint).defaultValue(3), "number of compilation threads") 
    978975    ; 
     
    988985    assert(!("po_include" in po)); 
    989986    assert("po_compiler" in po); 
    990     assert(po["po_compiler"].as!(char[]) == "dmd"); 
     987    assert(po["po_compiler"].as!(string) == "dmd"); 
    991988    assert("po_linker" in po); 
    992     assert(po["po_linker"].as!(char[]) == "link"); 
     989    assert(po["po_linker"].as!(string) == "link"); 
    993990    assert("po_threads" in po); 
    994991    assert(po["po_threads"].as!(uint) == 3); 
    995992 
    996     po["po_compiler"] = any!(char[])("gdb"); 
    997     assert(po["po_compiler"].as!(char[]) == "gdb"); 
    998     po["po_linker"] = any!(char[])("gcc"); 
    999     assert(po["po_linker"].as!(char[]) == "gcc"); 
    1000  
    1001     po.disconnect; 
    1002  
    1003     po.connect; 
    1004  
    1005     assert(po["po_compiler"].as!(char[]) == "gdb"); 
    1006     assert(po["po_linker"].as!(char[]) == "gcc"); 
     993    po["po_compiler"] = any!(string)("gdb"); 
     994    assert(po["po_compiler"].as!(string) == "gdb"); 
     995    po["po_linker"] = any!(string)("gcc"); 
     996    assert(po["po_linker"].as!(string) == "gcc"); 
     997 
     998    po.disconnect; 
     999 
     1000    po.connect; 
     1001 
     1002    assert(po["po_compiler"].as!(string) == "gdb"); 
     1003    assert(po["po_linker"].as!(string) == "gcc"); 
    10071004 
    10081005    po.disconnect; 
     
    10231020        ("help,h", "produce help message") 
    10241021        ("compression", define!(int).defaultValue(2), "set compression level") 
    1025         ("title", define!(char[]).defaultValue("title"), "set title of window") 
    1026         ("include,i", define!(char[][]).composing, "include paths") 
     1022        ("title", define!(string).defaultValue("title"), "set title of window") 
     1023        ("include,i", define!(string[]).composing, "include paths") 
    10271024    ; 
    10281025 
     
    10301027    ro1.options() 
    10311028        ("help,h", "produce help message") 
    1032         ("title", define!(char[]).defaultValue("title"), "set title of window") 
    1033         ("include,i", define!(char[][]).composing, "include paths") 
     1029        ("title", define!(string).defaultValue("title"), "set title of window") 
     1030        ("include,i", define!(string[]).composing, "include paths") 
    10341031    ; 
    10351032 
     
    10371034    fil.options() 
    10381035        ("compression", define!(int), "set compression level") 
    1039         ("author", define!(char[]).defaultValue("drX"), "name of author") 
    1040         ("include,i", define!(char[][]).composing, "include paths") 
     1036        ("author", define!(string).defaultValue("drX"), "name of author") 
     1037        ("include,i", define!(string[]).composing, "include paths") 
    10411038    ; 
    10421039 
    10431040    fil1 = new RegularOptions("File storage 1"); 
    10441041    fil1.options() 
    1045         ("comment", define!(char[]).defaultValue("my comment"), "comment to last news") 
     1042        ("comment", define!(string).defaultValue("my comment"), "comment to last news") 
    10461043        ("list,l", "list all paths") 
    1047         ("title", define!(char[]).defaultValue("title"), "title of window") 
     1044        ("title", define!(string).defaultValue("title"), "title of window") 
    10481045    ; 
    10491046 
     
    10931090    assert(("compression" in po) !is null); 
    10941091    assert(po["compression"].as!(int) == 6); 
    1095     assert(po["author"].as!(char[]) == "Szklarski"); 
    1096  
    1097     assert(po.composedOptions("include").as!(char[][]) == ["/usr/local", "/usr/", "/bin/", "/usr/local/import/"]); 
    1098     assert(po.composedOptions("title").as!(char[][]) == ["title", "mytitle"]); 
     1092    assert(po["author"].as!(string) == "Szklarski"); 
     1093 
     1094    assert(po.composedOptions("include").as!(string[]) == ["/usr/local", "/usr/", "/bin/", "/usr/local/import/"]); 
     1095    assert(po.composedOptions("title").as!(string[]) == ["title", "mytitle"]); 
    10991096 
    11001097    po.storage!(CommandLineStorage)()["compression"] = any!(int)(2); 
     
    11541151    assert(compression == 15); 
    11551152 
    1156     assert(po.storage!(ConfigFileStorage)().storage!(ConfigFileStorage)()["title"].as!(char[])=="mytitle"); 
     1153    assert(po.storage!(ConfigFileStorage)().storage!(ConfigFileStorage)()["title"].as!(string)=="mytitle"); 
    11571154 
    11581155    po.disconnect; 
     
    12111208                .options() 
    12121209                    ("compression", define!(int), "set compression level") 
    1213                     ("author", define!(char[]).defaultValue("drX"), "name of author") 
    1214                     ("include,i", define!(char[][]).composing, "include paths") 
     1210                    ("author", define!(string).defaultValue("drX"), "name of author") 
     1211                    ("include,i", define!(string[]).composing, "include paths") 
    12151212                    () 
    12161213                .formatter(new BasicFormatter) 
     
    12491246    fil1 = new RegularOptions("File storage 1"); 
    12501247    fil1.options() 
    1251         ("comment", define!(char[]).defaultValue("my comment"), "comment to last news") 
     1248        ("comment", define!(string).defaultValue("my comment"), "comment to last news") 
    12521249    ; 
    12531250 
     
    12821279    po.synchronize; 
    12831280 
    1284     real_desc = cast(char[])std.file.read("test06.cfg"); 
     1281    real_desc = cast(string)std.file.read("test06.cfg"); 
    12851282    expc_desc ="compression = 128"; 
    12861283    assert(removechars(real_desc, " \t\n\r") == removechars(expc_desc, " \t\n\r")); 
     
    13011298    ro.options() 
    13021299        ("compression", define!(int).defaultValue(2), "set compression level") 
    1303         ("name", define!(char[]), "name of zip") 
     1300        ("name", define!(string), "name of zip") 
    13041301        ("help,h", "help for options") 
    13051302        (r"chanel\d", define!(int), "chanel number", new RegExpOption) 
     
    13091306    fil.options() 
    13101307        ("compression", define!(int), "set compression level") 
    1311         ("package", define!(char[]), "package name") 
     1308        ("package", define!(string), "package name") 
    13121309        (r"port\d\d\d,h", boolSwitch, "port to activate", new RegExpOption) 
    13131310    ; 
     
    13701367    ro.options() 
    13711368        ("compression", define!(int).defaultValue(2), "set compression level") 
    1372         ("name", define!(char[]), "name of zip") 
     1369        ("name", define!(string), "name of zip") 
    13731370        ("help,h", "help for options") 
    13741371        (r"chanel\d", define!(int), "chanel number", new RegExpOption) 
     
    13781375    fil.options() 
    13791376        ("compression", define!(int), "set compression level") 
    1380         ("package", define!(char[]), "package name") 
     1377        ("package", define!(string), "package name") 
    13811378        (r"port\d\d\d,h", boolSwitch, "port to activate", new RegExpOption) 
    13821379    ; 
     
    14231420    ro.options() 
    14241421        ("compression", define!(int).defaultValue(2), "set compression level") 
    1425         ("name", define!(char[]), "name of zip") 
     1422        ("name", define!(string), "name of zip") 
    14261423        ("help,h", "help for options") 
    14271424        (r"chanel\d", define!(int), "chanel number", new RegExpOption) 
     
    14441441    assert(po["compression"].as!(int) == 52); 
    14451442 
    1446     po["name"] = any!(char[])("Aarti_pl"); 
    1447     assert(po["name"].as!(char[]) == "Aarti_pl"); 
    1448  
    1449     po["name"] = any!(char[])("Wacek"); 
    1450     assert(po["name"].as!(char[]) == "Wacek"); 
     1443    po["name"] = any!(string)("Aarti_pl"); 
     1444    assert(po["name"].as!(string) == "Aarti_pl"); 
     1445 
     1446    po["name"] = any!(string)("Wacek"); 
     1447    assert(po["name"].as!(string) == "Wacek"); 
    14511448 
    14521449    //NOTE: for unknown reasons when using execute() in DbStorage below test fails 
     
    14711468    Program entry point 
    14721469 ******************************************************************************/ 
    1473 int main(char[][] args) { 
     1470int main(string[] args) { 
    14741471    try { 
    14751472        char sep = ';'; 
     
    14891486                    (new EnvironmentStorage) 
    14901487                        .options() 
    1491                             ("Path,PATH", define!(char[][]).separator(sep), "paths defined in system") 
     1488                            ("Path,PATH", define!(string[]).separator(sep), "paths defined in system") 
    14921489                            () 
    14931490                        .next( 
     
    14951492                        .options() 
    14961493                            ("optimization", define!(int), "level") 
    1497                             ("include-path", define!(char[][]), "include paths") 
     1494                            ("include-path", define!(string[]), "include paths") 
    14981495                            ("compression", define!(int), "set compression level") 
    14991496                            () 
     
    15011498                    (new ConfigFileStorage("file2.cfg")) 
    15021499                        .options() 
    1503                             ("name", define!(char[]), "name of game") 
     1500                            ("name", define!(string), "name of game") 
    15041501                            ("pi", define!(double), "value of eternity") 
    15051502                            () 
     
    15091506 
    15101507        if ("help" in po) { 
    1511             writefln(po); 
     1508            writeln(po); 
    15121509            return 0; 
    15131510        } 
    15141511 
    15151512        if ("compression" in po) { 
    1516             writefln("Compression level was set to ", po["compression"]); 
     1513            writeln("Compression level was set to ", po["compression"]); 
    15171514        } else { 
    1518             writefln("Compression level was not set."); 
     1515            writeln("Compression level was not set."); 
    15191516        } 
    15201517 
    15211518        if ("optimization" in po) { 
    1522             writefln("Optimization set to: ", po["optimization"]); 
     1519            writeln("Optimization set to: ", po["optimization"]); 
    15231520        } 
    15241521 
    15251522        if ("pi" in po) { 
    1526             writefln("Pi set to: ", po["pi"]); 
     1523            writeln("Pi set to: ", po["pi"]); 
    15271524        } 
    15281525 
    15291526        if ("name" in po) { 
    1530             writefln("Name set to: ", po["name"]); 
     1527            writeln("Name set to: ", po["name"]); 
    15311528        } 
    15321529 
    15331530        if ("PATH" in po) { 
    1534             writefln("\n\nThere are following directories in your system path: \n"); 
    1535  
    1536             foreach(p; po["Path"].as!(char[][])) { 
    1537                 writefln(p); 
     1531            writeln("\n\nThere are following directories in your system path: \n"); 
     1532 
     1533            foreach(p; po["Path"].as!(string[])) { 
     1534                writeln(p); 
    15381535            } 
    15391536        } 
     
    15481545    } 
    15491546    catch(ProgramOptionsException e) { 
    1550         writefln("Exception: ", e); 
     1547        writeln("Exception: ", e); 
    15511548        return 1; 
    15521549    } 
  • trunk/examples/util/serializer/SerializerTest.d

    r75 r81  
    1818import std.date; 
    1919import std.math; 
     20import std.conv; 
    2021import std.string; 
    2122 
     
    545546 
    546547        input = new MyClass; input.x = 5; input.y = 10; input.z = 15; 
    547         output = serializer.dump(input); 
     548        trace("ch1"); 
     549        output = serializer.dump(input); 
     550        trace("ch2"); 
    548551        trace(output); 
    549552        assert(output == cast(serializer.STORAGETYPE)"5-10-15"); 
     553        trace("ch3"); 
    550554        assert(serializer.load!(MyClass)(output) == input); 
    551555    });} 
     
    921925 
    922926mixin ArchiveTest!(TextArchive, string); 
    923 //mixin ArchiveTest!(TextArchiveExt, string); 
    924927mixin ArchiveTest!(TextArchive, wstring); 
     928//mixin ArchiveTest!(TextArchive, dstring); 
     929mixin ArchiveTest!(TextArchiveExt, string); 
    925930//mixin ArchiveTest!(TextArchiveExt, wstring); 
    926 //mixin ArchiveTest!(TextArchive, dstring); 
     931 
    927932//mixin ArchiveTest!(TextArchiveExt, dstring); 
    928933 
    929934mixin ArchiveTest!(JsonArchive, string); 
     935//mixin ArchiveTest!(JsonArchive, wstring); 
     936//mixin ArchiveTest!(JsonArchive, dstring); 
    930937//mixin ArchiveTest!(JsonArchiveExt, string); 
    931 //mixin ArchiveTest!(JsonArchive, wstring); 
    932938//mixin ArchiveTest!(JsonArchiveExt, wstring); 
    933 //mixin ArchiveTest!(JsonArchive, dstring); 
    934939//mixin ArchiveTest!(JsonArchiveExt, dstring); 
    935940