/usr/include/avifile-0.7/avm_except.h is in libavifile-0.7-dev 1:0.7.48~20090503.ds-18.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | #ifndef AVIFILE_AVM_EXCEPT_H
#define AVIFILE_AVM_EXCEPT_H
#include "avm_default.h"
//#warning exceptions will be OBSOLETE
/********************************************************
Exception object
Copyright 2000 Eugene Kuznetsov (divx@euro.ru)
*********************************************************/
AVM_BEGIN_NAMESPACE;
/**
*
* The idea is to use error codes for non-fatal problems
* ( for example, problem in decompressing one frame is not fatal
* for video decoder ) and exceptions for problems which leave
* object in unusable state. GenError is an intermediate case.
*
*/
class AVMEXPORT BaseError
{
protected:
const char* file;
char* module;
char* description;
char* severity;
int line;
public:
BaseError();
/** \internal copy constructor */
BaseError(const BaseError& f);
BaseError(const char* severity, const char* module, const char* file,
int line, const char* desc);
virtual ~BaseError();
BaseError& operator=(const BaseError& f);
void Print();
void PrintAll();
const char* GetModule() const;
const char* GetDesc() const;
};
class AVMEXPORT FatalError: public BaseError
{
public:
FatalError(const char* mod, const char* f, int l, const char* desc,...);
FatalError(const FatalError& f):BaseError(f){}
};
class AVMEXPORT GenError: public BaseError
{
public:
GenError(const char* mod, const char* f, int l, const char* desc,...);
GenError(const GenError& f):BaseError(f){}
};
#define FATAL(X...) avm::FatalError(__MODULE__,__FILE__,__LINE__,X)
#define WARNING(X...) avm::GenError(__ERR_MODULE__,__FILE__,__LINE__,X)
AVM_END_NAMESPACE;
#ifdef AVM_COMPATIBLE
typedef avm::BaseError BaseError;
typedef avm::FatalError FatalError;
typedef avm::GenError GenError;
#endif // AVM_COMPATIBLE
/***
If you want to understand how exactly it will work:
#include <stdio.h>
class Error
{
public:
Error()
{
int pos;
__asm__ __volatile__
("push %%esp\n\t"
"pop %%eax\n\t"
: "=a"(pos)
);
printf("Created Error object, esp=%x, this=%x\n", pos, this);
}
Error(const Error& e)
{
printf("Copy-created Error object %x from %x\n", this, &e);
}
~Error()
{
printf("Destroyed Error object, this=%x\n", this);
}
};
void main()
{
try
{
throw Error();
}
catch(const Error& e)
{
int pos;
__asm__ __volatile__
("push %%esp\n\t"
"pop %%eax\n\t"
: "=a"(pos)
);
printf("esp %x\n", pos);
printf("Caught object %x\n", &e);
}
}
Created Error object, esp=bffff910, this=bffff964
Copy-created Error object 804a0c8 from bffff964
Destroyed Error object, this=bffff964
esp bffff940
Caught object 804a0c8
Destroyed Error object, this=804a0c8
***/
#endif // AVIFILE_AVM_EXCEPT_H
|