📄 protos.h
字号:
/* -*-C-*- ******************************************************************************** * * File: protos.h (Formerly protos.h) * Description: * Author: Mark Seaman, SW Productivity * Created: Fri Oct 16 14:37:00 1987 * Modified: Fri Jul 12 10:06:55 1991 (Dan Johnson) danj@hpgrlj * Language: C * Package: N/A * Status: Reusable Software Component * * (c) Copyright 1987, Hewlett-Packard Company. ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** http://www.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * *********************************************************************************/#ifndef PROTOS_H#define PROTOS_H/*---------------------------------------------------------------------- I n c l u d e s----------------------------------------------------------------------*/#include "bitvec.h"#include "cutil.h"/*---------------------------------------------------------------------- T y p e s----------------------------------------------------------------------*/typedef BIT_VECTOR *CONFIGS;typedef struct{ FLOAT32 A; FLOAT32 B; FLOAT32 C; FLOAT32 X; FLOAT32 Y; FLOAT32 Angle; FLOAT32 Length;} PROTO_STRUCT;typedef PROTO_STRUCT *PROTO;typedef struct{ INT16 NumProtos; INT16 MaxNumProtos; PROTO Prototypes; INT16 NumConfigs; INT16 MaxNumConfigs; CONFIGS Configurations;} CLASS_STRUCT;typedef CLASS_STRUCT *CLASS_TYPE;typedef CLASS_STRUCT *CLASSES;/*---------------------------------------------------------------------- C o n s t a n t s----------------------------------------------------------------------*/#define NUMBER_OF_CLASSES 256#define Y_OFFSET -40.0#define FEATURE_SCALE 100.0/*---------------------------------------------------------------------- V a r i a b l e s----------------------------------------------------------------------*/extern CLASS_STRUCT TrainingData[];/*---------------------------------------------------------------------- M a c r o s----------------------------------------------------------------------*//********************************************************************** * AddProtoToConfig * * Set a single proto bit in the specified configuration. **********************************************************************/#define AddProtoToConfig(Pid,Config) \(SET_BIT (Config, Pid))/********************************************************************** * RemoveProtoFromConfig * * Clear a single proto bit in the specified configuration. **********************************************************************/#define RemoveProtoFromConfig(Pid,Config) \(reset_bit (Config, Pid))/********************************************************************** * ClassOfChar * * Return the class of a particular ASCII character value. **********************************************************************/#define ClassOfChar(Char) \((TrainingData [Char].NumProtos) ? \ (& TrainingData [Char]) : \ NO_CLASS)/********************************************************************** * ProtoIn * * Choose the selected prototype in this class record. Return the * pointer to it (type PROTO). **********************************************************************/#define ProtoIn(Class,Pid) \(& (Class)->Prototypes [Pid])/********************************************************************** * ConfigIn * * Choose the selected prototype configuration in this class record. * Return it as type 'BIT_VECTOR'. **********************************************************************/#define ConfigIn(Class,Cid) \((Class)->Configurations [Cid])/********************************************************************** * NumProtosIn * * Return the number of prototypes in this class. The 'Class' argument * is of type 'CLASS_TYPE'. **********************************************************************/#define NumProtosIn(Class) \((Class)->NumProtos)/********************************************************************** * NumConfigsIn * * Return the number of configurations in this class. The 'Class' argument * is of type 'CLASS_TYPE'. **********************************************************************/#define NumConfigsIn(Class) \((Class)->NumConfigs)/********************************************************************** * CoefficientA * * Return the first parameter of the prototype structure. This is the * A coefficient in the line representation of "Ax + By + C = 0". The * 'Proto' argument is of type 'PROTO'. **********************************************************************/#define CoefficientA(Proto) \((Proto)->A)/********************************************************************** * CoefficientB * * Return the second parameter of the prototype structure. This is the * B coefficient in the line representation of "Ax + By + C = 0". The * 'Proto' argument is of type 'PROTO'. **********************************************************************/#define CoefficientB(Proto) \((Proto)->B)/********************************************************************** * CoefficientC * * Return the third parameter of the prototype structure. This is the * C coefficient in the line representation of "Ax + By + C = 0". The * 'Proto' argument is of type 'PROTO'. **********************************************************************/#define CoefficientC(Proto) \((Proto)->C)/********************************************************************** * ProtoAngle * * Return the angle parameter of the prototype structure. The * 'Proto' argument is of type 'PROTO'. **********************************************************************/#define ProtoAngle(Proto) \((Proto)->Angle)/********************************************************************** * ProtoX * * Return the X parameter of the prototype structure. The 'Proto' * argument is of type 'PROTO'. **********************************************************************/#define ProtoX(Proto) \((Proto)->X)/********************************************************************** * ProtoY * * Return the angle parameter of the prototype structure. The 'Proto' * argument is of type 'PROTO'. **********************************************************************/#define ProtoY(Proto) \((Proto)->Y)/********************************************************************** * ProtoLength * * Return the length parameter of the prototype structure. The * 'Proto' argument is of type 'PROTO'. **********************************************************************/#define ProtoLength(Proto) \((Proto)->Length)/********************************************************************** * PrintProto * * Print out the contents of a prototype. The 'Proto' argument is of * type 'PROTO'. **********************************************************************/#define PrintProto(Proto) \(cprintf ("X=%4.2f, Y=%4.2f, Angle=%4.2f", \ ProtoX (Proto), \ ProtoY (Proto), \ ProtoLength (Proto), \ ProtoAngle (Proto))) \/********************************************************************** * PrintProtoLine * * Print out the contents of a prototype. The 'Proto' argument is of * type 'PROTO'. **********************************************************************/#define PrintProtoLine(Proto) \(cprintf ("A=%4.2f, B=%4.2f, C=%4.2f", \ CoefficientA (Proto), \ CoefficientB (Proto), \ CoefficientC (Proto))) \/*---------------------------------------------------------------------- F u n c t i o n s----------------------------------------------------------------------*/int AddConfigToClass(CLASS_TYPE Class); int AddProtoToClass(CLASS_TYPE Class); FLOAT32 ClassConfigLength(CLASS_TYPE Class, BIT_VECTOR Config); FLOAT32 ClassProtoLength(CLASS_TYPE Class); void CopyProto(PROTO Src, PROTO Dest); void FillABC(PROTO Proto); void FreeClass(CLASS_TYPE Class); void FreeClassFields(CLASS_TYPE Class); void InitPrototypes(); CLASS_TYPE NewClass(int NumProtos, int NumConfigs); void PrintProtos(CLASS_TYPE Class); void ReadClassFile(); void ReadClassFromFile(FILE *File, char ClassChar); void ReadConfigs(register FILE *File, CLASS_TYPE Class); void ReadProtos(register FILE *File, CLASS_TYPE Class); int SplitProto(CLASS_TYPE Class, int OldPid); void WriteOldConfigFile(FILE *File, CLASS_TYPE Class); void WriteOldProtoFile(FILE *File, CLASS_TYPE Class); /*#if defined(__STDC__) || defined(__cplusplus)# define _ARGS(s) s#else# define _ARGS(s) ()#endif*//* protos.c *int AddConfigToClass _ARGS((CLASS_TYPE Class));int AddProtoToClass _ARGS((CLASS_TYPE Class));FLOAT32 ClassConfigLength _ARGS((CLASS_TYPE Class, BIT_VECTOR Config));FLOAT32 ClassProtoLength _ARGS((CLASS_TYPE Class));void CopyProto _ARGS((PROTO Src, PROTO Dest));void FillABC _ARGS((PROTO Proto));void FreeClass _ARGS((CLASS_TYPE Class));void FreeClassFields _ARGS((CLASS_TYPE Class));void InitPrototypes _ARGS((void));CLASS_TYPE NewClass _ARGS((int NumProtos, int NumConfigs));void PrintProtos _ARGS((CLASS_TYPE Class));void ReadClassFile _ARGS((void));void ReadClassFromFile _ARGS((FILE *File, int ClassChar));void ReadConfigs _ARGS((FILE *File, CLASS_TYPE Class));void ReadProtos _ARGS((FILE *File, CLASS_TYPE Class));int SplitProto _ARGS((CLASS_TYPE Class, int OldPid));void WriteOldConfigFile _ARGS((FILE *File, CLASS_TYPE Class));void WriteOldProtoFile _ARGS((FILE *File, CLASS_TYPE Class));#undef _ARGS*/#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -