读写锁rwlock读写锁rwlock
读写锁rwlock读写锁rwlock
(chkmatch)检查或强制pdb与dll匹配
chkmatch [-c ExeFile DebugInfoFile ] |
[-m ExeFile DebugInfoFile]
-c
Check matching between the executable and the debug information file.
-m
Make the executable and the debug information file match.
ExeFile
The name of the executable file.
DebugInfoFile
The name of the debug information file.
GENESIS 2000 DFM PE
The DFM Programming Environment is one of the many unique concepts of the
Genesis 2000 system. Unlike any existing tool, the DFM Programming
Environment (DFMPE) enables any user with elementary programming capability
to expand the functions of the Genesis 2000 system significantly. It allows the user
to add custom features to the system immediately, as and when required, without
having to wait for the R&D department to deliver. These customized features are
not added on as scripts to be interpreted slowly but as fully compiled and
integrated functions of the system. Once installed, the customized features will be
retained with each upgrade of the system with a new version.
The DFMPE concept introduces a novel approach that may require getting used to,
but once achieved, the benefits are numerous.
Among the frequently asked questi
Chapter 1 Overview
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Intended Readers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Organization of this Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Chapter 2 Basic Concepts
Function Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
External Resource File (ERF) - Basic . . . . . . . . . . . . . . . . . . . 19
Action Icon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Help File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Implementation Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A Comprehensive Solution . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
File Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
The ERF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
File Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
The Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Reentry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Bringing It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Chapter 3 Advanced Topics
Implementation of Objects in DFMPE . . . . . . . . . . . . . . . . . . . 34
Layer and List Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Feature Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Shape Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Component Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The Progress Bar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430205.0806 DFM Programming Environment 3
The External Resource File (ERF) - Detailed . . . . . . . . . . . . . 44
THE LAYER FIELD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
LAYER FIELD SYNTAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Local Area Run . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Editing Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Spacing Checks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Negative Layers Opened as Positive . . . . . . . . . . . . . . . . . . . . 62
Chapter 4 Functions
Format of Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
ODB_EDT_CLOSE_LIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
ODB_EDT_GET_JOB_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
ODB_EDT_GET_JOB_STEP_NAME . . . . . . . . . . . . . . . . . . . . . . . . . 66
ODB_EDT_GET_MIN_BRUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
ODB_EDT_GET_STEP_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
ODB_EDT_MESSAGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
ODB_EDT_OPEN_LIC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
ODB_EDT_PROGRESS_FRAME_OPEN . . . . . . . . . . . . . . . . . . . . . . 71
ODB_EDT_PROGRESS_FRAME_CLOSE . . . . . . . . . . . . . . . . . . . . . 72
ODB_EDT_PROGRESS_STEP_ADVANCE . . . . . . . . . . . . . . . . . . . 73
OBD_EDT_PROGRESS_STEP_OPEN . . . . . . . . . . . . . . . . . . . . . . . . 74
ODB_EDT_PROGRESS_STEP_CLOSE . . . . . . . . . . . . . . . . . . . . . . . 75
ODB_EDT_PROGRESS_STEP_RESET . . . . . . . . . . . . . . . . . . . . . . . 76
ODB_EDT_PROGRESS_TITLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
ODB_EDT_REFRESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
ODB_EDT_RUN_LIMITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
ODB_EDT_COMMAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
ODB_EDT_SCRIPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
ODB_EDT_RUN_IN_PROFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
ODB_F_ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
ODB_F_AREA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
ODB_F_CHANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
ODB_F_CONV_STD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
ODB_F_COPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ODB_F_DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
ODB_F_DELETE_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
ODB_F_GET_ATTR_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
ODB_F_GET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
ODB_F_GET_LIMITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
ODB_F_GET_TOUCHING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
ODB_F_GET_SYM_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
ODB_F_GET_SYM_RES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
ODB_F_IS_STANDARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
ODB_F_NF_TO_SHAPE_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970205.0806 DFM Programming Environment 4
ODB_F_RESIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
ODB_F_RESIZE_VERIFY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
ODB_F_RESIZE_BY_XY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
ODB_F_RESIZE_FACTOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
ODB_F_SURROUND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
ODB_F_SET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
ODB_F_SET_FONT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
ODB_F_SET_SYM_RES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
ODB_F_TO_SHAPE_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
ODB_F_VALIDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
ODB_FUNC_EVAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
ODB_FUNC_GET_DOMAIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
ODB_FUNC_LOAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
ODB_EDA_ALL_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
ODB_EDA_CLASSIFY_COMP_SEG . . . . . . . . . . . . . . . . . . . . . . . . 112
ODB_EDA_COMP_DELETE_ATTR . . . . . . . . . . . . . . . . . . . . . . . . 113
ODB_EDA_COMP_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
ODB_EDA_COMP_GET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
ODB_EDA_COMP_GET_TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
ODB_EDA_COMP_SET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
ODB_EDA_COMP_GET_PADS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
ODB_EDA_F_FIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
ODB_EDA_FID_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
ODB_EDA_LYR_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
ODB_EDA_NET_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
ODB_EDA_SUBNET_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
ODB_EDA_TOEP_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
ODB_EDA_TOEP_SHAPE_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
ODB_EDA_TOEP_SIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
ODB_LAYER_CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
ODB_LAYER_DELETE_ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
ODB_LAYER_CLOSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
ODB_LAYER_CONTOURIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
ODB_LAYER_COPPER_AREA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
ODB_LAYER_COPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
ODB_LAYER_COPY_TEMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
ODB_LAYER_COUNT_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
ODB_LAYER_COUNT_NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
ODB_LAYER_COUNT_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
ODB_LAYER_CREATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
ODB_LAYER_CREATE_TEMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
ODB_LAYER_DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
ODB_LAYER_DRILL_THROUGH . . . . . . . . . . . . . . . . . . . . . . . . . 140
ODB_LAYER_DRILLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
ODB_LAYER_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
ODB_LAYER_GET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
ODB_LAYER_WAS_OPENED_POS . . . . . . . . . . . . . . . . . . . . . . . . 1440205.0806 DFM Programming Environment 5
ODB_LAYER_GET_DATUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
ODB_LAYER_GET_PROFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
ODB_LAYER_GET_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
ODB_LAYER_GET_F_EXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
ODB_LAYER_GET_F_AREA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
ODB_LAYER_GET_F_BY_NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
ODB_LAYER_GET_LNAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
ODB_LAYER_GET_NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
ODB_LAYER_GET_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
ODB_LAYER_GET_SHAPE_BY_NFC . . . . . . . . . . . . . . . . . . . . . . 154
ODB_LAYER_GET_WORK_LNAME . . . . . . . . . . . . . . . . . . . . . . . 155
ODB_LAYER_LIMITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
ODB_LAYER_NAME_TO_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
ODB_LAYER_NAME_TO_LIST_POS . . . . . . . . . . . . . . . . . . . . . . . 158
ODB_LAYER_OPEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
ODB_LAYER_OPEN_POS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
ODB_LAYER_PROFILE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
ODB_LAYER_SET_SPAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
ODB_LAYER_QUICK_NEXT_DEL . . . . . . . . . . . . . . . . . . . . . . . . . 163
ODB_LAYER_SELECT_NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
ODB_LAYER_RENAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
ODB_LAYER_SELECT_CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
ODB_LAYER_SET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
ODB_LAYER_CONNECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
ODB_LAYER_SUBPROFILES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
ODB_LAYER_SUBSTITUTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
ODB_LAYER_SYNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
ODB_LAYER_UNDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
ODB_LAYER_UNDO_FETCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
ODB_LAYER_UNDO_GET_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
ODB_LAYER_UNDO_MARK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
ODB_LAYER_UNDO_RESET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
ODB_LAYER_DELETE_SHAPE_LIST . . . . . . . . . . . . . . . . . . . . . . 178
ODB_LAYER_COMPENSATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
ODB_LAYER_GET_USER_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . 180
ODB_RES_ADD_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
ODB_RES_ADD_CATEGORIES . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
ODB_RES_SORT_CATEGORIES . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
ODB_RES_ADD_MEAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
ODB_RES_ADD_MEAS_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
ODB_RES_CALC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
ODB_RES_CATEGORY_EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . 187
ODB_RES_CLASSIFY_LOCATION . . . . . . . . . . . . . . . . . . . . . . . . 188
ODB_RES_CLASSIFY_BY_PROC . . . . . . . . . . . . . . . . . . . . . . . . . . 189
ODB_RES_GET_ATTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
ODB_RES_GET_CATEGORIES . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
ODB_RES_GET_CATEGORY_TITLE . . . . . . . . . . . . . . . . . . . . . . . 1920205.0806 DFM Programming Environment 6
ODB_RES_GET_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
ODB_RES_GET_MEAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
ODB_RES_GET_MEAS_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
ODB_RES_GET_RANGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
ODB_RES_REPORT_ACTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
ODB_RES_REPORT_ALARMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
ODB_RES_REPORT_HDR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
ODB_RES_REPORT_HIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
ODB_RES_REPORT_TAG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
ODB_RES_REPORT_TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
ODB_RES_SET_CAT_LIMITS_SENSITIVE . . . . . . . . . . . . . . . . . . 206
ODB_RES_SET_DISP_LYRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
ODB_RES_SET_MEAS_SCALAR . . . . . . . . . . . . . . . . . . . . . . . . . . 208
ODB_RES_SET_MEAS_SCALAR_SQR . . . . . . . . . . . . . . . . . . . . . 209
ODB_RES_SET_MEAS_ID_SCALAR . . . . . . . . . . . . . . . . . . . . . . . 210
ODB_RES_SET_MEAS_ID_TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . 212
ODB_RES_SET_SUB_CATEGORY . . . . . . . . . . . . . . . . . . . . . . . . . 214
ODB_RES_TYPICAL_SIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
ODB_SETUP_GET_ERF_UNITS . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
ODB_SETUP_GET_ERF_VAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
ODB_SETUP_GET_ERF_VAR2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
ODB_SETUP_GET_ERF_VAR1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
ODB_SETUP_CHECK_ERF_VAR . . . . . . . . . . . . . . . . . . . . . . . . . . 220
ODB_SETUP_GET_ERF_VAR_NUMBER . . . . . . . . . . . . . . . . . . . 221
ODB_SETUP_GET_ERF_VAR_PIXELS . . . . . . . . . . . . . . . . . . . . . 222
ODB_SETUP_GET_PARAMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
ODB_SETUP_GET_PARAM_OPTION . . . . . . . . . . . . . . . . . . . . . . 224
ODB_SETUP_SET_MODIFY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
ODB_SHAPE_AIR_GAP_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . 226
ODB_SHAPE_AIR_GAP_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
ODB_SHAPE_AREA_DIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
ODB_SHAPE_AREA_INTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
ODB_SHAPE_AREA_UNION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
ODB_SHAPE_AREA_UNION_TOL . . . . . . . . . . . . . . . . . . . . . . . . . 231
ODB_SHAPE_AREA_RECT_COVER . . . . . . . . . . . . . . . . . . . . . . . 232
ODB_SHAPE_BOTTLENECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
ODB_SHAPE_CALC_AREA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
ODB_SHAPE_CENTER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
ODB_SHAPE_CENTER_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
ODB_SHAPE_CLOSE_TRI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
ODB_SHAPE_COPPER_AREA . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
ODB_SHAPE_COUNT_CONT_NREC . . . . . . . . . . . . . . . . . . . . . . . 239
ODB_SHAPE_COVER_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
ODB_SHAPE_COVER_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
ODB_SHAPE_COVER_LIST_MAX . . . . . . . . . . . . . . . . . . . . . . . . . 243
ODB_SHAPE_DIST_MAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
ODB_SHAPE_DIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2450205.0806 DFM Programming Environment 7
ODB_SHAPE_DIST_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
ODB_SHAPE_DIST_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
ODB_SHAPE_END_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
ODB_SHAPE_LINE_END_SEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
ODB_SHAPE_EXPAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
ODB_SHAPE_EXT_POINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
ODB_SHAPE_FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
ODB_SHAPE_GET_HOLES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
ODB_SHAPE_GET_ISLAND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
ODB_SHAPE_GET_CONT_EDGES . . . . . . . . . . . . . . . . . . . . . . . . . 255
ODB_SHAPE_INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
ODB_SHAPE_LEFT_SLIVER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
ODB_SHAPE_LIMITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
ODB_SHAPE_LIMITS_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
ODB_SHAPE_MIDPT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
ODB_SHAPE_LIST_NEAR_LAYER . . . . . . . . . . . . . . . . . . . . . . . . 261
ODB_SHAPE_MOVE_CONT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
ODB_SHAPE_MOVE_SEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
ODB_SHAPE_NEAR_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
ODB_SHAPE_NEAR_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
ODB_SHAPE_NEAR_OUTLINE_LAYER . . . . . . . . . . . . . . . . . . . . 266
ODB_SHAPE_PAR_DIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
ODB_SHAPE_POLYS2CONT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
ODB_SHAPE_RESIZE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
ODB_SHAPE_RESIZE_CONT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
ODB_SHAPE_RESIZE_IDENTICAL . . . . . . . . . . . . . . . . . . . . . . . . 271
ODB_SHAPE_SIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
ODB_SHAPE_SIZE_LINE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
ODB_SHAPE_SIZE_PAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
ODB_SHAPE_SORT_RECTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
ODB_SHAPE_SORT_RECTS_2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
ODB_SHAPE_SKELETON . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
ODB_SHAPE_TANGENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
ODB_SHAPE_TOUCH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
ODB_SHAPE_TOUCH_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
ODB_SHAPE_TOUCH_LIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
ODB_SHAPE_TRY_PAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
ODB_SHAPE_LIST2CHULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
ODB_SHAPE_LIST2CONT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
ODB_SYMBOL_CREATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
ODB_SYMBOL_GET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
ODB_SYMBOL_VALIDATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
ODB_SYMBOL_F_ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
ODB_SYMBOL_GET_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
ODB_SYMBOL_CHANGE_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . 291
ODB_SYMBOL_GET_RECT_SIZES . . . . . . . . . . . . . . . . . . . . . . . . 292
ODB_SYMBOL_GET_W_H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2930205.0806 DFM Programming Environment 8
ODB_SYMBOL_GET_RESOURCE . . . . . . . . . . . . . . . . . . . . . . . . . 294
ODB_SYMBOL_GET_SMD_PARAMS . . . . . . . . . . . . . . . . . . . . . . 295
ODB_SYMBOL_GET_SMD_PARAMS_ROT . . . . . . . . . . . . . . . . . 296
ODB_SYMBOL_GET_THERMAL_PARAM . . . . . . . . . . . . . . . . . . 297
ODB_SYMBOL_GET_DONUT_PARAMS . . . . . . . . . . . . . . . . . . . 299
ODB_SYMBOL_FILL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
ODB_SYMBOL_BUILD_RECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
ODB_SYMBOL_BUILD_SMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
ODB_SYMBOL_BUILD_SMD_ROT . . . . . . . . . . . . . . . . . . . . . . . . 303
ODB_SYMBOL_BUILD_THERMAL . . . . . . . . . . . . . . . . . . . . . . . . 304
ODB_SYMBOL_BUILD_DONUT . . . . . . . . . . . . . . . . . . . . . . . . . . 305
ODB_UTILS_BELL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
ODB_UTILS_CMP_W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
ODB_UTILS_GET_CFG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
ODB_UTILS_GET_CONT_OP_ACCURACY . . . . . . . . . . . . . . . . . 309
ODB_UTILS_SET_CONT_OP_ACCURACY . . . . . . . . . . . . . . . . . 310
ODB_UTILS_GET_RESOURCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
ODB_UTILS_UNITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
ODB_UTILS_SORT_TCREATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
ODB_UTILS_SORT_TDESTROY . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
ODB_UTILS_SORT_TADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
ODB_UTILS_SORT_TFIND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Chapter 5 ODB_LIST - Basic
ODB_LIST_CLEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
ODB_LIST_CREATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
ODB_LIST_CREATE_2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
ODB_LIST_DESTORY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
ODB_LIST_COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
ODB_LIST_REMOVE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
ODB_LIST_ADD_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
ODB_LIST_GET_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
ODB_LIST_CHANGE_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
ODB_LIST_ADD_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
ODB_LIST_GET_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
ODB_LIST_CHANGE_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
ODB_LIST_ADD_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
ODB_LIST_GET_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
ODB_LIST_CHANGE_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
ODB_LIST_ADD_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
ODB_LIST_GET_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
ODB_LIST_CHANGE_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
ODB_LIST_ADD_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
ODB_LIST_GET_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
ODB_LIST_CHANGE_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . 3380205.0806 DFM Programming Environment 9
ODB_LIST_ADD_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
ODB_LIST_GET_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
ODB_LIST_CHANGE_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Chapter 6 ODB_LIST - Advanced
ODB_LIST_COUNT_DELETED . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
ODB_LIST_FIRST_SERIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
ODB_LIST_LAST_SERIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
ODB_LIST_SWAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
ODB_LIST_COPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
ODB_LIST_CONCATENATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
ODB_LIST_CONDENSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
ODB_LIST_REVERSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
ODB_LIST_MINUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
ODB_LIST_MAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
ODB_LIST_MAP_ARG1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
ODB_LIST_INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
ODB_LIST_SORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
ODB_LIST_TRANSFORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
ODB_LIST_FIRST_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
ODB_LIST_LAST_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
ODB_LIST_MAX_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
ODB_LIST_MIN_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
ODB_LIST_MAX_SERIAL_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . 367
ODB_LIST_MIN_SERIAL_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . 368
ODB_LIST_MAX_ARG1_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . 369
ODB_LIST_MIN_ARG1_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
ODB_LIST_MAX_SERIAL_ARG1_SHAPE . . . . . . . . . . . . . . . . . . 371
ODB_LIST_MIN_SERIAL_ARG1_SHAPE . . . . . . . . . . . . . . . . . . . 372
ODB_LIST_MINUS_SHAPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
ODB_LIST_FIRST_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
ODB_LIST_LAST_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
ODB_LIST_MAX_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
ODB_LIST_MIN_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
ODB_LIST_MAX_SERIAL_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
ODB_LIST_MIN_SERIAL_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
ODB_LIST_MAX_ARG1_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
ODB_LIST_MIN_ARG1_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
ODB_LIST_MAX_SERIAL_ARG1_F . . . . . . . . . . . . . . . . . . . . . . . . 383
ODB_LIST_MIN_SERIAL_ARG1_F . . . . . . . . . . . . . . . . . . . . . . . . 384
ODB_LIST_MINUS_F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
ODB_LIST_FIRST_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
ODB_LIST_LAST_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
ODB_LIST_MAX_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
ODB_LIST_MIN_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3900205.0806 DFM Programming Environment 10
ODB_LIST_MAX_SERIAL_NAME . . . . . . . . . . . . . . . . . . . . . . . . . 391
ODB_LIST_MIN_SERIAL_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . 392
ODB_LIST_MAX_ARG1_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
ODB_LIST_MIN_ARG1_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
ODB_LIST_MAX_SERIAL_ARG1_NAME . . . . . . . . . . . . . . . . . . . 395
ODB_LIST_MIN_SERIAL_ARG1_NAME . . . . . . . . . . . . . . . . . . . . 396
ODB_LIST_MINUS_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
ODB_LIST_FIRST_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
ODB_LIST_LAST_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
ODB_LIST_MAX_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
ODB_LIST_MIN_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
ODB_LIST_MAX_SERIAL_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
ODB_LIST_MIN_SERIAL_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
ODB_LIST_MAX_ARG1_ INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
ODB_LIST_MIN_ARG1_ INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
ODB_LIST_MAX_SERIAL_ARG1_INT . . . . . . . . . . . . . . . . . . . . . 407
ODB_LIST_MIN_SERIAL_ARG1_INT . . . . . . . . . . . . . . . . . . . . . . 408
ODB_LIST_MINUS_INT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
ODB_LIST_FIRST_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
ODB_LIST_LAST_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
ODB_LIST_MAX_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
ODB_LIST_MIN_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
ODB_LIST_MAX_SERIAL_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . 415
ODB_LIST_MIN_SERIAL_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . 416
ODB_LIST_MAX_ARG1_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . 417
ODB_LIST_MIN_ARG1_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . 418
ODB_LIST_MAX_SERIAL_ARG1_DOUBLE . . . . . . . . . . . . . . . . . 419
ODB_LIST_MIN_SERIAL_ARG1_DOUBLE . . . . . . . . . . . . . . . . . 420
ODB_LIST_MINUS_DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
ODB_LIST_FIRST_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
ODB_LIST_LAST_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
ODB_LIST_MAX_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
ODB_LIST_MIN_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
ODB_LIST_MAX_SERIAL_LAYER . . . . . . . . . . . . . . . . . . . . . . . . 427
ODB_LIST_MIN_SERIAL_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . 428
ODB_LIST_MAX_ARG1_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . 429
ODB_LIST_MIN_ARG1_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . 430
ODB_LIST_MAX_SERIAL_ARG1_LAYER . . . . . . . . . . . . . . . . . . 431
ODB_LIST_MIN_SERIAL_ARG1_LAYER . . . . . . . . . . . . . . . . . . . 432
ODB_LIST_MINUS_LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
Chapter 7 Macros
MAX(X,Y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
MIN(X,Y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
SGN(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4350205.0806 DFM Programming Environment 11
ABS(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
INT(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
DEG(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
RAD(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
LENGTH(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
I2P(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
P2I(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
MIL2P(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
P2MIL(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
MM2P(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
P2MM(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
MIC2P(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
P2MIC(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
SWAP(A,B,TYPE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
ODB_RETURN_OK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
ODB_RETURN_STOPPED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
ODB_RETURN_ERR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
ODB_ASSERT(X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
STATUS_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
ODB_M_IS_DESC_NULL(OBJ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
ODB_MALLOC(SIZE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
ODB_CALLOC(NELEM,SIZE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
ODB_FREE(P) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
ODB_REALLOC(P,SIZE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
ODB_COND_FREE(P) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
ODB_M_F_COPY(DEST_F, SOURCE_F) . . . . . . . . . . . . . . . . . . . . . . . 440
ODB_M_F_TO_1_SHAPE(F, SHAPE, SUCCESS) . . . . . . . . . . . . . . . . . 441
ODB_M_F_NF_TO_1_SHAPE(NF, LAYER, SHAPE, SUCCESS) . . . . . . 441
ODB_M_IS_SHAPE_POINT(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . . 441
ODB_M_IS_SHAPE_SEG(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
ODB_M_IS_SHAPE_CURVE(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . 442
ODB_M_IS_SHAPE_CIRCLE(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . 442
ODB_M_IS_SHAPE_SQUARE(SHAPE) . . . . . . . . . . . . . . . . . . . . . . 442
ODB_M_IS_SHAPE_RECT(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . . 442
ODB_M_IS_SHAPE_LINE(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . . . 442
ODB_M_IS_SHAPE_ARC(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . . . 443
ODB_M_IS_SHAPE_CONT(SHAPE) . . . . . . . . . . . . . . . . . . . . . . . . . 443
ODB_M_SHAPE_COPY(DEST, SOURCE) . . . . . . . . . . . . . . . . . . . . . . 443
ODB_M_SHAPE_FREE(S1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
ODB_M_OBJ_EQ(O1, O2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
ODB_M_POINT_EQ(S1, S2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
ODB_M_POINT_COPY(P_DEST, P_SOURCE) . . . . . . . . . . . . . . . . . . 444
ODB_M_POINT_CREATE(X, Y, P_DEST) . . . . . . . . . . . . . . . . . . . . . 4440205.0806 DFM Programming Environment 12
Chapter 8 Literals
Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Literal List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
Alphabetic List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Appendix A Common Examples
The External Resource File (ERF) . . . . . . . . . . . . . . . . . . . . . 467
Sample Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
Makefile Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
Appendix B Frequently Asked Questions
Appendix C Error Messages
Appendix D System Administrator Notes
Debugging Shared Library DLLs . . . . . . . . . . . . . . . . . . . . . . 487
SPARCWORKS DEBUGGER: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
DEBUGGING UNDER SOLARIS 2.4 AND GDB 4.16 . . . . . . . . . . . . . . . . . 487
BUILDING DEBUGGABLE SHARED LIBRARIES UNDER SOLARIS WITH “GCC”
48
深入实践Boost Boost程序库开发的94个秘笈
Boost库是由专业人员开发,在多个平台和处理器架构上测试,并适用于广泛任务的可靠解决方案。本书将带你踏上简化应用程序开发过程的旅程,引导你更快地编写完美的应用程序。
《深入实践Boost:Boost程序库开发的94个秘笈》详细阐述多线程、网络编程、元编程和泛型编程,并探讨如何只编写一次程序,就能在Linux、Windows、Mac OS和Android操作系统中使用。书中汇集Boost库开发者创建的许多清晰、实用的秘笈,循序渐进地引导读者了解并充分利用Boost和C++的真正优势,以及一些现成可用的解决方案,快速开发高品质、可移植的应用程序。
《深入实践Boost:Boost程序库开发的94个秘笈》主要内容:
涵盖日常使用的新数据类型、图形处理的基础知识,以及一些编程技巧。
讨论如何使用智能指针管理资源,根除内存泄漏问题,以及如何使用Boost库执行与多线程和常见的字符串相关的任务。
讲解如何将处理、计算和相互作用拆分为仿函数(任务)并且独立地完成这些任务。
探讨用于检测编译器、平台和Boost功能的各种辅助宏。
在C++03中使用精选的C++11特性。
目录
译者序
前言
第1章 开始编写应用程序 1
秘笈1 获取配置选项 1
秘笈2 在容器/变量中存储任意值 5
秘笈3 在变量/容器中存储多个选择类型 7
秘笈4 使用更安全的方式处理存储多个选择类型的容器 8
秘笈5 返回一个值或在没有值的地方返回一个标志 12
秘笈6 从函数返回数组 14
秘笈7 将多个值结合成一个值 16
秘笈8 重新排列函数的参数 18
秘笈9 绑定一个值作为函数参数 21
秘笈10 使用C++11移动仿真 23
秘笈11 制作一个不可复制的类 26
秘笈12 制作一个不可复制但可移动的类 28
第2章 数据转换 32
秘笈13 将字符串转换为数值 32
秘笈14 将数值转换为字符串 34
秘笈15 将数值转换为数值 36
秘笈16 用户定义类型与字符串的相互转换 39
秘笈17 强制转换多态对象 41
秘笈18 解析简单的输入 43
秘笈19 解析输入 46
第3章 资源管理 51
秘笈20 管理作用域内的类指针 51
秘笈21 跨方法使用的类指针的引用计数 53
秘笈22 管理作用域内的数组指针 55
秘笈23 跨方法使用的数组指针的引用计数 56
秘笈24 在变量中存储任意函数化对象 59
秘笈25 在变量中传递函数指针 61
秘笈26 在变量中传递C++11中的lambda函数 62
秘笈27 指针的容器 63
秘笈28 在退出作用域时做一些事 66
秘笈29 用派生类的成员初始化基类 67
第4章 编译时技巧 71
秘笈30 在编译时检查大小 71
秘笈31 在整数类型中启用模板函数 75
秘笈32 在实数类型中禁用模板函数 77
秘笈33 从数值创建一个类型 80
秘笈34 实现类型特征 82
秘笈35 为模板参数选择最佳操作符 83
秘笈36 在C++03中获取一个表达式的类型 86
第5章 多线程 89
秘笈37 创建一个执行线程 89
秘笈38 对公共资源的同步访问 92
秘笈39 利用原子性快速访问公共资源 96
秘笈40 创建work_queue类 98
秘笈41 多读者单写者锁 102
秘笈42 创建对每个线程都是独占的变量 104
秘笈43 中断线程 106
秘笈44 操纵一组线程 108
第6章 处理任务 109
秘笈45 注册任务用于处理任意数据类型 109
秘笈46 制作定时器并把定时器事件作为任务处理 113
秘笈47 将网络通信作为一个任务 116
秘笈48 接受传入的连接 121
秘笈49 并行执行不同的任务 125
秘笈50 输送任务处理 127
秘笈51 制作一个非阻塞障碍 131
秘笈52 存储一个异常并用它制作任务 135
秘笈53 作为任务获取和处理系统信号 138
第7章 处理字符串 142
秘笈54 改变大小写及不区分大小写的比较 142
秘笈55 使用正则表达式匹配字符串 144
秘笈56 使用正则表达式查找和替换字符串 147
秘笈57 使用安全的类似printf的函数格式化字符串 150
秘笈58 替换和删除字符串 152
秘笈59 用两个迭代器表示字符串 153
秘笈60 使用string类型的引用 156
第8章 元编程 160
秘笈61 使用“类型向量”类型 160
秘笈62 操作类型向量 164
秘笈63 在编译时获取一个函数的结果类型 168
秘笈64 制作高阶元函数 170
秘笈65 懒惰地对元函数求值 172
秘笈66 将所有元组元素转换为字符串 175
秘笈67 拆分元组 178
第9章 容器 182
秘笈68 以超快速的方式比较字符串 182
秘笈69 使用无序集合和映射 186
秘笈70 制作值也是一个键的映射 189
秘笈71 使用多索引容器 192
秘笈72 从单链表和内存池获得好处 197
秘笈73 使用平面关联式容器 200
第10章 收集平台和编译器
信息 204
秘笈74 检测int128支持 204
秘笈75 检测RTTI支持 206
秘笈76 使用C++11外部模板加快编译速度 208
秘笈77 使用更简单的方法编写元函数 209
秘笈78 在C++11中减少代码量和提高用户定义类型的性能 211
秘笈79 导入和导出函数和类的可移植方式 213
秘笈80 检测Boost版本和最新的功能 215
第11章 与系统打交道 218
秘笈81 列出目录中的文件 218
秘笈82 创建及删除文件和目录 220
秘笈83 将数据从一个进程快速传递到另一个进程 222
秘笈84 同步进程间通信 225
秘笈85 在共享内存中使用指针 228
秘笈86 读取文件的最快方式 229
秘笈87 协程——保存状态并推迟执行 232
第12章 揭开冰山一角 235
秘笈88 使用图形 235
秘笈89 可视化图形 239
秘笈90 使用真随机数发生器 241
秘笈91 使用可移植的数学函数 243
秘笈92 编写测试用例 244
秘笈93 将多个测试用例结合到一个测试模块 246
秘笈94 处理图像 248
boost 中文文档api
boost库中文帮助文档.
1. Boost.Accumulators
Preface 序言
User's Guide 用户指南
Acknowledgements 鸣谢
Reference 参考手册
2. Boost.Any
Introduction 简介
Examples 例子
Reference 参考手册
Acknowledgements 鸣谢
3. Boost.Array
Introduction 简介
Reference 参考手册
Design Rationale 设计原理
For more information... 更多信息...
Acknowledgements 鸣谢
4. Boost.Concept_Check
Concept reference 概念参考
5. Boost.Date_Time
Conceptual 概念说明
General Usage Examples 常见用例
Gregorian 格里历
Posix Time Posix 时间
Local Time 本地时间
Date Time Input/Output 日期时间的输入/输出
Serialization 序列化
Details 细节
Examples 例子
Library Reference 库参考手册
6. Boost.Foreach
Introduction 简介
Extensibility 可扩展性
Portability 可移植性
Pitfalls 缺陷
History and Acknowledgements 历史与鸣谢
7. Boost.Function
Introduction 简介
History & Compatibility Notes 历史与兼容性说明
Tutorial 教程
Reference 参考手册
Frequently Asked Questions 常见问题
Miscellaneous Notes 杂项说明
Testsuite 测试套件
8. Boost.Functional/Hash
Introduction 简介
Tutorial 教程
Extending boost::hash for a custom data type 为定制的数据类型扩展 boost::hash
Combining hash values 组合散列值
Portability 可移植性
Disabling The Extensions 禁止扩展
Change Log 变更历史
Reference 参考手册
Links 链接
Acknowledgements 鸣谢
9. Boost.Interprocess
Introduction 简介
Quick Guide for the Impatient 快速入门
Some basic explanations 基本说明
Sharing memory between processes 进程间的共享内存
Mapping Address Independent Pointer: offset_ptr 映射地址无关的指针:offset_ptr
Synchronization mechanisms 同步机制
Managed Memory Segments 管理内存段
Allocators, containers and memory allocation algorithms 分配器、容器和内存分配算法
Direct iostream formatting: vectorstream and bufferstream 直接 iostream 格式化:vectorstream 和 bufferstream
Ownership smart pointers 智能指针的所有权
Architecture and internals 体系结构与内部细节
Customizing Boost.Interprocess 定制 Boost.Interprocess
Acknowledgements, notes and links 鸣谢、说明与链接
Boost.Interprocess Reference 参考手册
10. Boost.Intrusive
Introduction 简介
Intrusive and non-intrusive containers 介入式与非介入式容器
How to use Boost.Intrusive 如何使用 Boost.Intrusive
When to use? 何时使用?
Concept summary 概念摘要
Presenting Boost.Intrusive containers 介绍 Boost.Intrusive 容器
Safe hooks 安全的挂钩
Auto-unlink hooks 自动卸载的挂钩
Intrusive singly linked list: slist 介入式的单链表:slist
Intrusive doubly linked list: list 介式式的双链表:list
Intrusive associative containers: set, multiset, rbtree 介入式的关联式容器:set, multiset, rbtree
Semi-Intrusive unordered associative containers: unordered_set, unordered_multiset 半介入式的关联式容器:unordered_set, unordered_multiset
Intrusive splay tree based associative containers: splay_set, splay_multiset and , splay_tree 介入式 splay 树:splay_set, splay_multiset and , splay_tree
Intrusive avl tree based associative containers: avl_set, avl_multiset and avltree 介入式 avl 树:avl_set, avl_multiset and avltree
Intrusive scapegoat tree based associative containers: sg_set, sg_multiset and sgtree 介入式 scapegoat 树:sg_set, sg_multiset and sgtree
Advanced lookup and insertion functions for associative containers 关联式容器的高级查找和插入函数
Erasing and disposing values from Boost.Intrusive containers 从 Boost.Intrusive 容器中删除和处理值
Cloning Boost.Intrusive containers 克隆 Boost.Intrusive 容器
Using smart pointers with Boost.Intrusive containers 将智能指针用于 Boost.Intrusive 容器
Obtaining iterators from values 从值获取迭代器
Any Hooks: A single hook for any Intrusive container 任意挂钩:用于任意介入式容器的单个挂钩
Concepts explained 概念说明
Node algorithms with custom NodeTraits 带定制NodeTraits 的节点算法
Containers with custom ValueTraits 带定制 ValueTraits 的容器
Thread safety guarantees 线程安全性保证
Obtaining the same types and reducing symbol length 获得相同的类型和缩短符号长度
Design Notes 设计说明
Performance 性能
Release Notes 发布说明
Tested compilers 已测试的编译器
References 参考手册
Acknowledgements 鸣谢
Reference 参考
License notices 许可证通告
11. Boost.Lambda
In a nutshell 简单说明
Getting Started 入门
Introduction 简介
Using the library 使用本库
Lambda expressions in details Lambda表达式的详细说明
Extending return type deduction system 扩展返回类型推导系统
Practical considerations 实际考虑
Relation to other Boost libraries 与其它 Boost 库的关系
Contributors 贡献者
Rationale for some of the design decisions 某些设计决议的原理
Bibliography 参考书目
12. Boost.MPI
Introduction 简介
Getting started 入门
Tutorial 教程
Reference 参考手册
Python Bindings 与 Python 的绑定
Design Philosophy 设计原理
Performance Evaluation 性能评估
Revision History 修订历史
Acknowledgments 鸣谢
13. Boost.Program_options
Introduction 简介
Tutorial 教程
Library Overview 库的概览
How To 如何使用
Design Discussion 设计讨论
Acknowledgements 鸣谢
Reference 参考手册
14. Boost.PropertyTree
What is Property Tree? 属性树是什么?
Five Minute Tutorial 五分钟入门
Property Tree as a Container 作为容器的属性树
Property Tree Synopsis 属性树概要
How to Populate a Property Tree 如何填充属性树
How to Access Data in a Property Tree 如何访问属性树中的数据
Appendices 附录
Reference 参考手册
15. Boost.Proto
Preface 序言
Users' Guide 用户指南
Reference 参考手册
Appendices 附录
16. Boost.Ref
Introduction 简介
Reference 参考手册
Acknowledgements 鸣谢
17. Boost.Signals
Introduction 简介
Tutorial 教程
Reference 参考手册
Frequently Asked Questions 常见问题
Design Overview 设计概览
Design Rationale 设计原理
Testsuite 测试套件
18. Boost.Signals2
Introduction 简介
Tutorial 教程
Example programs 示例程序
Reference 参考手册
Thread-Safety 线程安全性
Frequently Asked Questions 常见问题
Design Rationale 设计原理
Signals2 API Changes API的变化
Testsuite 测试套件
19. Boost.StaticAssert
Overview and Tutorial 概览与教程
How it works 如何工作
Test Programs 测试程序
20. Boost String Algorithms Library
Introduction 简介
Release Notes 发布说明
Usage 用法
Quick Reference 快速参考
Design Topics 设计要点
Concepts 概念
Reference 参考手册
Rationale原理
Environment 环境
Credits 鸣谢
21. Thread
Overview 概览
Changes since boost 1.35 从 boost 1.35 后的改变
Thread Management 线程管理
Synchronization 同步
Thread Local Storage 线程局部存储
Date and Time Requirements 日期与时间要求
Acknowledgments 鸣谢
22. Boost.TR1
Introduction 简介
Usage 用法
Configuration 配置
TR1 By Subject 分类
TR1 By Header 头文件
Implementation 实现
Testing 测试
23. Boost.Tribool
Introduction 简介
Tutorial 教程
Reference 参考手册
Testsuite 测试套件
24. Boost.Typeof
Motivation 动机
Tutorial 教程
Reference 参考手册
Other considerations and tips 其它考虑和提示
Contributed By: 贡献者
Acknowledgements 鸣谢
25. Boost.Units 1.0.0
Introduction 简介
Quick Start 快速入门
Dimensional Analysis 量纲分析
Units 单位
Quantities 数量
Examples 例子
Utilities 工具
Reference 参考手册
Installation 安装
FAQ 常见问题
Acknowledgements 鸣谢
Help Wanted 所需帮助
Release Notes 发布说明
TODO 待办事项
26. Boost.Unordered
Introduction 简介
The Data Structure 数据结构
Equality Predicates and Hash Functions 等同性谓词与散列函数
Comparison with Associative Containers 与关联式容器的比较
Implementation Rationale 实现原理
Change Log 变更历史
Reference 参考手册
Bibliography 参考书目
27. Boost.Variant
Introduction 简介
Tutorial 教程
Reference 参考手册
Design Overview 设计概览
Miscellaneous Notes 杂项说明
References 参考
28. Boost.Xpressive
Preface 序言
User's Guide 用户指南
Reference 参考手册
Acknowledgments 鸣谢
Appendices 附录
nedmalloc-v1.10-beta3
nedmalloc是一个跨平台的高性能多线程内存分配库 很多库都使用它 例如:OGRE Windows XP Linux 2 4 series FreeBSD 6 series Mac OS X 10 4 or earlier
方法:
首先 安装python2 7;
然后安装scons
http: www scons org
将Python27的安装目录加到path当中;
由于scons依赖Python 所以安装后 需要把xx Python27 Scripts也加到path当中 这样控制台当中才能识别scons命令;
运行nedmalloc加压目录下的 MakeMSVCProjs bat脚本 会自动构建vc工程出来;
注意:
构建工程前 需要添加系统环境变量:LIB INCLUDE;
我的是:
LIB C: Program Files x86 Microsoft Visual Studio 10 0 VC lib;C: Program Files x86 Microsoft SDKs Windows v7 0A Lib;
INLUCDE C: Program Files x86 Microsoft SDKs Windows v7 0A Include;C: Program Files x86 Microsoft Visual Studio 10 0 VC include">nedmalloc是一个跨平台的高性能多线程内存分配库 很多库都使用它 例如:OGRE Windows XP Linux 2 4 series FreeBSD 6 series Mac OS X 10 4 or earlier
方法:
首先 安装python2 7;
然后安装scons
http: www scons org
将Python27的安装目录加到path当中 [更多]
wxWidgets中文手册(pdf)
wxWidgets是一个开源的跨平台的C++构架库(framework)(主页http://www.widgets.org),它可以提供GUI(图形用户界面)和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。一个支持OS/2的版本正在开发中。
wxWidgets在最开始是由爱丁堡(Edinburgh)大学的人工智能应用学院开发的,主要是内部使用,而在1992年第一次公布。 2.x版本做了很大程度的改良,并且由Julian Smart, Robert Roebling, Vadim Zeitlin, Vaclav Slavik和更多其他的人所编写和维护。 wxWidgets的主体是由C++构建的,但你并不是必需通过C++才能使用wxWidgets.wxWidgets拥有许多其它语言的绑定(binding),使你在用其它语言编写程序的时候也可以使用wxWidgets. * wxPython a Python binding, * wxPerl a Perl binding, * wxBasic a Basic binding, * wxLua a Lua binding, * wxJavaScript a JavaScript binding, * wxJava a Java binding by Steve Perkins, * wx4j a Java binding by Dave Dribin, * wxRuby a Ruby binding, * wxEiffel an Eiffel binding, * wxHaskell a Haskell binding, * wx.NET a C# binding for .NET/Mono, * wxEuphoria a Euphoria binding, * wxAda the start of an Ada binding for wxWidgets. wxwidgets是一个 c++编写的用来提供gui开发的框架。它包含一个可以支持现今几乎所有操作系统(Version 2 currently supports all desktop versions of MS Windows, Unix with GTK+, Unix with Motif, and MacOS. An OS/2 port is in progress.)的GUI库和其他一些很有用的工具,提供了类似MFC的功能。而且,特别要说一下,这个c++lib还的新版本还提供了对掌上电脑的支持。当然,说到这里很多人会想到java队多系统的支持,其实这是不一样的,java的跨平台是建立在“中间代码”的基础上的,就是说需要在目标平台上安装java解释器;但是wxwidgets是c++库,经过编译后,他提供的是native级的机器码,在gui编程方面,这可是意味着很大的不同! 那么wxwidgets有什么特别之处呢?比起其他的跨平台gui库,有什么好处呢? 1、(不得不放在第一位的)就是他无论对于个人还是对于商业应用都[font color=#ff0000]免费[/font]! ——它的主体框架的授权协议支持商业免费应用,其外围功能库中很多也是lgpl授权的,这无疑对于我等“0资本”的人来说是天大的好事。不同于gt之类的跨平台gui库。
2、 他是跨平台的gui库,支持的操作系统很全面,甚至支持pda(说不定过一段时间他都能够支持symbian了)。 —— 此跨平台非彼跨平台,它虽然不像java那样是“全面”的,而仅仅是gui库,但是gui是计算机编程中,最为麻烦、耗费时间、容易出现bug的部分,特别当你想要自己的软件运行在多个操作系统上的时候,开发和维护的难度让人难以想象。其实c++也是支持“跨平台”的,因为c++可以在任何平台上编译运行,之所以没几个人说他是跨平台的,主要问题就出在变量长度和各操作系统的gui(这里的“界面”我指得是很广义的)上,如果解决了gui的问题,基本上就解决了c++的“跨平台”问题——至少不用为每种平台都维护一份源代码了。 3、 wxwidgets提供的gui是大量使用宏的,这就意味着它是在尽可能的使用目标系统native的gui样式。 ——你可以访问wxwidgets网站,看看那些开发的软件的截图,全是系统native级别的。如果你开发了一个xp系统的软件的话,你的软件会仍然以“xp专有的‘小贱人’级别”的面貌展现在你面前。 4、 它支持的编译器也很多,而且borland也曾声明将在c++builderx2里边提供对wxidgets的支持——预览版都出来了。 ——其实我就是看到borland在c++不景气的时候,这么看重这个东东,甚至用它来做“王牌”,才开始注意到他的。当然,反过来,也正是borland的支持,才使他活力大发的。 5、 自然,有牛X支持,而且是开源的,wxwidgets一直都在快速稳健的开发中,其周边工具也越来越多。 —— 随着m$开始全力支持他的.net,c++成了“没落”的语言,但是不可否认,c++还是有很多用武之地的,所以根本不可能真正没落。没有了超牛X的支持,地球人自然开始寻求新的发展方式,wxwidgets这种开源免费,且允许商业应用的好东东,自然会被人们所重视。 当然,wxwidgets也有一些不足,比如官方文档不全(至少我觉得个官方的help远远不够我的菜鸟需求,大部分都是网络上零散的教程),特别是没有源代码的开发速度快;没有强大全面的rad工具;还没有形成很浓的产业气候,等等。但是,个人觉得它的好处绝对大于它的缺点,而且很有发展前途。
KeUserModeCallback
KeUserModeCallback
zlib-1.2.8 静态库(VS2008用)
编译默认的库老是显示 无法解析的 _uncompress 之类 把代码重新新建工程编译了一下就解决了
编译环境: VS2008
ZLIB版本: 1.2.8
把头文件放在include目录 lib放在lib目录
使用:
#include <zlib.h>
#pragma comment(lib,"zlib.lib")
vc++ 6.0 补丁
vc++ 6.0 补丁,有它就不会编译时假死。
openssl 收发邮件
支持 smtp,pop3,imap
超好用的十六进制批量搜索软件
最近搞游戏汉化,需要进行批量的16进制字节搜索,在Google上爬了很久,都没有找到合适的软件,都是功能太简单或者效果不好。好不容易找到一个可以用的,号称极速搜索的软件,但是似乎软件还有些问题,程序容易崩溃,特别是当搜索的内容过多的时候,于是就打算自己做一个,随便也试试C#的效率。
结果C#效率不是传说中的那么低嘛,呵呵,而且这个搜索器还有优化的空间,在比较字节的算法上应该还可以优化,只是暂时还没有想到好的算法。
源代码会在GitHub上共享,用户名就是Title上那个。
Notepad++ 转16进制插件
notepad++ 中转十六进制的插件 只要复制到Notepad++ 下的plugins目录就能下载 之后再Notepad++中可以自定义一下快捷键 运行--> 管理快捷键
300多种加密解密算法(C++)源代码
现在是个程序都得加个密,但不会怎么办~现在就有C++海量的加密源码给你学习。
300多种C++加密解密算法的源码,想看看加密方式的就下吧。
高效程序的奥秘 书上代码
<<高效程序的奥秘>>
Herry S. Warren, Jr. 著 冯速 译
原书示例程序
函数:
nlz, Gray, pop, transpose8, Hilbert, divmnu ......
Strassen Algorithm
Solution:
http://blog.csdn.net/tiandyoin/archive/2009/09/18/4564811.aspx
OpenMP 入门程序 --- 手把手教你学会并行程序
这是一个OpenMP入门的程序包,包括各种指令和函数的用法,基本模板,从 sourceForge 上一个牛B的项目里抽取出来的,很适合初学者入门参考,可参考 周伟明写的 <>
MF算法 --- 传说后缀数组中最快的构建法
Giovanni Manzini and Paolo Ferragina 吸取了前人多种经验,结合n个算法,组建了最快的sa构建法.2005年新出的算法.是GNU开源项目,竞赛中 1000万的数据是 1 s,文件相当多,不能写在博客里,linux源码可以看:
http://www.mfn.unipmn.it/~manzini/lightweight
如果不会用,就下载本C++ 多串匹配程序包吧
后缀数组PPT详细解答
内容:
许智磊后缀数组的pdf
本人解说的ppt
制作的mdl
有错误请指正...
100位的双精度算法---扩充int64
typedef struct int100{ //100位长整数,以补码存储
__int64 low; //低0 ... 2^51-1位 51 .. 63 位置空,作溢出时保留数据用
__int64 top; //高0 ... 2^61-1
//__int64 sign; //符号位在高位的 第0+61位 62 位作借位用, 63位置空
//__int64 size; //范围 -2^112 ...2^112-1
//int100(){low=0;top=0;sign=0;size=1;} //默认为0
//int100(__int64 _low,__int64 _top,__int64 _sign,__int64 _size){
// low=_low;top=_top;sign=_sign;size=_size;
//}
int100(){low=0;top=0;}
int100(__int64 _low,__int64 _top){
low=_low;top=_top;
}
}int100;
int100 to_source(int100 a){//补码转原码
int100 to_patch(int100 b)//原码转补码
int100 add(int100 a,int100 b)
int100 sub(int100 a,int100 b)
要下就下,别在这里瞎评论!
Coding by Tiandy
CSOpenGL User Manual
This is OpenGL API for C#, User manual as English
Mpich 与 三服务器 自动配置脚本
nis,nfs,sshd配合mpich的配置脚本,实现全过程自动化,省力省气.
依据我的文章 mpich完整配置 所写.
通过主脚本master.set.sh和client.set.sh调用子脚本配置.
以操作每个文件为单位,分写每个.sh.
目前针对 root 用户
why.txt 会回答你的各种问题
有一两个配置文件是隐藏的. 如 .mpd.hosts.set.sh
操作: 打开一个终端,cd 到脚本目录,分别运行两个主文件.
实验平台:
redhat 9.0
己经 安装 nis,nfs,ssh 服务器或客户端.
已经 配置好DHCP 服务器,因为脚本是根据dhcpd 自动获取 IP 和 主机名的.
vmware 6.5
宿主机 win xp sp2 番茄花园
date:2009:05:01
擦除cpp文件中的 // 和 /* */ 的注释的小程序
//本程序针对 vc++ 6.0 编译器语法,使用者要保证测试 \用例能在 vc++ 6.0 下编译通过 \
用此程序可以自动帮你去除cpp文件中繁多的注释.
附带几十个不同的测试用例,还有文档说明
大整数乘法---快速傅立叶变换(FFT)
离散傅里叶变换(DFT)的快速算法(FFT),它在大整数乘法上的应用,本文不用复数根,从整数MOD P的角度建立新算法。