⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cms_up.cc

📁 Source code for an Numeric Cmputer
💻 CC
字号:
/********************************************************************* Description: cms_up.cc*   Provides the interface to CMS used by NML update functions*   including a CMS update function for all the basic C data types.**   Derived from a work by Fred Proctor & Will Shackleford** Author:* License: LGPL Version 2* System: Linux*    * Copyright (c) 2004 All rights reserved.** Last change: * $Revision: 1.5 $* $Author: paul_c $* $Date: 2005/05/23 16:34:12 $********************************************************************/#include "cms.hh"		/* class CMS */#include "cms_up.hh"		/* class CMS_UPDATER */#include "rcs_print.hh"		/* rcs_print_error() */#ifdef __cplusplusextern "C" {#endif#include <stdlib.h>		// malloc(), free()#include <string.h>		// memset()#ifdef __cplusplus}#endifCMS_UPDATER::CMS_UPDATER(CMS * _cms_parent, int create_encoded_data,    long _neutral_size_factor):  /**********************************************  * Aliases to variables in the CMS parent  * using aliases lets CMS and its CMS_UPDATER share this information  * more conveniently and allowed the CMS_UPDATER functions to be pulled out  * of CMS with fewer changes. (WPS - 6/12/95)  *********************************************/encoded_data(_cms_parent->encoded_data),encoded_header(_cms_parent->encoded_header),encoded_queuing_header(_cms_parent->encoded_queuing_header),status(_cms_parent->status),size(_cms_parent->size),encoded_header_size(_cms_parent->encoded_header_size),encoded_queuing_header_size(_cms_parent->encoded_queuing_header_size),using_external_encoded_data(_cms_parent->using_external_encoded_data),pointer_check_disabled(_cms_parent->pointer_check_disabled),encoded_data_size(_cms_parent->encoded_data_size){    cms_parent = _cms_parent;    mode = CMS_NO_UPDATE;    neutral_size_factor = _neutral_size_factor;    if (encoded_data == NULL && create_encoded_data) {	if (cms_parent->enc_max_size > 0	    && cms_parent->enc_max_size < neutral_size_factor * size) {	    set_encoded_data(malloc(cms_parent->enc_max_size),		cms_parent->enc_max_size);	} else {	    set_encoded_data(malloc(neutral_size_factor * size),		neutral_size_factor * size);	}	using_external_encoded_data = 0;    }}CMS_UPDATER::~CMS_UPDATER(){}void CMS_UPDATER::rewind(){}int CMS_UPDATER::set_mode(CMS_UPDATER_MODE _mode){    mode = _mode;    switch (mode) {    case CMS_NO_UPDATE:	break;    case CMS_ENCODE_DATA:	encoding = 1;	break;    case CMS_DECODE_DATA:	encoding = 0;	break;    case CMS_ENCODE_HEADER:	encoding = 1;	break;    case CMS_DECODE_HEADER:	encoding = 0;	break;    case CMS_ENCODE_QUEUING_HEADER:	encoding = 1;	break;    case CMS_DECODE_QUEUING_HEADER:	encoding = 0;	break;    default:	rcs_print_error("CMS updater in invalid mode.\n");	return (-1);    }    return (0);}CMS_UPDATER_MODE CMS_UPDATER::get_mode(){    return mode;}int CMS_UPDATER::check_pointer(char *_pointer, long _bytes){    if (NULL == cms_parent) {	return (-1);    }    return (cms_parent->check_pointer(_pointer, _bytes));}void CMS_UPDATER::set_encoded_data(void *_encoded_data,    long _encoded_data_size){    if (NULL != encoded_data &&	!using_external_encoded_data && encoded_data != _encoded_data) {	free(encoded_data);	encoded_data = NULL;    }    encoded_data = _encoded_data;    encoded_data_size = _encoded_data_size;    using_external_encoded_data = 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -