Yggdrasil Seeds : Trabalhos de software : Language Select : Denullpo, the pointer checker : Denullpo

Denullpo


Como para uso mínimo

Inclua denullpo.h em cada fonte de C/C++, mas precisa de colocações, caso contrário todos os macros em denullpo.h ficam inválidos.
Toda a colocação é escrita dentro "#define" antes de inclusive denullpo.h.
DENULLPO_TRAP
Se isto estiver definido, callback de descoberta de erro fica efetivo.
DENULLPO_SKIP
Se isto estiver definido, Denullpo descobre erros.
Se DENULLPO_TRAP nem DENULLPO_SKIP está definido, Denullpo não descobre erros.
DENULLPO_4CC
É um valor para indicar que um exemplo é válido.
Se isto não estiver definido, está automaticamente definido a um valor constante.
Na mancha que deveria conferir um ponteiro, dê em um ponteiro em denullpo().
Quando um ponteiro for NULL, Denullpo processa um erro fixo.
Sample Code
/*=== evada acesso a um ponteiro NULL com denullpo() ===*/
#include <stdio.h>
/*=== Denullpo precisa de colocação antes inclusive denullpo.h ===*/
/*=== Você pode remover manipulação de Denullpo quando você mudar esta linha em comentário. ===*/
#define DENULLPO_SKIP
#include "denullpo.h"

int main(int argc,char *argv[]){
void* p=NULL;
int err=0;

p=malloc(128);
/*=== divide processo por um resultado de cheque de um ponteiro ===*/
if(denullpo(p)){
/*=== processando quando é anormal ===*/
fprintf(stderr,"this is nullpo\n");
err=1;
}
else{
/*=== processando quando é normal ===*/
// :
// :
// :
free(p);
p=NULL;
}
return err;
}


Examina a validez de exemplo

Denullpo pode examinar a validez de exemplo acrescentando um sócio para um código mágico a uma classe e um corpo de estrutura.
Classe e estrutura de um objetivo de cheque definem um ponto de escritura de um código mágico em DENULLPO_INITCHECKER.
Quando criou isto em exemplo, indica aquele exemplo válido chamando denullpo_setinit().
E quando destrói isto em exemplo, indica aquele exemplo de inválido chamando denullpo_setpurge().
Der de Bei Stelle, morra einen Zeiger überprüfen sollte, geben es de Sie em einem Zeiger em denullpo2().
Quando um ponteiro for ilegal, Denullpo processa um erro fixo.
Sample Code
/*=== resista a uma chamada de método de exemplo ilícito ===*/
#include <stdio.h>
#define DENULLPO_SKIP
#include "denullpo.h"

class FOO{
public:
/*=== defina uma variável para preencher uma corda mágica em uma classe ===*/
DENULLPO_INITCHECKER;

FOO(){
/*=== preencha uma corda mágica que indica que inicializou ===*/
denullpo_setinit(this);
}

~FOO(){
/*=== preencha uma corda mágica que indica que terminou ===*/
denullpo_setpurge(this);
}

void exec(){
/*=== trate como um erro se este método é chamado de exclua entre denullpo_setinit() e denullpo_setpurge() ===*/
if(denullpo2())return;
// :
// :
// :
}
};


Callback de descoberta de erro

denullpo() e denullpo2() normalmente devolvem imediatamente um resultado quando eles descobriram um erro.
Quando você chamar denullpo_settrap() e callback de jogo, callback é chamado quando Denullpo descobriu um erro, e o resultado é refletido.
DENULLPO_TRAP deve ser definido antes inclusive um denullpo.h validar callback.
Sample Code
/*=== implemente erro que controla de um ponteiro ilícito ===*/
#include <stdio.h>
/*=== fixando para validar callback ===*/
#define DENULLPO_TRAP
#include "denullpo.h"

int err=0;

/*=== processando quando Denullpo descobriu um erro ===*/
static unsigned __cdecl hook(void *p,eDenullpoReason reason){
fprintf(stderr,"nullpo is hooked\n");
err=1;

/*=== valor devolvendo há pouco se torna devolvendo valor de denullpo() ===*/
return 1;
}

int main(int argc,char *argv[]){
void* p=NULL;

/*=== fixando de callback ===*/
denullpo_settrap(hook);

p=malloc(128);
/*=== Se um ponteiro for NULL, Denullpo executam callback fixo. ===*/
if(!denullpo(p)){
/*=== processando quando é normal ===*/
// :
// :
// :
free(p);
p=NULL;
}
return err;
}


Detalhes

Definições

eDenullpoReason
Info de erro de ponteiro de callback de hDenullpoTrap.
DENULLPO_NULL
Ponteiro examinado é NULL.
DENULLPO_INVALID
Exemplo examinado é inválido.

Callback digita

unsigned (*hDenullpoTrap)(void* p, eDenullpoReason reason)
Callback quando erro é descoberto.
Quando um erro foi descoberto, um jogo de função em denullpo_settrap() é chamado.
Argumentos
p
ponteiro de um objetivo de exame
reason
base de um erro
Valor devolvendo
0
Este fator de erro foi resolvido.
1
Este fator de erro ainda é esquerdo.

Função

hDenullpoTrap denullpo_gettrap()
adquira um callback de descoberta de erro.
Valor devolvendo
o valor de colocação
hDenullpoTrap denullpo_settrap(hDenullpoTrap trap)
fixe um callback de descoberta de erro.
Argumentos
trap
uma função para tratar como callback
Valor devolvendo
o último valor de colocação
Notas
Esta função não é nenhuma linha seguro.
unsigned denullpo_exectrap(void* p, eDenullpoReason reason)
chame o callback de descoberta de erro.
Argumentos
p
ponteiro de um objetivo de exame
reason
base de um erro
Valor devolvendo
0
Este fator de erro foi resolvido.
1
Este fator de erro ainda é esquerdo.
unsigned denullpo_getinit(any* p)
adquira um valor de inspetor de exemplo
Argumentos
p
exemplo designado
Valor devolvendo
valor de inspetor de exemplo
void denullpo_setinit(any* p)
notifique inspetor de exemplo que exemplo é inicializado
Argumentos
p
exemplo designado
Notas
Você tem que chamar este macro para cada exemplo se tornar um objetivo de denullpo2().
void denullpo_setpurge(any* p)
notifique inspetor de exemplo que exemplo é terminado
Argumentos
p
exemplo designado
Notas
Você tem que chamar este macro para cada exemplo se tornar um objetivo de denullpo2().
unsigned denullpo_chkinit(any* p)
examine se exemplo é inicializado
Argumentos
p
exemplo designado
Valor devolvendo
0
não anormalidade
1
anormalidade
Notas
Você normalmente não chama diretamente este macro. Você chama denullpo2() de forma que Denullpo examina exemplo.
int denullpo(any* p)
examine se um ponteiro é NULL
Argumentos
p
ponteiro designado
Valor devolvendo
0
NULL não foi descoberto
1
NULL foi descoberto
Notas
A função de callback é chamada no caso da descoberta de erro se fixou por uma função de callback em denullpo_settrap().
int denullpo2(any* p)
examine se um exemplo é inválido
Argumentos
p
exemplo designado
Valor devolvendo
0
não anormalidade
1
anormalidade
Notas
A função de callback é chamada no caso da descoberta de erro se fixou por uma função de callback em denullpo_settrap().
Você tem que chamar denullpo_setinit() e denullpo_setpurge() a uma posição apropriada de forma que esta função normalmente é controlado.

Plano futuro


DSHs PHPlib v0.1.0 (C)2006-9 Denullpo Smasher Hammerson