KinoSearch

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

charmonizer/src/Charmonizer/Core/Util.c
charmonizer/src/Charmonizer/Core/Util.h
charmonizer/src/Charmonizer/Probe.c
charmonizer/src/Charmonizer/Probe.h
charmonizer/src/Charmonizer/Probe/AtomicOps.c
charmonizer/src/Charmonizer/Probe/AtomicOps.h
charmonizer/src/Charmonizer/Probe/DirManip.c
charmonizer/src/Charmonizer/Probe/DirManip.h
charmonizer/src/Charmonizer/Probe/Floats.c
charmonizer/src/Charmonizer/Probe/Floats.h
charmonizer/src/Charmonizer/Probe/FuncMacro.c
charmonizer/src/Charmonizer/Probe/FuncMacro.h
charmonizer/src/Charmonizer/Probe/Headers.c
charmonizer/src/Charmonizer/Probe/Headers.h
charmonizer/src/Charmonizer/Probe/Integers.c
charmonizer/src/Charmonizer/Probe/Integers.h
charmonizer/src/Charmonizer/Probe/LargeFiles.c
charmonizer/src/Charmonizer/Probe/LargeFiles.h
charmonizer/src/Charmonizer/Probe/Memory.c
charmonizer/src/Charmonizer/Probe/Memory.h
charmonizer/src/Charmonizer/Probe/UnusedVars.c
charmonizer/src/Charmonizer/Probe/UnusedVars.h
charmonizer/src/Charmonizer/Probe/VariadicMacros.c
charmonizer/src/Charmonizer/Probe/VariadicMacros.h
charmonizer/src/Charmonizer/Test.c
charmonizer/src/Charmonizer/Test.h
charmonizer/src/Charmonizer/Test/AllTests.c
charmonizer/src/Charmonizer/Test/AllTests.h
charmonizer/src/Charmonizer/Test/TestDirManip.c
charmonizer/src/Charmonizer/Test/TestFuncMacro.c
charmonizer/src/Charmonizer/Test/TestHeaders.c
charmonizer/src/Charmonizer/Test/TestIntegers.c
charmonizer/src/Charmonizer/Test/TestLargeFiles.c
charmonizer/src/Charmonizer/Test/TestUnusedVars.c
charmonizer/src/Charmonizer/Test/TestVariadicMacros.c
clownfish/lib/Clownfish.pm
clownfish/lib/Clownfish/Binding/Core.pm
clownfish/lib/Clownfish/Binding/Core/Aliases.pm
clownfish/lib/Clownfish/Binding/Core/Class.pm
clownfish/lib/Clownfish/Binding/Core/File.pm
clownfish/lib/Clownfish/Binding/Core/Function.pm
clownfish/lib/Clownfish/Binding/Core/Method.pm
clownfish/lib/Clownfish/Binding/Perl.pm
clownfish/lib/Clownfish/Binding/Perl/Class.pm
clownfish/lib/Clownfish/Binding/Perl/Constructor.pm

META.yml  view on Meta::CPAN

    - charmonizer/src/Charmonizer/Core/Util.c
    - charmonizer/src/Charmonizer/Core/Util.h
    - charmonizer/src/Charmonizer/Probe.c
    - charmonizer/src/Charmonizer/Probe.h
    - charmonizer/src/Charmonizer/Probe/AtomicOps.c
    - charmonizer/src/Charmonizer/Probe/AtomicOps.h
    - charmonizer/src/Charmonizer/Probe/DirManip.c
    - charmonizer/src/Charmonizer/Probe/DirManip.h
    - charmonizer/src/Charmonizer/Probe/Floats.c
    - charmonizer/src/Charmonizer/Probe/Floats.h
    - charmonizer/src/Charmonizer/Probe/FuncMacro.c
    - charmonizer/src/Charmonizer/Probe/FuncMacro.h
    - charmonizer/src/Charmonizer/Probe/Headers.c
    - charmonizer/src/Charmonizer/Probe/Headers.h
    - charmonizer/src/Charmonizer/Probe/Integers.c
    - charmonizer/src/Charmonizer/Probe/Integers.h
    - charmonizer/src/Charmonizer/Probe/LargeFiles.c
    - charmonizer/src/Charmonizer/Probe/LargeFiles.h
    - charmonizer/src/Charmonizer/Probe/Memory.c
    - charmonizer/src/Charmonizer/Probe/Memory.h
    - charmonizer/src/Charmonizer/Probe/UnusedVars.c
    - charmonizer/src/Charmonizer/Probe/UnusedVars.h
    - charmonizer/src/Charmonizer/Probe/VariadicMacros.c
    - charmonizer/src/Charmonizer/Probe/VariadicMacros.h
    - charmonizer/src/Charmonizer/Test.c
    - charmonizer/src/Charmonizer/Test.h
    - charmonizer/src/Charmonizer/Test/AllTests.c
    - charmonizer/src/Charmonizer/Test/AllTests.h
    - charmonizer/src/Charmonizer/Test/TestDirManip.c
    - charmonizer/src/Charmonizer/Test/TestFuncMacro.c
    - charmonizer/src/Charmonizer/Test/TestHeaders.c
    - charmonizer/src/Charmonizer/Test/TestIntegers.c
    - charmonizer/src/Charmonizer/Test/TestLargeFiles.c
    - charmonizer/src/Charmonizer/Test/TestUnusedVars.c
    - charmonizer/src/Charmonizer/Test/TestVariadicMacros.c
    - clownfish/lib/Clownfish.pm
    - clownfish/lib/Clownfish/Binding/Core.pm
    - clownfish/lib/Clownfish/Binding/Core/Aliases.pm
    - clownfish/lib/Clownfish/Binding/Core/Class.pm
    - clownfish/lib/Clownfish/Binding/Core/File.pm
    - clownfish/lib/Clownfish/Binding/Core/Function.pm
    - clownfish/lib/Clownfish/Binding/Core/Method.pm
    - clownfish/lib/Clownfish/Binding/Perl.pm
    - clownfish/lib/Clownfish/Binding/Perl/Class.pm
    - clownfish/lib/Clownfish/Binding/Perl/Constructor.pm

charmonizer/charmonize.c  view on Meta::CPAN

/* Charmonize.c -- Create Charmony.
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Charmonizer/Probe.h"
#include "Charmonizer/Probe/AtomicOps.h"
#include "Charmonizer/Probe/DirManip.h"
#include "Charmonizer/Probe/Floats.h"
#include "Charmonizer/Probe/FuncMacro.h"
#include "Charmonizer/Probe/Headers.h"
#include "Charmonizer/Probe/Integers.h"
#include "Charmonizer/Probe/LargeFiles.h"
#include "Charmonizer/Probe/Memory.h"
#include "Charmonizer/Probe/UnusedVars.h"
#include "Charmonizer/Probe/VariadicMacros.h"
#include "Charmonizer/Core/HeaderChecker.h"
#include "Charmonizer/Core/ConfWriter.h"

int main(int argc, char **argv) 
{
    /* Parse and process arguments. */
    if (argc < 3) {
        fprintf(stderr, 
            "Usage: ./charmonize CC_COMMAND CC_FLAGS [VERBOSITY]\n");
        exit(1);

charmonizer/charmonize.c  view on Meta::CPAN

            const long verbosity = strtol(argv[3], NULL, 10);
            chaz_Probe_set_verbosity(verbosity);
        }
        chaz_Probe_init(cc_command, cc_flags, NULL);
    }

    /* Run probe modules. */
    chaz_DirManip_run();
    chaz_Headers_run();
    chaz_AtomicOps_run();
    chaz_FuncMacro_run();
    chaz_Integers_run();
    chaz_Floats_run();
    chaz_LargeFiles_run();
    chaz_Memory_run();
    chaz_UnusedVars_run();
    chaz_VariadicMacros_run();

    /* Write custom postamble. */
    chaz_ConfWriter_append_conf(
        "#ifdef CHY_HAS_SYS_TYPES_H\n"
        "  #include <sys/types.h>\n"
        "#endif\n\n"
    );
    chaz_ConfWriter_append_conf(
        "#ifdef CHY_HAS_ALLOCA_H\n"
        "  #include <alloca.h>\n"

charmonizer/src/Charmonizer/Probe/FuncMacro.c  view on Meta::CPAN

#define CHAZ_USE_SHORT_NAMES

#include "Charmonizer/Core/Compiler.h"
#include "Charmonizer/Core/ConfWriter.h"
#include "Charmonizer/Core/Util.h"
#include "Charmonizer/Probe/FuncMacro.h"
#include <string.h>
#include <stdio.h>
#include <stdlib.h>

/* Code for verifying ISO func macro. */
static char iso_func_code[] =
    QUOTE(  #include "_charm.h"               )
    QUOTE(  int main() {                      )
    QUOTE(      Charm_Setup;                  )
    QUOTE(      printf("%s", __func__);       )

charmonizer/src/Charmonizer/Probe/FuncMacro.c  view on Meta::CPAN

}

static const char* inline_options[] = {
    "__inline",
    "__inline__",
    "inline"
};
static int num_inline_options = sizeof(inline_options) / sizeof(void*);

void
FuncMacro_run(void) 
{
    int i;
    char *output;
    size_t output_len;
    chaz_bool_t has_funcmac      = false;
    chaz_bool_t has_iso_funcmac  = false;
    chaz_bool_t has_gnuc_funcmac = false;
    chaz_bool_t has_inline       = false;

    ConfWriter_start_module("FuncMacro");
    
    /* Check for ISO func macro. */
    output = CC_capture_output(iso_func_code, strlen(iso_func_code), 
        &output_len);
    if (output != NULL && strncmp(output, "main", 4) == 0) {
        has_funcmac     = true;
        has_iso_funcmac = true;
    }
    free(output);

charmonizer/src/Charmonizer/Probe/FuncMacro.h  view on Meta::CPAN

/* Charmonizer/Probe/FuncMacro.h
 */

#ifndef H_CHAZ_FUNC_MACRO
#define H_CHAZ_FUNC_MACRO 

#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>

/* Run the FuncMacro module.
 * 
 * If __func__ successfully resolves, this will be defined:
 *
 * HAS_ISO_FUNC_MACRO
 * 
 * If __FUNCTION__ successfully resolves, this will be defined:
 * 
 * HAS_GNUC_FUNC_MACRO
 * 
 * If one or the other succeeds, these will be defined:
 * 
 * HAS_FUNC_MACRO
 * FUNC_MACRO
 * 
 * The "inline" keyword will also be probed for.  If it is available, the
 * following macro will be defined to "inline", otherwise it will be defined
 * to nothing.
 * 
 * INLINE
 */
void chaz_FuncMacro_run(void);

#ifdef CHAZ_USE_SHORT_NAMES
  #define FuncMacro_run    chaz_FuncMacro_run
#endif

#ifdef __cplusplus
}
#endif

#endif /* H_CHAZ_FUNC_MACRO */


/* Copyright 2006-2011 Marvin Humphrey

charmonizer/src/Charmonizer/Probe/VariadicMacros.c  view on Meta::CPAN

#define CHAZ_USE_SHORT_NAMES

#include "Charmonizer/Core/Compiler.h"
#include "Charmonizer/Core/ConfWriter.h"
#include "Charmonizer/Core/Util.h"
#include "Charmonizer/Probe/VariadicMacros.h"
#include <string.h>
#include <stdio.h>


/* Code for verifying ISO-style variadic macros. */
static char iso_code[] = 
    QUOTE(  #include "_charm.h"                                   )
    QUOTE(  #define ISO_TEST(fmt, ...) \\                         )
    "           printf(fmt, __VA_ARGS__)                        \n"
    QUOTE(  int main() {                                          )

charmonizer/src/Charmonizer/Probe/VariadicMacros.c  view on Meta::CPAN

static char gnuc_code[] = 
    QUOTE(  #include "_charm.h"                                   )
    QUOTE(  #define GNU_TEST(fmt, args...) printf(fmt, ##args)    )
    QUOTE(  int main() {                                          )
    QUOTE(      Charm_Setup;                                      )
    QUOTE(      GNU_TEST("%d %d", 1, 1);                          )
    QUOTE(      return 0;                                         )
    QUOTE(  }                                                     );

void
VariadicMacros_run(void) 
{
    char *output;
    size_t output_len;
    chaz_bool_t has_varmacros      = false;
    chaz_bool_t has_iso_varmacros  = false;
    chaz_bool_t has_gnuc_varmacros = false;

    ConfWriter_start_module("VariadicMacros");

    /* Test for ISO-style variadic macros. */
    output = CC_capture_output(iso_code, strlen(iso_code), &output_len);
    if (output != NULL) {
        has_varmacros = true;
        has_iso_varmacros = true;
        ConfWriter_append_conf("#define CHY_HAS_VARIADIC_MACROS\n");
        ConfWriter_append_conf("#define CHY_HAS_ISO_VARIADIC_MACROS\n");
    }

charmonizer/src/Charmonizer/Probe/VariadicMacros.h  view on Meta::CPAN

/* Charmonizer/Probe/VariadicMacros.h
 */

#ifndef H_CHAZ_VARIADIC_MACROS
#define H_CHAZ_VARIADIC_MACROS 

#ifdef __cplusplus
extern "C" {
#endif

#include <stdio.h>

/* Run the VariadicMacros module.
 *
 * If your compiler supports ISO-style variadic macros, this will be defined:
 * 
 * HAS_ISO_VARIADIC_MACROS
 * 
 * If your compiler supports GNU-style variadic macros, this will be defined:
 * 
 * HAS_GNUC_VARIADIC_MACROS
 * 
 * If you have at least one of the above, this will be defined:
 * 
 * HAS_VARIADIC_MACROS
 */
void chaz_VariadicMacros_run(void);

#ifdef CHAZ_USE_SHORT_NAMES
  #define VariadicMacros_run    chaz_VariadicMacros_run
#endif

#ifdef __cplusplus
}
#endif

#endif /* H_CHAZ_VARIADIC_MACROS */


/* Copyright 2006-2011 Marvin Humphrey

charmonizer/src/Charmonizer/Test/AllTests.c  view on Meta::CPAN

static TestBatch **batches = NULL;

void
AllTests_init()
{
    Test_init();

    /* Create a null-terminated array of test batches to iterate over. */
    batches = (TestBatch**)malloc(8 * sizeof(TestBatch*));
    batches[0] = TestDirManip_prepare();
    batches[1] = TestFuncMacro_prepare();
    batches[2] = TestHeaders_prepare();
    batches[3] = TestIntegers_prepare();
    batches[4] = TestLargeFiles_prepare();
    batches[5] = TestUnusedVars_prepare();
    batches[6] = TestVariadicMacros_prepare();
    batches[7] = NULL;
}

void
AllTests_run()
{
    int total_tests   = 0;
    int total_passed  = 0;
    int total_failed  = 0;
    int total_skipped = 0;

charmonizer/src/Charmonizer/Test/AllTests.h  view on Meta::CPAN

 * undetected failure some of the time.  However, missing symbols required by
 * your application will trigger compile-time errors, so the theoretical
 * problem of silent failure is less severe than it appears, affecting only
 * fallbacks.
 */

chaz_TestBatch* 
chaz_TestDirManip_prepare();

chaz_TestBatch* 
chaz_TestFuncMacro_prepare();

chaz_TestBatch* 
chaz_TestHeaders_prepare();

chaz_TestBatch* 
chaz_TestIntegers_prepare();

chaz_TestBatch* 
chaz_TestLargeFiles_prepare();

chaz_TestBatch* 
chaz_TestUnusedVars_prepare();

chaz_TestBatch* 
chaz_TestVariadicMacros_prepare();

void
chaz_TestDirManip_run(chaz_TestBatch *batch);

void
chaz_TestFuncMacro_run(chaz_TestBatch *batch);

void
chaz_TestHeaders_run(chaz_TestBatch *batch);

void
chaz_TestIntegers_run(chaz_TestBatch *batch);

void
chaz_TestLargeFiles_run(chaz_TestBatch *batch);

void
chaz_TestUnusedVars_run(chaz_TestBatch *batch);

void
chaz_TestVariadicMacros_run(chaz_TestBatch *batch);

#ifdef CHAZ_USE_SHORT_NAMES
  #define TestDirManip_prepare            chaz_TestDirManip_prepare
  #define TestDirManip_run                chaz_TestDirManip_run
  #define TestFuncMacro_prepare           chaz_TestFuncMacro_prepare
  #define TestHeaders_prepare             chaz_TestHeaders_prepare
  #define TestIntegers_prepare            chaz_TestIntegers_prepare
  #define TestLargeFiles_prepare          chaz_TestLargeFiles_prepare
  #define TestUnusedVars_prepare          chaz_TestUnusedVars_prepare
  #define TestVariadicMacros_prepare      chaz_TestVariadicMacros_prepare
  #define TestFuncMacro_run               chaz_TestFuncMacro_run
  #define TestHeaders_run                 chaz_TestHeaders_run
  #define TestIntegers_run                chaz_TestIntegers_run
  #define TestLargeFiles_run              chaz_TestLargeFiles_run
  #define TestUnusedVars_run              chaz_TestUnusedVars_run
  #define TestVariadicMacros_run          chaz_TestVariadicMacros_run
#endif

#ifdef __cplusplus
}
#endif

#endif /* H_CHAZ_TEST */


/* Copyright 2006-2011 Marvin Humphrey

charmonizer/src/Charmonizer/Test/TestFuncMacro.c  view on Meta::CPAN

#define CHAZ_USE_SHORT_NAMES

#include "charmony.h"
#include <string.h>
#include "Charmonizer/Test.h"
#include "Charmonizer/Test/AllTests.h"

TestBatch*
TestFuncMacro_prepare()
{
    return Test_new_batch("FuncMacro", 4, TestFuncMacro_run);
}

#ifdef INLINE
static INLINE char* S_inline_function()
{
    return "inline works";
}
#endif

void
TestFuncMacro_run(TestBatch *batch)
{

#ifdef HAS_FUNC_MACRO
    TEST_STR_EQ(batch, FUNC_MACRO, "chaz_TestFuncMacro_run", 
        "FUNC_MACRO");
#else
    SKIP(batch, "no FUNC_MACRO");
#endif

#ifdef HAS_ISO_FUNC_MACRO
    TEST_STR_EQ(batch, __func__, "chaz_TestFuncMacro_run",
        "HAS_ISO_FUNC_MACRO");
#else
    SKIP(batch, "no ISO_FUNC_MACRO");
#endif

#ifdef HAS_GNUC_FUNC_MACRO
    TEST_STR_EQ(batch, __FUNCTION__, "chaz_TestFuncMacro_run", 
        "HAS_GNUC_FUNC_MACRO");
#else
    SKIP(batch, "no GNUC_FUNC_MACRO");
#endif

#ifdef INLINE
    PASS(batch, S_inline_function());
#else
    SKIP(batch, "no INLINE functions");
#endif

charmonizer/src/Charmonizer/Test/TestVariadicMacros.c  view on Meta::CPAN

#define CHAZ_USE_SHORT_NAMES

#include "charmony.h"
#include <string.h>
#include <stdio.h>
#include "Charmonizer/Test.h"
#include "Charmonizer/Test/AllTests.h"

TestBatch*
TestVariadicMacros_prepare()
{
    return Test_new_batch("VariadicMacros", 4, TestVariadicMacros_run);
}

void
TestVariadicMacros_run(TestBatch *batch)
{
    char buf[10];
    chaz_bool_t really_has_var_macs = false;

#if defined(HAS_ISO_VARIADIC_MACROS) || defined(HAS_GNUC_VARIADIC_MACROS)
  #ifdef HAS_VARIADIC_MACROS
    PASS(batch, "#defines agree");
  #else 
    FAIL(batch, 0, "#defines agree");
  #endif

clownfish/lib/Clownfish/Binding/Perl/Class.pm  view on Meta::CPAN


=item * B<parcel> - A L<Clownfish::Parcel> or parcel name.

=item * B<class_name> - The name of the class to be registered.

=item * B<xs_code> - Raw XS code to be included in the final .xs file
generated by Clownfish::Binding::Perl. The XS directives PACKAGE and
MODULE should be specified.

=item * B<bind_methods> - An array of names for novel methods for which XS
bindings should be auto-generated, supplied using Clownfish's C<Macro_Name>
method-naming convention.  The Perl subroutine name will be derived by
lowercasing C<Method_Name> to C<method_name>, but this can be overridden by
prepending an alias and a pipe: e.g. C<_get_foo|Get_Foo>.

=item * B<bind_constructors> - An array of constructor names.  The default
implementing function is the class's C<init> function, unless it is overridden
using a pipe-separated string: C<_new2|init2> would create a Perl subroutine
"_new2" which would invoke C<myproj_FooJr_init2>.

=item * B<make_pod> - A specification for generating POD.  TODO: document this

core/KinoSearch/Object/Err.cfh  view on Meta::CPAN

#endif

#define CFISH_ERR_ADD_FRAME(_error) \
    Kino_Err_Add_Frame(_error, __FILE__, __LINE__, \
        CFISH_ERR_FUNC_MACRO)

#define CFISH_RETHROW(_error) \
    kino_Err_rethrow((kino_Err*)_error, __FILE__, __LINE__, \
        CFISH_ERR_FUNC_MACRO)

/** Macro version of kino_Err_throw_at which inserts contextual information
 * automatically, provided that the compiler supports the necessary features.
 */
#ifdef CHY_HAS_VARIADIC_MACROS
 #ifdef CHY_HAS_ISO_VARIADIC_MACROS
  #define CFISH_THROW(_vtable, ...) \
    kino_Err_throw_at(_vtable, __FILE__, __LINE__, CFISH_ERR_FUNC_MACRO, \
        __VA_ARGS__)
  #define CFISH_WARN(...) \
    kino_Err_warn_at(__FILE__, __LINE__, CFISH_ERR_FUNC_MACRO, __VA_ARGS__)
  #define CFISH_MAKE_MESS(...) \

lib/KinoSearch/Test.pm  view on Meta::CPAN

    chaz_TestBatch *batch = NULL;
    chaz_Test_init();

    if (strcmp(which, "dirmanip") == 0) {
        batch = chaz_TestDirManip_prepare();
    }
    else if (strcmp(which, "integers") == 0) {
        batch = chaz_TestIntegers_prepare();
    }
    else if (strcmp(which, "func_macro") == 0) {
        batch = chaz_TestFuncMacro_prepare();
    }
    else if (strcmp(which, "headers") == 0) {
        batch = chaz_TestHeaders_prepare();
    }
    else if (strcmp(which, "large_files") == 0) {
        batch = chaz_TestLargeFiles_prepare();
    }
    else if (strcmp(which, "unused_vars") == 0) {
        batch = chaz_TestUnusedVars_prepare();
    }
    else if (strcmp(which, "variadic_macros") == 0) {
        batch = chaz_TestVariadicMacros_prepare();
    }
    else {
        THROW(KINO_ERR, "Unknown test identifier: '%s'", which);
    }

    batch->run_test(batch);
    batch->destroy(batch);
}
END_XS_CODE



( run in 0.330 second using v1.01-cache-2.11-cpan-26ccb49234f )