~ubuntu-branches/debian/sid/php-cassandra/sid

« back to all changes in this revision

Viewing changes to cassandra-1.3.0/util/ref.c

  • Committer: Package Import Robot
  • Author(s): Ondřej Surý
  • Date: 2017-04-18 17:16:30 UTC
  • Revision ID: package-import@ubuntu.com-20170418171630-fw8udixss0879s32
Tags: upstream-1.3.0
Import upstream version 1.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/**
 
2
 * Copyright 2015-2016 DataStax, Inc.
 
3
 *
 
4
 * Licensed under the Apache License, Version 2.0 (the "License");
 
5
 * you may not use this file except in compliance with the License.
 
6
 * You may obtain a copy of the License at
 
7
 *
 
8
 * http://www.apache.org/licenses/LICENSE-2.0
 
9
 *
 
10
 * Unless required by applicable law or agreed to in writing, software
 
11
 * distributed under the License is distributed on an "AS IS" BASIS,
 
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
13
 * See the License for the specific language governing permissions and
 
14
 * limitations under the License.
 
15
 */
 
16
 
 
17
#include "php_driver.h"
 
18
#include "php_driver_types.h"
 
19
#include "util/math.h"
 
20
 
 
21
php_driver_ref*
 
22
php_driver_new_peref(void *data, php_driver_free_function destructor, int persistent)
 
23
{
 
24
  php_driver_ref *ref = (php_driver_ref*) pemalloc(sizeof(php_driver_ref), persistent);
 
25
 
 
26
  ref->data     = data;
 
27
  ref->destruct = destructor;
 
28
  ref->count    = 1;
 
29
 
 
30
  return ref;
 
31
}
 
32
 
 
33
void
 
34
php_driver_del_peref(php_driver_ref **ref_ptr, int persistent)
 
35
{
 
36
  php_driver_ref *ref = *ref_ptr;
 
37
  if (ref) {
 
38
    ref->count--;
 
39
 
 
40
    if (ref->count <= 0) {
 
41
      ref->destruct(ref->data);
 
42
      ref->data = NULL;
 
43
      pefree(ref, persistent);
 
44
      *ref_ptr = NULL;
 
45
    }
 
46
  }
 
47
}