On Mon, Oct 30, 2017 at 5:07 AM, Amitesh Singh <amitesh...@samsung.com> wrote:

> +static Eina_Bool
> +_eina_value_type_tm_convert_to(const Eina_Value_Type *type, const 
> Eina_Value_Type *convert, const void *type_mem, void *convert_mem)
> +{
> +   struct tm tmv = *(struct tm *)type_mem;
> +   time_t t = mktime(&tmv);
> +   struct timeval v = {t, 0};
> +
> +   if (convert == EINA_VALUE_TYPE_STRINGSHARE ||
> +       convert == EINA_VALUE_TYPE_STRING)
> +     {
> +        const char *other_mem;
> +        char buf[64];
> +
> +        strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", &tmv);
> +        other_mem = buf; /* required due &buf == buf */
> +        return eina_value_type_pset(convert, convert_mem, &other_mem);
> +     }
> +   else
> +     return _eina_value_type_timeval_convert_to(type, convert, &v, 
> convert_mem);
> +}
> +
> +static const Eina_Value_Type _EINA_VALUE_TYPE_TM = {
> +     EINA_VALUE_TYPE_VERSION,
> +     sizeof(struct tm),
> +     "struct tm",
> +     _eina_value_type_tm_setup,
> +     _eina_value_type_tm_flush,
> +     _eina_value_type_tm_copy,
> +     _eina_value_type_tm_compare,
> +     _eina_value_type_tm_convert_to,
> +     NULL, //No convert from

why no string/stringshare convert to using strptime?

also, timeval conversion would be reasonable.

which reminds me: it's a good approach (although not required) to add
"back conversion" to these types... the logic will "convert a to b" if
not, then "convert b from a". So having both is always a good
approach.

> @@ -779,6 +793,7 @@ static inline int eina_value_compare(const Eina_Value *a,
>   * @li EINA_VALUE_TYPE_TIMEVAL: struct timeval
>   * @li EINA_VALUE_TYPE_BLOB: Eina_Value_Blob
>   * @li EINA_VALUE_TYPE_STRUCT: Eina_Value_Struct
> + * @li EINA_VALUE_TYPE_TM: struct tm*

here it's not pointer, just the expanded struct.

logic is ease of use with "set", it's a "..." that maps to vset()
(va_args). For pointer set, it's pset(). get() and pget() are
basically the same.

think about printf  (set) x scanf (get).

then review all other documentation you wrote, things that insert in
array/list/hash, etc... are like set().


-- 
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (16) 99354-9890

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to