亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gsegyfileaccessor.c

?? segy 顯示程序!希望能給正在做這部分朋友提供一部分資料
?? C
?? 第 1 頁 / 共 3 頁
字號:

    guint8 *trace_buffer;

    if (double_buffer)
        data = (gfloat*)g_try_malloc (2 * private->number_of_samples * traces_num * sizeof (gfloat));
    else
        data = (gfloat*)g_try_malloc (private->number_of_samples * (traces_num + 1) * sizeof (gfloat));

    if (NULL == data) {
       if (file_error)
           file_error->id = G_SEGY_FILE_MEMORY_ALLOCATION_FAIL;
        return NULL;
    }

    trace_buffer = (guint8*)&data[private->number_of_samples * traces_num];

    fd = g_io_channel_unix_get_fd (private->io_channel);

#if defined LINUX || defined WIN32
    if (private->file_mutex)
        g_mutex_lock (private->file_mutex);
#endif

    for (i = 0; i < traces_num; i++) {
#if defined LINUX || defined WIN32
        seek_pos = lseek (fd, g_array_index (private->trace_positions, guint64, traces_indices[i]), SEEK_SET);
        if (seek_pos == (guint64)LSEEK_ERR) {
#else
        status = g_io_channel_seek_position (private->io_channel,
                                             g_array_index (private->trace_positions, guint64, traces_indices[i]),
                                             G_SEEK_SET, &gerror);
        if (status != G_IO_STATUS_NORMAL) {
#endif
            if (file_error) {
                if (status == G_IO_STATUS_EOF)
                    file_error->id = G_SEGY_FILE_PREMATURE_EOF;
                else
                    file_error->id = G_SEGY_FILE_READ_ERROR;                  
                file_error->gerror = gerror;
            }
            break;
        }

#if defined LINUX || defined WIN32
        bytes_read = read (fd, trace_buffer, private->trace_header_size);
        if (bytes_read != private->trace_header_size) {
            if (bytes_read && file_error) {
                file_error->id = G_SEGY_FILE_PREMATURE_EOF;
#else
        status = g_io_channel_read_chars (private->io_channel, trace_buffer, private->trace_header_size,
                                          &bytes_read, &gerror);
        if (status != G_IO_STATUS_NORMAL || bytes_read != private->trace_header_size) {
            if (file_error) {
                if (status == G_IO_STATUS_EOF && bytes_read != 0)
                    file_error->id = G_SEGY_FILE_PREMATURE_EOF;
                else
                    file_error->id = G_SEGY_FILE_READ_ERROR;                  
                file_error->gerror = gerror;
#endif
            }
            break;
        }

        g_segy_format_wizard_get_number_of_samples (private->format_wizard, trace_buffer, &number_of_samples);
        samples_to_read = number_of_samples > private->number_of_samples || 0 == number_of_samples
                          ? private->number_of_samples : number_of_samples;
        bytes_to_read = samples_to_read * private->sample_size;
#if defined LINUX || defined WIN32
        bytes_read = read (fd, trace_buffer, bytes_to_read);
        if (bytes_read != bytes_to_read) {
            if (file_error)
                file_error->id = G_SEGY_FILE_READ_ERROR;
#else
        status = g_io_channel_read_chars (private->io_channel, trace_buffer, bytes_to_read,
                                          &bytes_read, &gerror);
        if (status != G_IO_STATUS_NORMAL || bytes_read != bytes_to_read) {
            if (file_error) {
                if (status == G_IO_STATUS_EOF && bytes_read != 0)
                    file_error->id = G_SEGY_FILE_PREMATURE_EOF;
                else
                    file_error->id = G_SEGY_FILE_READ_ERROR;                  
                file_error->gerror = gerror;
            }
#endif
            break;
        }
        g_segy_format_wizard_decode_trace (private->format_wizard, private->sample_id, samples_to_read,
                                           trace_buffer, &data[trace_num * private->number_of_samples]);
        if (samples_to_read < private->number_of_samples) {
           for (j = samples_to_read; j < private->number_of_samples; j++)
               data[trace_num * private->number_of_samples + j] = 0;
        }
        trace_num++;
    }

    if (0 == trace_num) {
        g_free (data);
        return NULL;
    }

#if defined LINUX || defined WIN32
    if (private->file_mutex)
        g_mutex_unlock (private->file_mutex);
#endif

    if (slow_num)
        *slow_num = trace_num;
    if (fast_num)
        *fast_num = private->number_of_samples;
    return data;
}

static void g_segy_file_accessor_init (GSEGYFileAccessor *self) {
    GSEGYFileAccessorPrivate *private = G_SEGY_FILE_ACCESSOR_GET_PRIVATE (self);

    private->format_wizard = NULL;
    private->io_channel = NULL;
    private->format_wizard = NULL;
    private->ebcdic_header = NULL;
    private->binary_header = NULL;

    private->sorting_contents = NULL;
    private->trace_positions = NULL;

    private->trace_buffer = NULL;
    private->trace_buffer_size = 0;

    private->sorting_data_buffer = NULL;

    if (g_thread_supported ())
        private->file_mutex = g_mutex_new ();

#ifdef DEBUG
    g_print ("<GSEGYFileAccessor is inited>\n");
#endif
}

static void g_segy_file_accessor_finalize (GObject *object) {
    GSEGYFileAccessorPrivate *private = G_SEGY_FILE_ACCESSOR_GET_PRIVATE (G_SEGY_FILE_ACCESSOR (object));

    if (private->format_wizard)
        g_object_unref (G_OBJECT (private->format_wizard));
    if (private->io_channel)
        g_io_channel_unref (private->io_channel);

    if (private->ebcdic_header_size)
        g_free (private->ebcdic_header);
    if (private->binary_header_size)
        g_free (private->binary_header);

    if (private->sorting_contents)
        g_array_free (private->sorting_contents, TRUE);
    if (private->trace_positions)
        g_array_free (private->trace_positions, TRUE);

    if (private->trace_buffer)
        g_free (private->trace_buffer);

    if (private->sorting_data_buffer)
        g_free (private->sorting_data_buffer);

    if (private->file_mutex)
        g_mutex_free (private->file_mutex);

#ifdef DEBUG
    g_print ("<GSEGYFileAccessor is finalized>\n");
#endif
    if (G_OBJECT_CLASS (g_segy_file_accessor_parent_class)->finalize)
        G_OBJECT_CLASS (g_segy_file_accessor_parent_class)->finalize (object);
}

enum {
    PROP_0,
    PROP_IO_CHANNEL,
    PROP_FORMAT_WIZARD
};

static void g_segy_file_accessor_set_property (GObject *object, guint prop_id,
                                               const GValue *value, GParamSpec *pspec) {
    GSEGYFileAccessorPrivate *private = G_SEGY_FILE_ACCESSOR_GET_PRIVATE (G_SEGY_FILE_ACCESSOR (object));

    switch (prop_id) {
        case PROP_IO_CHANNEL: {
            GIOChannel *io_channel = (GIOChannel*)g_value_get_pointer (value);
            private->io_channel = io_channel;
            g_io_channel_ref (private->io_channel);
            if (private->format_wizard)
                g_segy_file_accessor_setup (G_SEGY_FILE_ACCESSOR (object));
            g_object_notify (object, "io_channel");
            }
            break;
        case PROP_FORMAT_WIZARD: {
            GSEGYFormatWizard *format_wizard = G_SEGY_FORMAT_WIZARD (g_value_get_object (value));
            private->format_wizard = format_wizard;
            g_object_ref (G_OBJECT (private->format_wizard));
            if (private->io_channel)
                g_segy_file_accessor_setup (G_SEGY_FILE_ACCESSOR (object));
            g_object_notify (object, "format_wizard");
            }
            break;
        default:
            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
            break;
    }
}

static void g_segy_file_accessor_get_property (GObject *object, guint prop_id,
                                               GValue *value, GParamSpec *pspec) {
    GSEGYFileAccessorPrivate *private = G_SEGY_FILE_ACCESSOR_GET_PRIVATE (G_SEGY_FILE_ACCESSOR (object));

    switch (prop_id) {
        case PROP_IO_CHANNEL:
            g_value_set_pointer (value, private->io_channel);
            break;
        case PROP_FORMAT_WIZARD:
            g_value_set_object (value, private->format_wizard);
            break;
        default:
            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
            break;
    }
}

static void g_segy_file_accessor_class_init (GSEGYFileAccessorClass *klass) {
    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);

    g_type_class_add_private (klass, sizeof (GSEGYFileAccessorPrivate));

    gobject_class->finalize = (GObjectFinalizeFunc) g_segy_file_accessor_finalize;
    gobject_class->set_property = g_segy_file_accessor_set_property;
    gobject_class->get_property = g_segy_file_accessor_get_property;

    klass->scan_fraction = NULL;

    klass->scan_fraction_id = g_signal_new ("scan_fraction",
                                            G_TYPE_FROM_CLASS ((gpointer)G_OBJECT_CLASS (klass)),
                                            G_SIGNAL_RUN_LAST,
                                            G_STRUCT_OFFSET (GSEGYFileAccessorClass, scan_fraction),
                                            NULL, NULL,
                                            g_segy_marshal_BOOLEAN__FLOAT_BOXED,
                                            G_TYPE_BOOLEAN, 2,
                                            G_TYPE_FLOAT, G_TYPE_POINTER);

    g_object_class_install_property (gobject_class,
                                     PROP_IO_CHANNEL,
                                     g_param_spec_pointer ("io_channel", "IOChannel",
                                     "System object describing opened files",
                                     G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));

    g_object_class_install_property (gobject_class,
                                     PROP_FORMAT_WIZARD,
                                     g_param_spec_object ("format_wizard", "FormatWizard",
                                     "Object responsible for the knowledge of how to read opened files",
                                     G_SEGY_TYPE_FORMAT_WIZARD,
                                     G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));

#ifdef DEBUG
    g_print ("<GSEGYFileAccessor class is inited>\n");
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产91久久久久久久妲己 | 亚洲欧美日韩国产成人精品影院| 国产精品国产三级国产aⅴ中文| 亚洲精品一二三| 久久99精品国产麻豆婷婷| 99视频精品在线| 欧美成人综合网站| 亚洲国产精品一区二区久久| 国产大陆精品国产| 日韩一级大片在线观看| 中文字幕视频一区| 国产一区在线观看麻豆| 91福利在线观看| 中文字幕第一页久久| 国产一区二区调教| 欧美美女bb生活片| 亚洲精品高清视频在线观看| 国产jizzjizz一区二区| 欧美精品一区二区三区高清aⅴ | 丝袜诱惑亚洲看片| 成人福利视频在线看| 欧美va天堂va视频va在线| 亚洲成人动漫一区| 色久综合一二码| 最新欧美精品一区二区三区| 国产精品一区二区久激情瑜伽| 欧美一区二区视频网站| 亚洲国产精品久久人人爱| 色综合久久中文综合久久97| 久久久精品中文字幕麻豆发布| 日韩av在线发布| 欧美日产国产精品| 亚洲成人第一页| 欧美日韩卡一卡二| 日日夜夜一区二区| 欧美日韩视频在线第一区 | 中文字幕一区二区三区不卡在线| 麻豆成人免费电影| 91精品国产欧美日韩| 午夜欧美在线一二页| 欧美丝袜丝交足nylons| 国产精品免费av| 99久久精品免费看国产| 亚洲欧洲av色图| av一区二区久久| 亚洲三级电影网站| 欧美亚洲国产怡红院影院| 亚洲国产欧美另类丝袜| 欧美日韩国产a| 蜜桃视频在线一区| 久久久99久久| av资源站一区| 亚洲午夜在线视频| 日韩欧美123| 高清在线成人网| 中文字幕五月欧美| 欧美日韩日日骚| 麻豆91免费观看| 中文在线免费一区三区高中清不卡| 成人精品视频一区二区三区尤物| 亚洲欧洲一区二区在线播放| 欧美影院午夜播放| 激情久久五月天| 亚洲情趣在线观看| 精品视频1区2区3区| 久久精品国产免费看久久精品| 久久女同性恋中文字幕| 色悠悠亚洲一区二区| 日本亚洲视频在线| 国产免费成人在线视频| 欧美图片一区二区三区| 国产在线精品一区二区夜色 | 亚洲国产成人av网| 26uuu亚洲综合色欧美| 97超碰欧美中文字幕| 日韩二区三区四区| 国产精品色眯眯| 91精品国产综合久久久蜜臀图片| 国内精品久久久久影院色 | 成人av电影在线网| 亚洲一区二区不卡免费| 精品国产欧美一区二区| 色综合色综合色综合| 国产在线一区二区综合免费视频| 亚洲乱码中文字幕| 久久综合五月天婷婷伊人| 欧美性猛交一区二区三区精品| 美女一区二区三区在线观看| 秋霞电影网一区二区| 国产日韩欧美一区二区三区综合| 欧美午夜精品久久久久久超碰| 国产精品一区二区三区99| 一区二区视频在线| 欧美激情在线免费观看| 欧美一区二区日韩| 在线观看三级视频欧美| 成人美女在线观看| 蜜桃在线一区二区三区| 亚洲国产wwwccc36天堂| 国产精品美女一区二区三区 | 亚洲欧洲99久久| 久久综合一区二区| 日韩午夜精品视频| 欧美放荡的少妇| 在线免费不卡视频| 99国产精品视频免费观看| 国产中文字幕精品| 国产一区二区三区在线观看免费 | 精品午夜一区二区三区在线观看| 一区二区三区精品视频在线| 18成人在线视频| 中文字幕亚洲区| 国产精品国产三级国产有无不卡| 日韩精品一区二区三区四区视频| youjizz久久| 高清在线成人网| 国产不卡高清在线观看视频| 国产精品自拍一区| 国产激情视频一区二区在线观看| 精彩视频一区二区| 久久99久国产精品黄毛片色诱| 五月激情综合网| 日韩综合一区二区| 日韩1区2区3区| 日韩国产欧美一区二区三区| 视频一区二区欧美| 日日摸夜夜添夜夜添亚洲女人| 亚洲午夜久久久久久久久久久| 一区二区三区欧美久久| 亚洲自拍另类综合| 日韩在线一二三区| 毛片一区二区三区| 国产综合色精品一区二区三区| 精品一区二区免费视频| 国产传媒久久文化传媒| 成人h动漫精品一区二区| 成人av集中营| 在线一区二区观看| 欧美一区日韩一区| 精品国产伦一区二区三区观看体验| 久久午夜国产精品| 国产精品久久久久毛片软件| 洋洋av久久久久久久一区| 性感美女久久精品| 紧缚奴在线一区二区三区| 国产91精品露脸国语对白| 99国产精品99久久久久久| 欧美性做爰猛烈叫床潮| 日韩欧美一区在线| 1024成人网色www| 天堂av在线一区| 国产成人精品免费在线| 欧美一二三四在线| xnxx国产精品| 亚洲码国产岛国毛片在线| 日本不卡1234视频| 国产69精品久久久久毛片| 色成人在线视频| 日韩一区二区三区四区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 日韩一区二区高清| 一区在线观看视频| 久热成人在线视频| 色婷婷亚洲精品| 久久久国产精品麻豆| 亚洲第一激情av| 国产成人精品免费| 91精品国产综合久久香蕉麻豆| 久久精品视频一区二区| 亚洲午夜成aⅴ人片| 成人夜色视频网站在线观看| 欧美久久久久久久久久| 欧美高清一级片在线观看| 午夜欧美大尺度福利影院在线看| 国产成人超碰人人澡人人澡| 欧美人伦禁忌dvd放荡欲情| 亚洲欧美综合网| 国产成人自拍网| 欧美一区二区高清| 亚洲国产欧美日韩另类综合| 成人性生交大片免费看视频在线 | 亚洲1区2区3区视频| 成人av网站在线| 精品理论电影在线观看| 亚洲v日本v欧美v久久精品| av电影在线观看一区| 26uuu欧美日本| 麻豆视频一区二区| 678五月天丁香亚洲综合网| 亚洲精品中文在线| 99久免费精品视频在线观看| 久久久久88色偷偷免费 | 亚洲夂夂婷婷色拍ww47| 成人av午夜电影| 国产日韩v精品一区二区| 久久99国产乱子伦精品免费| 欧美一区二区精品在线| 日本色综合中文字幕| 欧美日本视频在线| 日韩激情一区二区|