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

📄 asynch.i

📁 H.264完整的C语言代码和DCT的代码
💻 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 + -