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

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

?? perattacher.cpp

?? asn格式文件的編譯器
?? CPP
字號:
/*
 * PERAttacher.cpp
 * 
 * Copyright (c) 2001 Institute for Information Industry, Taiwan, Republic of China 
 * (http://www.iii.org.tw/iiia/ewelcome.htm)
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 1, or (at your option)
 * any later version.
 *
 * $Log: perattacher.cpp,v $ * Revision 1.1.1.1  2001/08/01 07:39:00  mangelo * Import to SourceForge *
 * Revision 1.1.1.1  2001/05/05 15:16:34  angelo
 * First CVS Version
 *
 */

#include "perattacher.h"

PERAttacher::PERAttacher(ASN1::PERDecoder& coder, 
             HFRAME			   frame,
             HPROPERTY		   property,
             std::string       text,
             int               lvl)
: ASN1::Visitor(coder.get_env())
, decoder(coder)
, hFrame(frame)
, hProperty(property)
, level(lvl)
{
    strm << text;
}

bool PERAttacher::attach(const char* startPosition)
{
    strm << std::ends;
    std::string& str = strm.str();
	return AttachPropertyInstanceEx( hFrame,
		hProperty,
		decoder.getNextPosition()  - startPosition,
		(void*)startPosition,
		(DWORD) str.size()+1,
		(void*) str.c_str(), 
		0, level, 0) != 0;
}

bool PERAttacher::do_visit(ASN1::AbstractData& value)
{
	const char* startPos = decoder.getPosition();

	if (value.accept(decoder))
	{
        strm << std::ends;
        std::string& str = strm.str();
        int len = str.find_first_of('\0');
        strm.seekp(-1, std::ios::cur);
        if (len > 2 && str[len-2] != ':')
            strm << "= ";
		strm << value;
		return attach(startPos);
	}
	return false;
}

bool PERAttacher::do_visit(ASN1::Null& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::BOOLEAN& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::INTEGER& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::ENUMERATED& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}


bool PERAttacher::do_visit(ASN1::OBJECT_IDENTIFIER& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::BIT_STRING& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::OCTET_STRING& value)
{
    const char* startPos = decoder.getPosition();
    
    if (value.accept(decoder))
    {
		strm << " (length = " << value.size() << ")";
        if (attach(startPos)) 
        {
            strm.seekp(0, std::ios::beg);
            if (value.getLowerLimit() == 4 && value.getUpperLimit() == 4)
            {
                for (int i = 0; i < 4 ; ++i)
                {
                    strm << (unsigned)(unsigned char)value[i];
                    if (i !=3) strm << '.';
                }
            }
            else if (value.size() <= 16)
            {
                strm << std::uppercase << value;
            }
            else
			    strm << "Number of data bytes remaining = " 
				    << value.size() << " (0x" << std::hex << value.size() 
                    << ")" << std::dec;
			level++;
			bool result = attach(decoder.getPosition()-value.size());
            level--;
            return result;
		}
    }
    return false;    
}

bool PERAttacher::do_visit(ASN1::AbstractString& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::BMPString& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::GeneralizedTime& value)
{
    return do_visit(static_cast<ASN1::AbstractData&>(value));
}

bool PERAttacher::do_visit(ASN1::CHOICE& value)
{
	const char* savedPosition = decoder.getPosition();
    memento_type memento;
    bool ok = false;
    if (decoder.decodeChoicePreamle(value,memento))
    {
        if (!value.isUnknownSelection())
		{
			strm << value.getSelectionName() << " : ";
			if (!value.getSelection()->accept(*this))
				ok = false;
			decoder.rollback(memento);
            ok = true;
		}
		else
		{
			decoder.rollback(memento);
			strm << "[Unknown]";
			attach(savedPosition);
            ok = true;
		}
    }
    return ok;
}

bool PERAttacher::do_visit(ASN1::SEQUENCE_OF_Base& value)
{
  const char* savedPosition = decoder.getPosition();
  value.clear();

  unsigned size, i;
  if (decoder.decodeConstrainedLength(value, size) < 0)
    return false;

  memento_type memento = decoder.get_memento();
  for (i = 0; i < (unsigned)size; i++) {
	std::auto_ptr<ASN1::AbstractData> obj(value.createElement());
    if (!obj->accept(decoder))
      return false;
  }
  attach(savedPosition);

  decoder.rollback(memento);
  level++;
  bool ok = true;
  for (i = 0; i < (unsigned)size; i++) {
	std::auto_ptr<ASN1::AbstractData> obj(value.createElement());
    strm.seekp(0, std::ios::beg);
	strm << "[" << i << "] " ; 
    if (!obj->accept(*this))
    {
      ok = false;
      break;
    }
	value.push_back(obj.release());
  }
  level--;
  return ok;
}

bool PERAttacher::do_visit(ASN1::OpenData& value)
{
    memento_type memento = decoder.get_memento();

    if (value.accept(decoder))
	{
		if (decoder.get_env())
			openDataPositions.push_back(memento);
		return attach(memento.bytePosition);
	}
	return false;
}

bool PERAttacher::do_revisit(ASN1::OpenData& value)
{
	bool ok = false;;
	if (value.has_data())
	{
		memento_type memento = decoder.get_memento();
		decoder.rollback(openDataPositions.back());
		unsigned nBytes;
		if (decoder.decodeLength(0, INT_MAX, nBytes) >= 0)
		{
			level++;
			strm.seekp(0, std::ios::beg);
			ok = value.get_data().accept(*this);
			level--;
		}
		decoder.rollback(memento);
	}
	openDataPositions.pop_back();
	return ok;
}

bool PERAttacher::do_visit(ASN1::TypeConstrainedOpenData& value)
{
    assert(value.has_data());
	unsigned len;
    if (decoder.decodeLength(0, INT_MAX, len) != 0)
       return false;
	const char* nextPosition = decoder.getPosition() + len;
	bool ok = value.get_data().accept(*this);
	decoder.setPosition(nextPosition);
	return ok;
}


ASN1::Visitor::VISIT_SEQ_RESULT PERAttacher::preVisitExtensionRoots(ASN1::SEQUENCE& value)
{
	memento_type memento = decoder.get_memento();
	if (value.accept(decoder))
	{
		if (attach(memento.bytePosition))
		{
			decoder.rollback(memento);
			return decoder.preVisitExtensionRoots(value);
		}
	}
	return FAIL;
}

ASN1::Visitor::VISIT_SEQ_RESULT PERAttacher::visitExtensionRoot(ASN1::SEQUENCE& value, int index, int optional_id)
{
	if (optional_id == -1 || value.hasOptionalField(optional_id))
	{
        if (value.getField(index) == NULL)
            value.includeOptionalField(optional_id, index);
		if (value.getField(index) == NULL)
			return FAIL;
		strm.seekp(0, std::ios::beg);
		level++;
		strm << value.getFieldName(index) << ' ';
		if (!value.getField(index)->accept(*this))
			return FAIL;
		level--;
	}
	return CONTINUE;	
}

ASN1::Visitor::VISIT_SEQ_RESULT PERAttacher::preVisitExtensions(ASN1::SEQUENCE& value)
{
	return decoder.preVisitExtensions(value);
}

ASN1::Visitor::VISIT_SEQ_RESULT PERAttacher::visitKnownExtension(ASN1::SEQUENCE& value, int index, int optional_id)
{
  if (!value.hasOptionalField(optional_id))
    return CONTINUE;

  unsigned len;
  if (decoder.decodeLength(0, INT_MAX, len) != 0)
    return FAIL;

  const char* nextExtensionPosition = decoder.getPosition() + len;
  bool ok = true;
  if (value.getField(index) == NULL)
    value.includeOptionalField(optional_id, index);
  if (value.getField(index) != NULL)
  {
	 strm.seekp(0, std::ios::beg);
	 level++;
	 strm << value.getFieldName(index) << ' ';
	 ok = value.getField(index)->accept(*this);
	 level--;
  }
  decoder.setPosition(nextExtensionPosition);
  return ok ? CONTINUE : FAIL;
}

bool PERAttacher::visitUnknownExtensions(ASN1::SEQUENCE& value)
{
	return decoder.visitUnknownExtensions(value);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu久久天堂性欧美| 亚洲三级在线看| 亚洲欧美在线高清| 天堂久久一区二区三区| 日韩专区欧美专区| 精品一区二区三区不卡| 国内国产精品久久| 成人av动漫网站| 一本大道综合伊人精品热热| 国产精品一区二区久久精品爱涩 | 欧美性猛交一区二区三区精品| 欧美日韩国产一级片| 欧美本精品男人aⅴ天堂| 国产日韩欧美一区二区三区乱码 | 中文字幕第一区综合| 亚洲人成电影网站色mp4| 亚洲va韩国va欧美va| 国产一区二区美女| 狠狠色综合色综合网络| 在线精品视频一区二区三四| 精品嫩草影院久久| 亚洲欧洲一区二区在线播放| 亚洲成av人片一区二区梦乃| 成人一区二区三区视频在线观看| 色婷婷精品久久二区二区蜜臂av| 在线91免费看| 亚洲九九爱视频| 毛片基地黄久久久久久天堂| 91免费版在线| 久久久综合网站| 蜜臀av一区二区| 在线成人av网站| 自拍偷自拍亚洲精品播放| 久久99深爱久久99精品| 欧美电影一区二区| 国产精品夫妻自拍| 国产精品亚洲成人| 日本精品一级二级| 亚洲高清在线视频| 在线观看亚洲a| 亚洲电影视频在线| 欧美日韩在线免费视频| 中文字幕一区二区三中文字幕| 9l国产精品久久久久麻豆| 中文字幕一区av| 91毛片在线观看| 亚洲视频综合在线| 色综合久久久久| 亚洲午夜av在线| 在线欧美小视频| 综合色天天鬼久久鬼色| 91免费观看视频| 一区二区不卡在线播放 | 久久久久国色av免费看影院| 蜜桃视频在线一区| 337p粉嫩大胆噜噜噜噜噜91av| 久久99精品国产| 中文欧美字幕免费| 欧美精品一卡二卡| 日本欧美大码aⅴ在线播放| 日韩女优电影在线观看| 国产一区二区精品在线观看| 久久久久久久久岛国免费| 国产又黄又大久久| 亚洲三级免费电影| 欧美xxxxxxxx| 成人av网址在线| 久久99精品国产91久久来源| 久久久亚洲精华液精华液精华液 | 成a人片亚洲日本久久| 亚洲一区日韩精品中文字幕| 精品国产一区二区三区久久久蜜月 | 亚洲人成网站在线| 日韩亚洲欧美一区| 97精品久久久久中文字幕| 亚洲1区2区3区4区| 亚洲女同一区二区| 久久嫩草精品久久久精品| 色婷婷狠狠综合| 国产一区二区三区日韩| 1区2区3区国产精品| 337p亚洲精品色噜噜| 99久久er热在这里只有精品66| 免费观看在线综合色| 亚洲成人免费av| 日韩美女视频19| 久久久精品影视| 欧美日韩一级片在线观看| 狠狠久久亚洲欧美| 九九**精品视频免费播放| 日韩avvvv在线播放| 玉足女爽爽91| 中文字幕字幕中文在线中不卡视频| 欧美日韩成人在线一区| 成人av网在线| 国产一区二区三区日韩| 天堂一区二区在线免费观看| 亚洲精品乱码久久久久久久久 | 国产成人av电影免费在线观看| 三级不卡在线观看| 蜜乳av一区二区| 91视频在线看| 色综合天天狠狠| 色婷婷av一区二区三区大白胸| 国产精品自在在线| 国产一区不卡视频| 国产在线看一区| 国产在线精品视频| 国产精品一品视频| www.综合网.com| 91啪九色porn原创视频在线观看| 大白屁股一区二区视频| 波多野结衣的一区二区三区| 99精品视频一区二区| av综合在线播放| 欧美精品 日韩| 国产亚洲欧美日韩俺去了| 国产精品成人在线观看| 一区二区三区日韩精品| 日本特黄久久久高潮| 国产成人免费网站| 在线亚洲高清视频| 日韩精品中午字幕| 精品国产sm最大网站免费看| 久久久久久久久久久黄色| 最近中文字幕一区二区三区| 亚洲视频一区二区在线观看| 五月激情综合色| 国产自产v一区二区三区c| 91麻豆swag| 国产亚洲一区二区三区| 亚洲一区二区美女| 国产高清在线精品| 欧美天堂亚洲电影院在线播放| 精品国产一区二区三区久久久蜜月 | 欧美激情一区二区三区在线| 久久久99精品免费观看不卡| 中文字幕一区在线观看视频| 亚洲chinese男男1069| 国产成人av影院| 中文字幕一区二区在线观看| 五月综合激情婷婷六月色窝| 高清不卡在线观看av| 精品国产伦一区二区三区观看方式 | 久久免费电影网| 麻豆国产精品一区二区三区 | 99re在线精品| 久久久久久日产精品| 久久国产精品色| 911精品产国品一二三产区| 综合色天天鬼久久鬼色| 国产在线精品一区二区三区不卡 | 久久久久久久网| 香蕉乱码成人久久天堂爱免费| 99久久久免费精品国产一区二区| 91精品国产一区二区| 亚洲欧美偷拍三级| 国产福利不卡视频| 中文字幕第一页久久| 国产乱人伦偷精品视频免下载| 日韩欧美一区二区三区在线| 亚洲精品大片www| av亚洲精华国产精华| 中文字幕不卡在线播放| 成人av小说网| 一区二区视频免费在线观看| 一本高清dvd不卡在线观看| 亚洲图片另类小说| 91精品国产高清一区二区三区| 一色桃子久久精品亚洲| 5566中文字幕一区二区电影 | 日韩欧美国产午夜精品| 成人av网站免费| 亚洲黄色免费网站| 精品电影一区二区| 精品剧情在线观看| 99久久国产综合精品麻豆| 久久国产婷婷国产香蕉| 日本一区二区高清| 欧美成人精品二区三区99精品| 欧美综合欧美视频| 色综合中文字幕国产| 91蝌蚪porny九色| 天使萌一区二区三区免费观看| 日韩一区二区精品在线观看| 国产成人精品综合在线观看| 亚洲激情六月丁香| 日韩精品影音先锋| 91在线小视频| 久色婷婷小香蕉久久| 666欧美在线视频| 欧美亚洲一区二区在线| 精品一区二区国语对白| 亚洲欧美自拍偷拍色图| 精品日韩成人av| 欧美精品xxxxbbbb| 丁香激情综合国产| 日本一区二区不卡视频| 欧美日韩视频一区二区| 成人av网站在线|