Skip to content

Instantly share code, notes, and snippets.

View bolinfest's full-sized avatar

Michael Bolin bolinfest

  • Meta
View GitHub Profile
@bolinfest
bolinfest / docbook_to_html.py
Created October 28, 2013 16:51
This is the script that I used to convert Appendix B of Closure: The Definitive Guide from the DocBook XML from the Manuscript to HTML.
import cgi
import re
import xml.dom.minidom
# Omit trailing slash.
HOST = 'http://www.bolinfest.com'
STYLE = """
body {
width: 825px;
---- example.h ----
#import <Foundation/Foundation.h>
#ifndef __has_feature // Optional.
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
#endif
#ifndef NS_RETURNS_NOT_RETAINED
#if __has_feature(attribute_ns_returns_not_retained)
@bolinfest
bolinfest / main.c
Created April 22, 2014 22:11
Dump source ranges for diagnostics using libclang.
#include <clang-c/Index.h>
#include <stdio.h>
void parseMalformedFile(char* source) {
CXIndex index = clang_createIndex(
/* excludeDeclarationsFromPCH */ 0,
/* displayDiagnostics */ 0);
const char *args[] = {
"-I/usr/include",
"-I.",
#include <stdio.h>
int main(int argc, char **argv) {
// Here is the syntax error:
retur 0;
}
$ ./main.o example.c
Diagnostic count: 1
Diagnostic spelling: use of undeclared identifier 'retur'
Formatted diagnostic: example.c:5:3: error: use of undeclared identifier 'retur' [2, Semantic Issue]
No source ranges for diagnostic.
@bolinfest
bolinfest / -
Created April 23, 2014 23:55
Hello.m
#import <Foundation/Foundation.h>
int main(int argc, char *argv[])
{
NSL
}
@bolinfest
bolinfest / -
Created April 23, 2014 23:56
main.c
#include <clang-c/Index.h>
#include <stdio.h>
#include <stdlib.h>
void printCodeCompletionSuggestions(CXTranslationUnit tu, char* source, unsigned line, unsigned column) {
struct CXUnsavedFile *unsavedFiles = NULL;
unsigned numUnsavedFiles = 0;
unsigned options = clang_defaultCodeCompleteOptions();
CXCodeCompleteResults *results = clang_codeCompleteAt(tu, source, line, column, unsavedFiles, numUnsavedFiles, options);
@bolinfest
bolinfest / -
Created April 23, 2014 23:56
main.c
#include <clang-c/Index.h>
#include <stdio.h>
#include <stdlib.h>
void printCodeCompletionSuggestions(CXTranslationUnit tu, char* source, unsigned line, unsigned column) {
struct CXUnsavedFile *unsavedFiles = NULL;
unsigned numUnsavedFiles = 0;
unsigned options = clang_defaultCodeCompleteOptions();
CXCodeCompleteResults *results = clang_codeCompleteAt(tu, source, line, column, unsavedFiles, numUnsavedFiles, options);
unsigned numResults = results->NumResults;
@bolinfest
bolinfest / -
Created April 23, 2014 23:57
./main.o Hello.m 5 6
Num completions: 8779
Result 0 (priority=34, chunks=2, annotations=0)
int kind=15
argc kind=1
Result 1 (priority=34, chunks=2, annotations=0)
char ** kind=15
argv kind=1
Result 2 (priority=50, chunks=4, annotations=0)
Sampling process 52346 for 3 seconds with 1 millisecond of run time between samples
Sampling completed, processing symbols...
Analysis of sampling Atom Helper (pid 52346) every 1 millisecond
Process: Atom Helper [52346]
Path: /Applications/Nuclide.app/Contents/Frameworks/Atom Helper.app/Contents/MacOS/Atom Helper
Load Address: 0x10c1f6000
Identifier: com.github.atom.helper
Version: 1.0.0 (1.0.0)
Code Type: X86-64
Parent Process: Nuclide.bin [52304]