#include "w2_Clear_Form_PropValue.h" #include "error_handling.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include using namespace std; #ifdef __cplusplus extern "C" { #endif int delete_msword(tag_t dataset,char *ext,char *newRevType) { tag_t spec_dataset_rev = NULLTAG , ref_object = NULLTAG; AE_reference_type_t reference_type; printf("\n111111111111\n"); AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); char ref_name[WSO_name_size_c + 1] = "Fnd0word"; //printf("\n22222222222\n"); AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); if(reference_type == AE_PART_OF) { printf("\n3333333333333\n"); char pathname[SS_MAXPATHLEN] = ""; IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); char origin_file_name[IMF_filename_size_c + 1] = ""; IMF_ask_original_file_name(ref_object, origin_file_name); printf("\n44444444444444\n"); char new_ds_name[WSO_name_size_c + 1] = ""; char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); char *temp_dir = getenv("temp"); temp_dir="E:\\TEMP"; printf("\n555555555555\n"); char temp_file[SS_MAXPATHLEN] = ""; strcpy(temp_file, temp_dir); strcat(temp_file, "\\"); strcat(temp_file, new_file_name); IMF_export_file(ref_object, temp_file); printf("\n66666666666666\n"); int iCnt; char *user_lib_env,pTempStr[500]; char local_path[MAX_PATH] = ""; char cmd[256] = ""; //user_lib_env = getenv("TC_USER_LIB"); //strcpy(local_path, user_lib_env); //iCnt = strlen(user_lib_env); //while( user_lib_env[iCnt] != '\\' ) //{ // iCnt--; //} //strcpy(pTempStr,""); //strcpy(pTempStr,&user_lib_env[iCnt+1]); //if( strcmp(pTempStr,"SubstMacros-MSWord.wsf") != 0 ) //{ // strcat( user_lib_env, "\\SubstMacros-MSWord.wsf" ); //} //strcpy( cmd, user_lib_env ); if(strcmp(newRevType,"天信")) { strcpy( cmd, "TXDeleteMacros-MSWord.wsf" ); }else { // strcpy( cmd, "JKDeleteMacros-MSWord.wsf" ); strcpy( cmd, "DeleteMacros-MSWord.wsf" ); } strcat( cmd, " \"" ); strcat( cmd, temp_file ); strcat( cmd, "\"" ); printf( "\n%s\n",cmd ); system( cmd ); printf("\n777777777777\n"); //strcpy(user_lib_env, local_path); tag_t new_file_tag = NULLTAG; IMF_file_t file_descriptor; IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); IMF_set_original_file_name(new_file_tag, origin_file_name); IMF_close_file(file_descriptor); AOM_save(new_file_tag); AOM_unlock(new_file_tag); AOM_lock(spec_dataset_rev); AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); AOM_save(spec_dataset_rev); AOM_unlock(spec_dataset_rev); } return ITK_ok; } int delete_msexcel(tag_t dataset, char *ext,char *newREV_type) { tag_t spec_dataset_rev = NULLTAG, ref_object = NULLTAG; AE_reference_type_t reference_type; AE_ask_dataset_latest_rev(dataset, &spec_dataset_rev); char ref_name[WSO_name_size_c + 1] = "excel"; AE_ask_dataset_named_ref(spec_dataset_rev, ref_name, &reference_type, &ref_object); if(reference_type == AE_PART_OF) { char pathname[SS_MAXPATHLEN] = ""; IMF_ask_file_pathname(ref_object, SS_WNT_MACHINE, pathname); char origin_file_name[IMF_filename_size_c + 1] = ""; IMF_ask_original_file_name(ref_object, origin_file_name); char new_ds_name[WSO_name_size_c + 1] = ""; char *new_file_name = USER_new_file_name(new_ds_name, ref_name, ext, 0); char *temp_dir = getenv("temp"); temp_dir="E:\\TEMP"; char temp_file[SS_MAXPATHLEN] = ""; strcpy(temp_file, temp_dir); strcat(temp_file, "\\"); strcat(temp_file, new_file_name); IMF_export_file(ref_object, temp_file); int iCnt; char *user_lib_env,pTempStr[500]; char local_path[MAX_PATH] = ""; char cmd[256] = ""; /*user_lib_env = getenv("TC_USER_LIB"); strcpy(local_path, user_lib_env); iCnt = strlen(user_lib_env); while( user_lib_env[iCnt] != '\\' ) { iCnt--; } strcpy(pTempStr,""); strcpy(pTempStr,&user_lib_env[iCnt+1]); if( strcmp(pTempStr,"SubstMacros-MSExcel.wsf") != 0 ) { strcat( user_lib_env, "\\SubstMacros-MSExcel.wsf" ); }*/ //strcpy( cmd, user_lib_env ); if(strcmp(newREV_type,"天信")) { strcpy( cmd, "TXDeleteMacros-MSExcel.wsf" ); }else { // strcpy( cmd, "JKDeleteMacros-MSExcel.wsf" ); strcpy( cmd, "DeleteMacros-MSExcel.wsf" ); } strcat( cmd, " \"" ); strcat( cmd, temp_file ); strcat( cmd, "\"" ); printf( "\n%s\n",cmd ); system( cmd ); //strcpy(user_lib_env, local_path); tag_t new_file_tag = NULLTAG; IMF_file_t file_descriptor; IMF_import_file(temp_file, new_file_name, SS_BINARY, &new_file_tag, &file_descriptor); IMF_set_original_file_name(new_file_tag, origin_file_name); IMF_close_file(file_descriptor); AOM_save(new_file_tag); AOM_unlock(new_file_tag); AOM_lock(spec_dataset_rev); //CALL(AOM_load (dataset)); //CALL(AOM_load(spec_dataset_rev)); AE_remove_dataset_named_ref_by_tag(spec_dataset_rev, ref_name, ref_object); AE_add_dataset_named_ref(spec_dataset_rev, ref_name, AE_PART_OF, new_file_tag); AOM_save(spec_dataset_rev); AOM_unlock(spec_dataset_rev); } return ITK_ok; } int W2_Revise_clear_form( METHOD_message_t* msg, va_list args ) { int ifail = ITK_ok, i = 0, j = 0; char rev_type[ITEM_type_size_c + 1], *optionname= "W2_Revise_clear_form";\ map prop_map; //int msgid = va_arg(args,int ); tag_t new_rev = va_arg(args,tag_t ); char* operation = va_arg(args,char* ); /*tag_t parent_rev = va_arg(args,tag_t ); int copyCount = va_arg(args,int ); tag_t **obj_tags = va_arg(args,tag_t** );*/ printf("*******************************************************\n"); printf("* W2_Revise_clear_form is comming *\n"); printf("*******************************************************\n"); //printf("msgid==============================%d \n",msgid); printf("new_rev==============================%d\n",new_rev); printf("operation==============================%s\n",operation); //printf("parent_rev==============================%u\n",parent_rev); //printf("copyCount==============================%d\n",copyCount); //-------------读取首选项(origin+rev_type+_str),itemrev与Form关系、Form类型、清空属性名 int option_value_count; char **option_values; char *PREF_W2_Revise_clear_form="JK_Revise_ItemRev";//首选项名称 if(strcmp(operation,"Revise")!=0 && strcmp(operation,"SaveAs")!=0){ return ifail; } ITKCALL(PREF_ask_char_values(PREF_W2_Revise_clear_form,&option_value_count,&option_values)); printf("=====option_value_count======%d\n",option_value_count); if(option_value_count == 0) { printf("请在option中配置选项%s!\n",PREF_W2_Revise_clear_form); return ifail; } ////-----------获得属性------- //for (j = 1; j 0) // { // for(index = 0; index < paramCount; index++) // { // tc_strcpy(DataSetType, input_args[index].arg_val.str_value); // printf("DataSetType=========%s\n",DataSetType); // option_name = (char*)MEM_alloc(sizeof(char)*(tc_strlen(origin)+tc_strlen(DataSetType)+tc_strlen(_str)+1)); // tc_strcpy(option_name,origin); // tc_strcat(option_name,DataSetType); // tc_strcat(option_name,_str); // //-------------读取首选项(origin+rev_type+_str),itemrev与Form关系、Form类型、清空属性名 // int option_value_count; // char **option_values; // ITKCALL(PREF_ask_char_values(option_name,&option_value_count,&option_values)); // printf("=====option_value_count======%d\n",option_value_count); // if(option_value_count == 0) // { // printf("请在option中配置选项%s!\n",option_name); // MEM_free(option_name); // break; // } // MEM_free(option_name); // //-----------查找关系 // tag_t relationTag = NULLTAG; // ITKCALL (GRM_find_relation_type(option_values[0],&relationTag)); // if(relationTag == NULLTAG) // { // printf("=====请建立%s关系类型!======\n",option_values[0]); // break; // } // //-----------通过关系查找指定类型的Form对象 // int rfCount = 0; // tag_t *rfTags = NULL; // char form_object_type[WSO_name_size_c+1]; // ITKCALL (GRM_list_secondary_objects_only(new_rev,relationTag,&rfCount,&rfTags));// // printf("=====rfCount======%d\n",rfCount); // for(i = 0; i < rfCount; i++) // { // ITKCALL(WSOM_ask_object_type(rfTags[i],form_object_type)); // printf("=====form_object_type======%s\n",form_object_type); // if(tc_strcmp(form_object_type,option_values[1]) == 0) // { // ITKCALL( AOM_lock( rfTags[i] ) ); // for(j = 2;j < option_value_count; j++) // { // ITKCALL(AOM_set_value_string(rfTags[i],option_values[j],"")); // ITKCALL( AOM_save( rfTags[i] ) ); // } // ITKCALL( AOM_unlock( rfTags[i] ) ); // ITKCALL( AOM_refresh( rfTags[i],true ) ); // break; // } // } // MEM_free(option_values); // MEM_free(rfTags); // } // MEM_free(input_args); // } // /**/ // printf("*******************************************************\n"); // printf("* D5DFHM_Clear_Form_PropValue is end *\n"); // printf("*******************************************************\n"); // return ifail; //} /**/ //iman_save(itemrevision) /*int Origin_Clear_Form_PropValue( METHOD_message_t* msg, va_list args ) { int ifail = ITK_ok, i = 0, j = 0; char rev_type[ITEM_type_size_c + 1], *origin = "origin_", *_str = "_Clear_QzInfo", *option_name = "Origin_ACADDWG_Clear_QzInfo"; tag_t item_rev = va_arg(args,tag_t ); printf("*******************************************************\n"); printf("* Origin_Clear_Form_PropValue is comming *\n"); printf("*******************************************************\n"); ITKCALL(ITEM_ask_rev_type(item_rev,rev_type)); char rev_id[ITEM_id_size_c + 1]; ITKCALL(ITEM_ask_rev_id(item_rev,rev_id)); printf("rev_type==============================%s\n",rev_type); printf("rev_id==============================%s\n",rev_id); //option_name = (char*)MEM_alloc(sizeof(char)*(tc_strlen(origin)+tc_strlen(rev_type)+tc_strlen(_str)+1)); //tc_strcpy(option_name,origin); //tc_strcat(option_name,rev_type); //tc_strcat(option_name,_str); //-------------读取首选项(origin+rev_type+_str),itemrev与Form关系、Form类型、清空属性名 int option_value_count; char **option_values; ITKCALL(PREF_ask_char_values(option_name,&option_value_count,&option_values)); printf("=====option_value_count======%d\n",option_value_count); if(option_value_count == 0) { printf("请在option中配置选项%s!\n",option_name); return ITK_ok; } //-----------查找关系 tag_t relationTag = NULLTAG; ITKCALL (GRM_find_relation_type(option_values[0],&relationTag)); if(relationTag == NULLTAG) { printf("=====请建立%s关系类型!======\n",option_values[0]); return ITK_ok; } //-----------通过关系查找指定类型的Form对象 int rfCount = 0; tag_t *rfTags = NULL; char form_object_type[WSO_name_size_c+1]; ITKCALL (GRM_list_secondary_objects_only(item_rev,relationTag,&rfCount,&rfTags));// printf("=====rfCount======%d\n",rfCount); GRM_relation_t* secondary_list ; ITKCALL (GRM_list_secondary_objects(item_rev,relationTag,&rfCount,&secondary_list));// printf("=====rfCount111111======%d\n",rfCount); ITEM_attached_object_t* objects; ITKCALL (ITEM_list_all_rev_attachments(item_rev,&rfCount,&objects));// printf("=====rfCount2222222======%d\n",rfCount); int t = 0; tag_t *tg = NULLTAG; ITKCALL(AOM_ask_value_tags(item_rev,option_values[0],&t,&tg)); printf("=====tttttttt======%d\n",t); for(i = 0; i < rfCount; i++) { ITKCALL(WSOM_ask_object_type(objects[i].attachment,form_object_type)); printf("=====form_object_type======%s\n",form_object_type); if(tc_strcmp(form_object_type,option_values[1]) == 0) { ITKCALL( AOM_lock( rfTags[i] ) ); for(j = 2;j < option_value_count; j++) { ITKCALL(AOM_set_value_string(rfTags[i],option_values[j]," ")); ITKCALL( AOM_save( rfTags[i] ) ); } ITKCALL( AOM_unlock( rfTags[i] ) ); break; } } //MEM_free(option_name); MEM_free(option_values); MEM_free(rfTags); printf("*******************************************************\n"); printf("* Origin_Clear_Form_PropValue is end *\n"); printf("*******************************************************\n"); return ifail; }*/ int Create_item_test( METHOD_message_t* msg, va_list args ) { int ifail = ITK_ok, i = 0, j = 0, form_count=0; tag_t item_tag = NULLTAG, rev = NULLTAG,master_form_rel_type = NULLTAG, master_form = NULLTAG, *form_list=NULL; char item_type[WSO_name_size_c+1]="", *value=NULL; item_tag = msg->object; CALL( WSOM_ask_object_type( item_tag, item_type ) ); printf("=============type is %s\n",item_type); if (strcmp(item_type,"Item")==0) { CALL(ITEM_ask_latest_rev(item_tag, &rev)); CALL( GRM_find_relation_type( TC_master_form_rtype, &master_form_rel_type ) ); CALL(GRM_list_secondary_objects_only(rev, master_form_rel_type, &form_count, &form_list )); master_form = form_list[0]; CALL(AOM_lock(master_form)); CALL( AOM_set_value_string( master_form, "user_data_1", "未开始") ); CALL( AOM_save( master_form ) ); CALL( AOM_unlock( master_form ) ); printf("set property success!\n"); } //tag_t form_tag = NULLTAG; //tag_t object_type_tag = NULLTAG; //tag_t form_type_tag = NULLTAG; //logical is_form_type = false; //form_tag = msg->object; //char form_type[WSO_name_size_c+1]="", *value=NULL; // //CALL( WSOM_ask_object_type( form_tag, form_type ) ); // //CALL( TCTYPE_ask_object_type (form_tag, &object_type_tag)); //CALL( TCTYPE_find_type ("Form",NULL,&form_type_tag)); //CALL( AOM_is_type_of(form_tag,form_type_tag,&is_form_type)); // printf("=============type is %s\n",item_type); //if (strstr(form_type, "ItemRevision Master") != NULL) //{ // CALL(AOM_lock(form_tag)); // CALL(AOM_ask_value_string(form_tag, "user_data_1", &value)); // printf("=============value is %s\n",value); // //if(strcmp(value,"")!=0) // { // //EMH_store_error_s1(EMH_severity_user_error, ERROR_NO_WRITE_PRIVILEGE, "Form"); // //ifail = ERROR_NO_WRITE_PRIVILEGE; // //goto end_handler; // //CALL(AOM_set_value_string(form_tag, "user_data_1",value)); // ifail = AM_insufficient_privilege; // return ifail; // } //} return ITK_ok; } extern int Register_revise_msg( void ) { int status = ITK_ok; char *err_string,*err_function; int err_line = -1; printf("W2_Revise_clear_form函数!\n"); METHOD_id_t mth_tag; ITKCALL(status = METHOD_find_method("ItemRevision", ITEM_deep_copy_msg ,&mth_tag)); if (mth_tag.id != 0){ ITKCALL( METHOD_add_action(mth_tag, METHOD_post_action_type, W2_Revise_clear_form, NULL)); printf("注册W2_Revise_clear_form函数成功!\n"); } /* ITKCALL(status = METHOD_find_method("Item", ITEM_create_msg ,&mth_tag)); if (mth_tag.id != 0){ ITKCALL( METHOD_add_action(mth_tag, METHOD_post_action_type, Create_item_test, NULL)); printf("注册Create_item_test函数成功!\n"); }*/ return status; } #define SAFECALL(x) \ { \ err_function = #x; err_line = __LINE__; \ if((rcode = (x)) != ITK_ok) \ { \ goto CLEANUP; \ } \ } void va_copy( va_list *dest , va_list * src ){ *dest = *src ; } static int SMP_ask_bomline_value( METHOD_message_t * m, va_list args ) { int rcode = ITK_ok; char *err_string,*err_function; int err_line = -1; tag_t objTag = NULLTAG; const char * prop_name; char** value = NULL; char *bom_rev_status = NULL; char sQty[] = ""; char sUnRead[] = "UNREADABLE"; va_list largs; tag_t bom_line_item = NULLTAG; tag_t bom_line_rev = NULLTAG; tag_t last_rev = NULLTAG; tag_t iman_type_tag = NULLTAG ; char obj_class_name[TCTYPE_class_name_size_c+1]; char obj_type_name[TCTYPE_name_size_c+1]; int attr_bom_item = 0; int attr_bom_rev = 0; int attr_bom_rev_status = 0; char item_rev_id[ITEM_id_size_c+1]="",item_id[ITEM_id_size_c+1]="",rev_id[ITEM_id_size_c+1]="", strRow[BUFSIZ]="",txtfile[BUFSIZ]="", obj_type[WSO_object_type_size_c+1]=""; tag_t master_form_rel_type = NULLTAG; int form_count = 0, attr_qty_id = 0; tag_t *form_list=NULL, master_form = NULLTAG; char *d_value=NULL, *qty_value = NULL; METHOD_PROP_MESSAGE_OBJECT(m, objTag) /* objTag is the tag of the property's owning object */ METHOD_PROP_MESSAGE_PROP_NAME(m, prop_name) /* prop_name is the name of the current property */ printf("\n 属性 name : %s\n",prop_name); va_copy( &largs, &args ); va_arg( largs, tag_t ); /* ignore the first tag_t arg */ value = va_arg( largs, char**); va_end( largs ); //获取目标对象的类型 ITKCALL( TCTYPE_ask_object_type( objTag,&iman_type_tag ) ); ITKCALL( TCTYPE_ask_class_name(iman_type_tag,obj_class_name));//get ClassName of attachment ITKCALL( TCTYPE_ask_name(iman_type_tag,obj_type_name) ); printf("\n Type name : %s\n",obj_type_name); //if ( strcmp( obj_type_name , "Mfg0BvrPart" ) == 0 ) //{ // //} //if ( strcmp( obj_type_name , "Mfg0BvrPart" ) == 0 ) if ( strcmp( obj_type_name , "BOMLine" ) == 0 ) { printf("\n is BOMLine\n"); SAFECALL( BOM_line_look_up_attribute( bomAttr_lineItemTag , & attr_bom_item ) ); SAFECALL( BOM_line_look_up_attribute( bomAttr_lineItemRevTag , & attr_bom_rev ) ); SAFECALL( BOM_line_look_up_attribute( bomAttr_occQty , & attr_qty_id ) ); SAFECALL( BOM_line_ask_attribute_tag( objTag, attr_bom_item , &bom_line_item )); SAFECALL( BOM_line_ask_attribute_tag( objTag, attr_bom_rev , &bom_line_rev )); SAFECALL( BOM_line_ask_attribute_string( objTag, attr_qty_id, &qty_value )); SAFECALL( WSOM_ask_object_type(bom_line_item, obj_type )); printf("\n obj_type=%s",obj_type); //if( strcmp(obj_type, "Mfg0BvrPart") == 0) if( strcmp(obj_type, "C7Part") == 0) { SAFECALL( GRM_find_relation_type( TC_master_form_rtype, &master_form_rel_type ) ); SAFECALL( GRM_list_secondary_objects_only(bom_line_rev, master_form_rel_type, &form_count, &form_list )); master_form = form_list[0]; if( master_form != NULLTAG ) { SAFECALL(AOM_UIF_ask_value(master_form, "c7GeneralClfion", &d_value)); printf("\n d_value=%s\n",d_value); TC_write_syslog("\n d_value=%s\n",d_value); //二期修改增加标识 if( strcmp(d_value, "C") == 0 || strcmp(d_value, "F") == 0 || strcmp(d_value, "F1") == 0 || strcmp(d_value, "F2") == 0 || strcmp(d_value, "F3") == 0 ) { strcpy(sQty,""); } else { if( strcmp(qty_value,"") == 0) { strcpy(sQty,"1"); } else strcpy(sQty,qty_value); } MEM_free(d_value); } MEM_free(form_list); } } CLEANUP : if( rcode != ITK_ok) { if ( 515001 == rcode || err_line == 80 ){ if ( *value != NULL ) MEM_free( *value ); *value = NULL; *value = (char*)MEM_alloc ( 10 + 1 ); strcpy ( *value, "1" ); EMH_clear_errors( ); rcode = ITK_ok; }else { EMH_ask_error_text (rcode, &err_string); printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); printf ("Function: %s FILE: %s LINE: %d\n", err_function, __FILE__, err_line); MEM_free (err_string); } TC_write_syslog("\n rcode != ITK_ok"); }else{ if ( *value != NULL ) MEM_free( *value ); *value = NULL ; *value = (char*)MEM_alloc ( strlen ( sQty ) + 1 ); strcpy ( *value, sQty ); TC_write_syslog("\n else sQty=%s",sQty); } return rcode; } int SMP_init_user_bomline_props(METHOD_message_t* m, va_list args) { int rcode = ITK_ok; char *err_string,*err_function; int err_line = -1; tag_t type_tag; tag_t pd_tag = NULLTAG; METHOD_id_t method; char typename_cpp[TCTYPE_name_size_c+1]; tag_t lov_tag; tag_t tmp_lov_tag; va_list largs; va_copy( &largs, &args ); type_tag = va_arg( largs, tag_t ); va_end( largs ); ITKCALL( TCTYPE_ask_name( type_tag, typename_cpp ) ); printf("类型=%s \n",typename_cpp); /* ====== add properties for Bomline class types ====== */ /* ---- add superseded runtime property ---- */ ITKCALL( TCTYPE_add_runtime_property( type_tag, "jk8ckckckc",PROP_string,1,&pd_tag ) ); // ///* --- set display name...can also be done in user_property_names.uil --- */ ITKCALL( PROPDESC_set_display_name(pd_tag,"jk8ckckckc") ); /* --- register method to ask value --- */ ITKCALL( METHOD_register_prop_method( (const char*)typename_cpp, "jk8ckckckc", PROP_ask_value_string_msg, SMP_ask_bomline_value , 0 , &method ) ); printf("\n 结束\n"); /* --- register method to set value --- */ //SAFECALL( PROPDESC_set_protection( pd_tag, PROP_write ) ); //SAFECALL( METHOD_register_prop_method( (const char*)typename, "superseded", PROP_set_value_string_msg, SMP_set_bomline_superseded , 0 , &method ) ); CLEANUP: if( rcode != ITK_ok) { EMH_ask_error_text (rcode, &err_string); printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); printf ("Function: FILE: %s LINE: %d\n", __FILE__, err_line); MEM_free (err_string); } return( ITK_ok ); } extern int Run_Time_register_properties( void ) { int rcode = ITK_ok; char *err_string,*err_function; int err_line = -1; USER_prop_init_entry_t user_types_methods[]= { { "BOMLine" , SMP_init_user_bomline_props , NULL } }; int n_types = sizeof(user_types_methods)/sizeof(USER_prop_init_entry_t); printf("n_types=%d \n",n_types); SAFECALL( TCTYPE_register_properties(user_types_methods, n_types )); printf("\n TCTYPE_register_properties\n"); CLEANUP: if( rcode != ITK_ok) { EMH_ask_error_text (rcode, &err_string); printf ("ERROR: %d ERROR MSG: %s.\n", rcode, err_string); printf ("Function: FILE: %s LINE: %d\n", __FILE__, err_line); MEM_free (err_string); } return rcode; } #ifdef __cplusplus } #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include /** * @headerfile standard c & cpp header files */ #include #include #include #include #include #include #include #include using namespace std; /** * @headerfile user's header files */