?? asynch.i
字號:
#line 1 "D:/working/tools/isim/isimhostdll2/asynch.cpp"
#line 1 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#pragma once
#line 18 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 25 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#pragma pack(push,8)
#line 34 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
extern "C" {
#line 38 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 49 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 50 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 57 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 66 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 67 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
typedef unsigned int size_t;
#line 73 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
typedef unsigned short wchar_t;
#line 80 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
typedef wchar_t wint_t;
typedef wchar_t wctype_t;
#line 87 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 88 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
typedef char * va_list;
#line 99 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 101 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 108 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 110 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 141 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
#line 159 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 172 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 185 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 214 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 215 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
extern FILE _iob[];
#line 222 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 232 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
typedef __int64 fpos_t;
#line 243 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 244 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 247 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
int __cdecl _filbuf(FILE *);
int __cdecl _flsbuf(int, FILE *);
FILE * __cdecl _fsopen(const char *, const char *, int);
#line 283 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
void __cdecl clearerr(FILE *);
int __cdecl fclose(FILE *);
int __cdecl _fcloseall(void);
FILE * __cdecl _fdopen(int, const char *);
#line 293 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
int __cdecl feof(FILE *);
int __cdecl ferror(FILE *);
int __cdecl fflush(FILE *);
int __cdecl fgetc(FILE *);
int __cdecl _fgetchar(void);
int __cdecl fgetpos(FILE *, fpos_t *);
char * __cdecl fgets(char *, int, FILE *);
int __cdecl _fileno(FILE *);
#line 307 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
int __cdecl _flushall(void);
FILE * __cdecl fopen(const char *, const char *);
int __cdecl fprintf(FILE *, const char *, ...);
int __cdecl fputc(int, FILE *);
int __cdecl _fputchar(int);
int __cdecl fputs(const char *, FILE *);
size_t __cdecl fread(void *, size_t, size_t, FILE *);
FILE * __cdecl freopen(const char *, const char *, FILE *);
int __cdecl fscanf(FILE *, const char *, ...);
int __cdecl fsetpos(FILE *, const fpos_t *);
int __cdecl fseek(FILE *, long, int);
long __cdecl ftell(FILE *);
size_t __cdecl fwrite(const void *, size_t, size_t, FILE *);
int __cdecl getc(FILE *);
int __cdecl getchar(void);
int __cdecl _getmaxstdio(void);
char * __cdecl gets(char *);
int __cdecl _getw(FILE *);
void __cdecl perror(const char *);
int __cdecl _pclose(FILE *);
FILE * __cdecl _popen(const char *, const char *);
int __cdecl printf(const char *, ...);
int __cdecl putc(int, FILE *);
int __cdecl putchar(int);
int __cdecl puts(const char *);
int __cdecl _putw(int, FILE *);
int __cdecl remove(const char *);
int __cdecl rename(const char *, const char *);
void __cdecl rewind(FILE *);
int __cdecl _rmtmp(void);
int __cdecl scanf(const char *, ...);
void __cdecl setbuf(FILE *, char *);
int __cdecl _setmaxstdio(int);
int __cdecl setvbuf(FILE *, char *, int, size_t);
int __cdecl _snprintf(char *, size_t, const char *, ...);
int __cdecl sprintf(char *, const char *, ...);
int __cdecl sscanf(const char *, const char *, ...);
char * __cdecl _tempnam(const char *, const char *);
FILE * __cdecl tmpfile(void);
char * __cdecl tmpnam(char *);
int __cdecl ungetc(int, FILE *);
int __cdecl _unlink(const char *);
int __cdecl vfprintf(FILE *, const char *, va_list);
int __cdecl vprintf(const char *, va_list);
int __cdecl _vsnprintf(char *, size_t, const char *, va_list);
int __cdecl vsprintf(char *, const char *, va_list);
#line 363 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
FILE * __cdecl _wfsopen(const wchar_t *, const wchar_t *, int);
#line 369 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
wint_t __cdecl fgetwc(FILE *);
wint_t __cdecl _fgetwchar(void);
wint_t __cdecl fputwc(wint_t, FILE *);
wint_t __cdecl _fputwchar(wint_t);
wint_t __cdecl getwc(FILE *);
wint_t __cdecl getwchar(void);
wint_t __cdecl putwc(wint_t, FILE *);
wint_t __cdecl putwchar(wint_t);
wint_t __cdecl ungetwc(wint_t, FILE *);
wchar_t * __cdecl fgetws(wchar_t *, int, FILE *);
int __cdecl fputws(const wchar_t *, FILE *);
wchar_t * __cdecl _getws(wchar_t *);
int __cdecl _putws(const wchar_t *);
int __cdecl fwprintf(FILE *, const wchar_t *, ...);
int __cdecl wprintf(const wchar_t *, ...);
int __cdecl _snwprintf(wchar_t *, size_t, const wchar_t *, ...);
int __cdecl swprintf(wchar_t *, const wchar_t *, ...);
int __cdecl vfwprintf(FILE *, const wchar_t *, va_list);
int __cdecl vwprintf(const wchar_t *, va_list);
int __cdecl _vsnwprintf(wchar_t *, size_t, const wchar_t *, va_list);
int __cdecl vswprintf(wchar_t *, const wchar_t *, va_list);
int __cdecl fwscanf(FILE *, const wchar_t *, ...);
int __cdecl swscanf(const wchar_t *, const wchar_t *, ...);
int __cdecl wscanf(const wchar_t *, ...);
FILE * __cdecl _wfdopen(int, const wchar_t *);
FILE * __cdecl _wfopen(const wchar_t *, const wchar_t *);
FILE * __cdecl _wfreopen(const wchar_t *, const wchar_t *, FILE *);
void __cdecl _wperror(const wchar_t *);
FILE * __cdecl _wpopen(const wchar_t *, const wchar_t *);
int __cdecl _wremove(const wchar_t *);
wchar_t * __cdecl _wtempnam(const wchar_t *, const wchar_t *);
wchar_t * __cdecl _wtmpnam(wchar_t *);
#line 414 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 415 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 418 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
int __cdecl fcloseall(void);
FILE * __cdecl fdopen(int, const char *);
int __cdecl fgetchar(void);
int __cdecl fileno(FILE *);
int __cdecl flushall(void);
int __cdecl fputchar(int);
int __cdecl getw(FILE *);
int __cdecl putw(int, FILE *);
int __cdecl rmtmp(void);
char * __cdecl tempnam(const char *, const char *);
int __cdecl unlink(const char *);
#line 463 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
}
#line 467 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#pragma pack(pop)
#line 471 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 473 "D:/Progra~1/Micros~2/VC98/Include\\stdio.h"
#line 6 "D:/working/tools/isim/isimhostdll2/asynch.cpp"
#line 1 "D:/working/tools/isim/isimhostdll2/asynch.hpp"
#line 1 "D:/working/tools/isim\\libapi.hpp"
#line 38 "D:/working/tools/isim\\libapi.hpp"
#line 46 "D:/working/tools/isim\\libapi.hpp"
#line 62 "D:/working/tools/isim\\libapi.hpp"
#line 70 "D:/working/tools/isim\\libapi.hpp"
#line 72 "D:/working/tools/isim\\libapi.hpp"
#line 9 "D:/working/tools/isim/isimhostdll2/asynch.hpp"
class AsynchProducer;
class AsynchConsumer;
typedef void (*AsynchWaitPtr)(AsynchProducer* producer,
void* waitObj, unsigned int waitID);
class __declspec(dllexport) AsynchProducer
{
private:
AsynchWaitPtr waitFn;
void* waitObj;
unsigned int waitID;
AsynchConsumer* consumerStart;
#line 30 "D:/working/tools/isim/isimhostdll2/asynch.hpp"
public:
AsynchProducer();
~AsynchProducer();
#line 39 "D:/working/tools/isim/isimhostdll2/asynch.hpp"
void attach(AsynchWaitPtr _waitFn, void* _waitObj);
bool isPending();
void set(const unsigned int& data);
friend class AsynchConsumer;
};
class __declspec(dllexport) AsynchConsumer
{
private:
unsigned int* data;
unsigned int reps;
AsynchProducer* producer;
AsynchConsumer* next;
void copy(const AsynchConsumer& _sc);
public:
AsynchConsumer();
~AsynchConsumer();
#line 65 "D:/working/tools/isim/isimhostdll2/asynch.hpp"
AsynchConsumer(AsynchConsumer& _sc);
AsynchConsumer& operator=(AsynchConsumer& _sc);
void attach(unsigned int* _data, unsigned int _reps);
void setPending(AsynchProducer* _producer, unsigned int waitID = 0);
bool isPending();
void copy(AsynchConsumer& _sc);
void reset();
void wait();
void set(const unsigned int& _data, AsynchProducer* _producer = 0);
friend class AsynchProducer;
};
#line 79 "D:/working/tools/isim/isimhostdll2/asynch.hpp"
#line 7 "D:/working/tools/isim/isimhostdll2/asynch.cpp"
AsynchProducer::AsynchProducer():
consumerStart(0), waitFn(0), waitObj(0)
{}
AsynchProducer::~AsynchProducer()
{
set(0xcdcdcdcd);
}
#line 30 "D:/working/tools/isim/isimhostdll2/asynch.cpp"
void AsynchProducer::attach(AsynchWaitPtr _waitFn, void* _waitObj)
{
waitFn = _waitFn;
waitObj = _waitObj;
}
bool AsynchProducer::isPending()
{
return(consumerStart != 0);
}
void AsynchProducer::set(const unsigned int& data)
{
if (consumerStart) {
AsynchConsumer* cur = consumerStart;
do {
AsynchConsumer* next = cur->next;
cur->set(data, this);
cur = next;
} while (cur != consumerStart);
consumerStart = 0;
}
}
AsynchConsumer::AsynchConsumer():
producer(0), data(0), reps(0)
{
next = this;
}
AsynchConsumer::~AsynchConsumer()
{
reset();
}
#line 87 "D:/working/tools/isim/isimhostdll2/asynch.cpp"
AsynchConsumer::AsynchConsumer(AsynchConsumer& _ac)
{
copy(_ac);
}
AsynchConsumer& AsynchConsumer::operator=(AsynchConsumer& _ac)
{
copy(_ac);
return(*this);
}
void AsynchConsumer::attach(unsigned int* _data, unsigned int _reps)
{
data = _data;
reps = _reps;
}
void AsynchConsumer::setPending(AsynchProducer* _producer, unsigned int waitID)
{
if(producer && producer->consumerStart) {
producer->consumerStart = 0;
}
producer = _producer;
producer->waitID = waitID;
producer->consumerStart = this;
}
bool AsynchConsumer::isPending()
{
return(producer != 0);
}
void AsynchConsumer::copy(AsynchConsumer& _ac)
{
if (_ac.producer) {
producer = _ac.producer;
next = _ac.next;
_ac.next = this;
}
for (unsigned int i = 0; i < reps; i++) {
data[i] = *_ac.data;
}
}
void AsynchConsumer::reset()
{
if (next != this) {
AsynchConsumer* prev = next;
while (prev->next != this) {
prev = prev->next;
}
prev->next = next;
if (producer->consumerStart == this) {
producer->consumerStart = next;
}
} else if (producer) {
producer->consumerStart = 0;
}
producer = 0;
#line 170 "D:/working/tools/isim/isimhostdll2/asynch.cpp"
}
void AsynchConsumer::wait()
{
if (producer) {
producer->waitFn(producer, producer->waitObj, producer->waitID);
}
}
void AsynchConsumer::set(const unsigned int& _data, AsynchProducer* _producer)
{
if(producer == _producer) {
producer = 0;
}
next = this;
for (unsigned int i = 0; i < reps; i++) {
data[i] = _data;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -