#### 2.3.3 Type Example

The following example initializes a `ffi_type` object representing the `tm` struct from Linux's `time.h`.

Here is how the struct is defined:

         struct tm {
             int tm_sec;
             int tm_min;
             int tm_hour;
             int tm_mday;
             int tm_mon;
             int tm_year;
             int tm_wday;
             int tm_yday;
             int tm_isdst;
             /* Those are for future use. */
             long int __tm_gmtoff__;
             __const char *__tm_zone__;
         };

Here is the corresponding code to describe this struct to `libffi`:

             {
               ffi_type tm_type;
               ffi_type *tm_type_elements[12];
               int i;

               tm_type.size = tm_type.alignment = 0;
               tm_type.elements = &tm_type_elements;

               for (i = 0; i < 9; i++)
                   tm_type_elements[i] = &ffi_type_sint;

               tm_type_elements[9] = &ffi_type_slong;
               tm_type_elements[10] = &ffi_type_pointer;
               tm_type_elements[11] = NULL;

               /* tm_type can now be used to represent tm argument types and
         	 return types for ffi_prep_cif() */
             }