# Examples of Usage

The following examples were taken from the regression test script.

Object setup:

    package require autoObject
    set firstDefList {
        FieldOne    {0   4   uint32_t   1       }
        FieldTwo    {4   1   uint8_t    150     }
        FieldThree  {5   3   uint8_t[3] {1 2 3} }
        FieldFour   {8   4   float_t    3.141590118408203    }
        FieldFive   {12  2   uint16_t   50000   }
        FieldSix    {14  1   int8_t     -5      }
        FieldSeven  {15  4   time_t     ""      {"%Y-%m-%d %H:%M:%S"}  }
        StrField    {20  15  string_t   "How you like me now?"    15 }
    }

    set firstObject [autoObject new $firstDefList]

Human-readable output:

    puts [$firstObject toString]

produces:

                                  FieldOne: 1
                                  FieldTwo: 150
                                FieldThree: 1   2   3
                                 FieldFour: 3.141590
                                 FieldFive: 50000
                                  FieldSix: -5
                                FieldSeven: {"2017-08-03 16:12:09"}
                                  StrField: "How you like me"

Changing field values, getting fields, and outputting list form:

    $firstObject set FieldThree {4 5 6} FieldOne 987654321
    puts [$firstObject get]
    puts "Twice FieldTwo is: [expr {[$firstObject get FieldTwo] * 2}]"
    puts "To List: [$firstObject toList]"

produces:

    FieldOne 987654321 FieldTwo 150 FieldThree {4 5 6} FieldFour 3.141590118408203 FieldFive 50000 FieldSix -5 FieldSeven {"1969-12-31 16:00:00"}
    Twice FieldTwo is: 300
    To List: 177 104 222 58 150 4 5 6 208 15 73 64 80 195 251 201 173 131 89 1 72 111 119 32 121 111 117 32 108 105 107 101 32 109 101

And setting all fields from a byte stream:

    set list1 {1 0 1 0 96 10 9 -10 -48 99 73 64 120 232 175 0 0 0 0 2 \
                110 111 119 44 32 109 111 116 104 101 114 102 42 42 42}
    $firstObject fromList $list1
    puts "From modified list:"
    puts [$firstObject toString]
    puts "Twice FieldTwo is: [expr {[$firstObject get FieldTwo] * 2}]"

produces:

    From modified list:
                                  FieldOne: 65537
                                  FieldTwo: 96
                                FieldThree: 10  9   246
                                 FieldFour: 3.146717
                                 FieldFive: 59512
                                  FieldSix: -81
                                FieldSeven: {"1969-12-31 16:00:00"}
                                  StrField: "now, motherf***"
    Twice FieldTwo is: 192