Ejemplo n.º 1
0
/**
 * garrow_int16_array_builder_append_null:
 * @builder: A #GArrowInt16ArrayBuilder.
 * @error: (nullable): Return location for a #GError or %NULL.
 *
 * Returns: %TRUE on success, %FALSE if there was an error.
 */
gboolean
garrow_int16_array_builder_append_null(GArrowInt16ArrayBuilder *builder,
                                      GError **error)
{
  auto arrow_builder =
    static_cast<arrow::Int16Builder *>(
      garrow_array_builder_get_raw(GARROW_ARRAY_BUILDER(builder)).get());

  auto status = arrow_builder->AppendNull();
  if (status.ok()) {
    return TRUE;
  } else {
    garrow_error_set(error, status, "[int16-array-builder][append-null]");
    return FALSE;
  }
}
static void MakeFilterText(char *filter_text,
                            const ExtensionMap &extensions,
                            bool do_combined)
{
    // Construct the Windows file dialog filter string, which looks like this:
    //
    //  "All OCIO files\0"
    //      "*.ocio;*.cube;*.vf;*.mga\0"
    //  "OpenColorIO (*.ocio)\0"
    //      "*.ocio\0"
    //  "Iridas (*.cube)\0"
    //      "*.cube\0"
    //  "Nuke Vectorfield (*.vf)\0"
    //      "*.vf\0"
    //  "Apple Color (*.mga)\0"
    //      "*.mga\0"
    //  "\0";
    //
    // Note the inline nulls and final double-null, which foil regular string functions.

    char combined_entry[512];
    int combined_length = 0;

    char seperate_entries[512];
    int seperate_length = 0;

    AppendString(combined_entry, combined_length, "All OCIO files");
    AppendNull(combined_entry, combined_length);

    for(ExtensionMap::const_iterator i = extensions.begin(); i != extensions.end(); i++)
    {
        std::string extension = i->first;
        std::string format = i->second;

        std::string format_part = format + " (*." + extension + ")";
        std::string extension_part = "*." + extension;
        std::string combined_part = extension_part + ";";

        AppendString(seperate_entries, seperate_length, format_part.c_str(), format_part.size());
        AppendNull(seperate_entries, seperate_length);
        AppendString(seperate_entries, seperate_length, extension_part.c_str(), extension_part.size());
        AppendNull(seperate_entries, seperate_length);

        AppendString(combined_entry, combined_length, combined_part.c_str(), combined_part.size());
    }

    AppendNull(seperate_entries, seperate_length);
    AppendNull(combined_entry, combined_length);


    char *in = combined_entry;
    char *out = filter_text;

    if(do_combined)
    {
        for(int i=0; i < combined_length; i++)
            *out++ = *in++;
    }

    in = seperate_entries;

    for(int i=0; i < seperate_length; i++)
        *out++ = *in++;
}