Skip to content
Snippets Groups Projects
Select Git revision
  • eb48fb68925e7b3b14ca68118d87585db63c43c8
  • master default protected
  • 9.0
  • marcus/wix3
  • 8.0
  • nt-tools
  • 7.8
  • 7.6
  • 7.4
  • 7.2
  • 7.0
  • 0.6
  • rosuav/latex-markdown-renderer
  • rxnpatch/rxnpatch
  • marcus/gobject-introspection
  • rxnpatch/8.0
  • rosuav/pre-listening-ports
  • rosuav/async-annotations
  • rosuav/pgsql-ssl
  • rxnpatch/rxnpatch-broken/2023-10-06T094250
  • grubba/fdlib
  • v8.0.2020
  • v8.0.2018
  • v8.0.2016
  • v8.0.2014
  • v8.0.2012
  • v8.0.2008
  • v8.0.2006
  • v8.0.2004
  • v8.0.2002
  • v8.0.2000
  • v8.0.1998
  • v8.0.1996
  • v8.0.1994
  • v8.0.1992
  • v8.0.1990
  • v8.0.1988
  • v8.0.1986
  • rxnpatch/clusters/8.0/2025-04-29T124414
  • rxnpatch/2025-04-29T124414
  • v8.0.1984
41 results

object.h

Blame
  • object.h 3.73 KiB
    /*\
    ||| This file a part of Pike, and is copyright by Fredrik Hubinette
    ||| Pike is distributed as GPL (General Public License)
    ||| See the files COPYING and DISCLAIMER for more information.
    \*/
    
    /*
     * $Id: object.h,v 1.30 1999/09/25 23:50:56 grubba Exp $
     */
    #ifndef OBJECT_H
    #define OBJECT_H
    
    #include "global.h"
    #include "svalue.h"
    
    /* a destructed object has no program */
    
    #ifndef STRUCT_OBJECT_DECLARED
    #define STRUCT_OBJECT_DECLARED
    #endif
    struct object
    {
      INT32 refs;                    /* Reference count, must be first. */
    #ifdef PIKE_SECURITY
      struct object *prot;
    #endif
      struct program *prog;
      struct object *parent;
      INT16 parent_identifier;
      struct object *next;
      struct object *prev;
      char storage[1];
    };
    
    extern struct object *first_object;
    extern struct object *master_object;
    extern struct program *master_program;
    extern struct program *magic_index_program;
    extern struct program *magic_set_index_program;
    
    #define free_object(O) do{ struct object *o_=(O); debug_malloc_touch(o_); if(!--o_->refs) really_free_object(o_); }while(0)
    
    #define LOW_GET_GLOBAL(O,I,ID) ((O)->storage+INHERIT_FROM_INT((O)->prog, (I))->storage_offset+(ID)->func.offset)
    #define GET_GLOBAL(O,I) LOW_GET_GLOBAL(O,I,ID_FROM_INT((O)->prog,I))
    #define GLOBAL_FROM_INT(I) GET_GLOBAL(fp->current_object, I)
    
    #define this_object() (add_ref(fp->current_object), fp->current_object)
    
    #include "block_alloc_h.h"
    /* Prototypes begin here */
    struct object *low_clone(struct program *p);
    void call_c_initializers(struct object *o);
    void do_free_object(struct object *o);
    struct object *debug_clone_object(struct program *p, int args);
    struct object *parent_clone_object(struct program *p,
    				   struct object *parent,
    				   int parent_identifier,
    				   int args);
    struct object *get_master(void);
    struct object *debug_master(void);
    PTR_HASH_ALLOC(destroy_called_mark,128)
    void destruct(struct object *o);
    void destruct_objects_to_destruct(void);
    void really_free_object(struct object *o);
    void low_object_index_no_free(struct svalue *to,
    			      struct object *o,
    			      INT32 f);
    void object_index_no_free2(struct svalue *to,
    			  struct object *o,
    			  struct svalue *index);